自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
ARM7與FPGA相結(jié)合在工業(yè)控制和故障檢測中的應(yīng)用
ARM7與FPGA相結(jié)合在工業(yè)控制和故障檢測中的應(yīng)用
 更新時(shí)間:2008-8-3 16:24:09  點(diǎn)擊數(shù):9
【字體: 字體顏色


由于重映射主要是用于Flash和片內(nèi)RAM的地址空間交換,所以片內(nèi)外圍接口(EBI、USART、TC)對(duì)應(yīng)的存儲(chǔ)器編程地址范圍在映射前后不發(fā)生改變,而訪問外設(shè)地址為重映射后所分配。重映射后地址分配如表1所示。


3 應(yīng)用接口的存儲(chǔ)器配置
EBI存儲(chǔ)器:在8個(gè)EBI片選存儲(chǔ)器(EBI_CSR0~EBI_CSR7)中設(shè)置外設(shè)訪問參數(shù)。其中,32位存儲(chǔ)器中包括數(shù)據(jù)總線寬度8(16)設(shè)置,等待狀態(tài)數(shù)目1~7個(gè)周期設(shè)置,等待使能(不是使能)設(shè)置,片選使能(不使能)設(shè)置。這里將FPGA作為外設(shè),使能NCS3(也可根據(jù)實(shí)際選擇其他空閑片選線),選擇總線寬度16,使能等待周期并設(shè)周期為5(根據(jù)調(diào)試選擇)。因默認(rèn)NCS0為加載Flash片選線,而Flash為16位信號(hào)、7個(gè)等待周期,故需在EBI_CSR0中選擇16位總線寬度、7個(gè)等待周期并使能NCS0。


AIC存儲(chǔ)器:AIC存儲(chǔ)器管理所有內(nèi)外部中斷,對(duì)此存儲(chǔ)器的正確初始化賦值才會(huì)打開相應(yīng)中斷。設(shè)定AIC工作參數(shù):應(yīng)用串口通信模式為異步模式,串口發(fā)送的數(shù)據(jù)位字符長度為8位,通信的波特率9600B/s,串口中斷優(yōu)先級(jí)為6(中斷優(yōu)先級(jí)由低到高0~7),接收發(fā)送通道使能。
TC存儲(chǔ)器:定時(shí)中斷存儲(chǔ)器需要設(shè)定定時(shí)長度為1s(每1s產(chǎn)生中斷進(jìn)行故障查詢),定時(shí)通道使能及軟件觸發(fā)模式,定時(shí)中斷優(yōu)先級(jí)設(shè)為1。


4 應(yīng)用程序說明
 ① 主程序
#define AT91C_BASE_EBI       ((AT91PS_EBI)   0xFFE00000) //EBI基地址定義
int main()
{AT91F_EBI_OpenChipSelect (
        AT91C_BASE_EBI,  //地址指針                    
        0x3,            //片NCS3使能
        0x30000000+0x3f39); //片選存儲(chǔ)器初始化
         Usart_init();//初始化串口
      timer_init();//初始化定時(shí)器
         while(1){} //循環(huán)等待
}
ARM處理器在完成各寄存器初始化后進(jìn)入應(yīng)用主程序,在主程序中首先調(diào)用EBI接口使能函數(shù)來設(shè)置參數(shù):在程序中設(shè)置存儲(chǔ)器基地址值(0xFFE00000),片選設(shè)置0x3(NCS3使能),NCS3的存儲(chǔ)器初始化;調(diào)用USART控制器函數(shù)初始化串口:打開串口,串口收發(fā)通道初始化,設(shè)定串口通信速率;調(diào)用定時(shí)中斷函數(shù):打開定時(shí)中斷,設(shè)置定時(shí)中斷時(shí)間,設(shè)定觸發(fā)方式為軟件觸發(fā);最后進(jìn)入等待循環(huán)。
② 串口命令接收中斷服務(wù)程序
#define USART0_INTERRUPT_LEVEL     6//設(shè)置中斷優(yōu)先級(jí)為6
#define AT91C_US_USMODE_NORMAL AT91C_US_CHMODE_NORMAL//*設(shè)置通信模式(NORMAL定義為異步模式)*//
AT91PS_USART COM0=AT91C_BASE_US0;//設(shè)置COM0為收發(fā)口
char message[4];
//                 控制端串口中斷通信程序                //
//*----------------------------------------------------------------------------*//
void Usart0_c_irq_handler(AT91PS_USART USART_pt)//串口中斷處理函數(shù)
{   volatile unsigned int *conp;unsigned int status;
 int time;
 volatile unsigned int i;
 status = USART_pt->US_CSR & USART_pt->US_IMR;//給狀態(tài)寄存器賦初值
 if ( status & AT91C_US_RXRDY)//接收通道寄存器判斷是否有數(shù)據(jù)
 {   
       AT91F_US_DisableIt(USART_pt,AT91C_US_RXRDY);//關(guān)閉接收通道準(zhǔn)備好中斷
     AT91F_US_EnableIt(USART_pt,AT91C_US_ENDRX);//打開接收結(jié)束中斷
    AT91F_US_ReceiveFrame(USART_pt,(char*)(message),4);//調(diào)用接收數(shù)據(jù)數(shù)接收數(shù)據(jù)
      }
 if ( status & AT91C_US_ENDRX){
         AT91F_US_DisableIt(USART_pt,AT91C_US_ENDRX); // 關(guān)閉接收器傳送結(jié)束中斷
        { if((message[0]^0xff)==message[1])//判斷接收代碼
          {switch (message[0])
         {case  0x31 : {conp=(volatile unsigned int*)(0x1+0x30000000);//OPE1使能
         *conp=0x2;}; break;//0x31代碼送往OPE1端口
             case  0x30 : {conp=(volatile unsigned int*)(0x2+0x30000000);//OPE2使能
             *conp=0x1;}; break; // 0x30代碼送往OPE2端口
          case  0x11 : {conp=(volatile unsigned int*)(0x3+0x30000000);//OPE3使能
              *conp=0x2;};break;// 0x11代碼則往OPE3端口
             case  0x10 : {conp=(volatile unsigned int*)(0x4+0x30000000);//OPE4使能
             *conp=0x1;};break;  //0x10代碼送往OPE4端口          
        default:break;}
       }
       }
以上程序?yàn)榇谥袛喾⻊?wù)程序,各函數(shù)語句說明參見注釋。中斷級(jí)別設(shè)置為6(高于定時(shí)中斷),這樣使命令發(fā)送優(yōu)先于故障查詢(控制命令隨機(jī)出現(xiàn)而故障查詢總是循環(huán)進(jìn)行);接收緩沖區(qū)message[4]數(shù)組類型必須設(shè)為動(dòng)態(tài)分配,靜態(tài)數(shù)據(jù)分配會(huì)使處理器開辟數(shù)據(jù)緩沖區(qū)到Flash芯片中,從而引發(fā)在一個(gè)中斷處理程序中由于存取時(shí)間過長而導(dǎo)致串口收發(fā)超時(shí)的錯(cuò)誤。因?yàn)槠邢蓿渌绦虿辉僖灰粩⑹觥?br>在ARM應(yīng)用程序的編寫中,應(yīng)該盡量少的在主函數(shù)內(nèi)使用循環(huán)操作,主函數(shù)主要完成各接口控制器應(yīng)用初始化,因?yàn)橹骱瘮?shù)不間斷循環(huán)操作不但會(huì)增加功耗,而且長時(shí)間頻繁切換于中斷服務(wù)和主循環(huán)之間會(huì)造成程序運(yùn)行的不穩(wěn)定,所以能用定時(shí)中斷完成的循環(huán)操作盡量用中斷完成。
 
結(jié)語
ARM芯片控制功能結(jié)合FPGA靈活的多硬件接口模擬特性在工程上體現(xiàn)出的其獨(dú)特的優(yōu)勢,已發(fā)展為一種流行的硬件架構(gòu)模式,隨著芯片功能的不斷強(qiáng)大,這種優(yōu)勢將使其用途更廣,對(duì)任務(wù)處理變得更加靈活高效。

<!--開始插入圖片--><!--edward20071207114412.jpgedward20071207114541.jpgedward20071207114810.jpg--><!--結(jié)束插入圖片-->

  • 上一篇: 基于DBL結(jié)構(gòu)的嵌入式64kb SRAM的低功耗設(shè)計(jì)
  • 下一篇: 基于nios和μClinux的嵌入式系統(tǒng)設(shè)計(jì)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1