新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種基于ARM920T的現(xiàn)場總線控制系統(tǒng)

一種基于ARM920T的現(xiàn)場總線控制系統(tǒng)

作者: 時間:2014-01-17 來源:網(wǎng)絡 收藏

  getc函數(shù):unsigned char (*getc)(can_bus *priv)該函數(shù)從設備接口讀取一個字符,它只用于非中斷方式,通過查詢設備是否處于準備(ready)狀態(tài)來等待一個字符。

  set_config函數(shù):bool (*set_config)(can_bus *priv,cyg_can_info_t *config)該函數(shù)用于對指定的端口配置。如果對硬件配置成功,則返回true;如果端口不支持給定的配置參數(shù),則返回false。

  start_xmit函數(shù):void (*start_xmit)can_bus *priv)在中斷方式下,該函數(shù)使能發(fā)送端,允許發(fā)送中斷的產(chǎn)生。

  stop_xmit函數(shù):void (*stop_xmit)(can_bus *priv)在中斷方式下,當數(shù)據(jù)發(fā)送結束后,該函數(shù)進制發(fā)送端,進制發(fā)送中斷產(chǎn)生。

  start_recv函數(shù):void (*stop_xmit)(can_bus *priv)

  stop_recv函數(shù):void (*stop_xmit)(can_bus *priv)

  4.3 發(fā)送中斷處理函數(shù)

  CAN總線在中斷方式下的負責對中斷進行處理函數(shù)是中斷服務程序ISR和中斷滯后服務程序DSR。對中斷的處理主要有三種模式,第一種模式是在中斷服務程序ISR內(nèi)完成所有設備處理工作,第二種是在中斷滯后服務程序DSR內(nèi)實現(xiàn),第三中是將對設備的處理推遲到中斷線程內(nèi)進行。在驅動程序的設計中采用的是第二種模式。

  在這種模式中,中斷處理程序ISR只是簡單的通過對設備進行編程或者直接調(diào)用cyg_drv_interrupt_mask()函數(shù)防止新中斷的產(chǎn)生,然后將調(diào)用DSR作進一步的處理。DSR完成大部分的硬件處理工作,并有可能對某個條件變量產(chǎn)生一個信號來喚醒新的中斷。最后,DSR調(diào)用cyg_drv_interrupt_unmask(),重新使能中斷。中斷處理過程如圖所示:

  44.jpg

  4.4 綁定設備中斷

  設備驅動程序的初始化函數(shù)在系統(tǒng)初始化過程或者設備初始使用時被調(diào)用,初始化函數(shù)不僅要設置設備的參數(shù),還要為設備分配相應的數(shù)據(jù)結構:例如輸入輸出緩沖區(qū)等,最后還將設備中斷進行綁定。

  每一個設備在初始化時會產(chǎn)生一個對應的中斷對象,所有的中斷對象存儲在系統(tǒng)的中斷向量鏈表中。當某個中斷發(fā)生時,系統(tǒng)根據(jù)中斷碼到中斷向量鏈表中尋找相應的中斷對象,再跳轉到中斷對象記錄的中斷處理程序的位置執(zhí)行。

  宏cyg_drv_interrupt_create(vector,priority,data,isr,dsr,handle,intr)用于產(chǎn)生設備的中斷對象。其中,vector是中斷向量,priority中斷優(yōu)先級,data是數(shù)據(jù)指針,isr是中斷處理程序ISR的地址,dsr是中斷滯后處理程序DSR的地址,handle是返回句柄,intr是中斷對象存放的位置。

  宏cyg_drv_interrupt_attach(interrupt)用于將中斷向量加入到中斷向量鏈表。參數(shù)interrupt是將要連接的中斷的句柄。

  設備中斷綁定后,當設備產(chǎn)生中斷時系統(tǒng)會找到相應的中斷向量,然后把控制權交給中斷處理程序,進行中斷的處理。

  5、兩種擴展方式比較

  對于兩種不同的CAN與ARM9連接方式,IO口連接直觀簡單;而利用數(shù)據(jù)信號線連接能節(jié)省IO口,給CPU更多開發(fā)空間。兩者在驅動程序上差異不大,主要體現(xiàn)在底層數(shù)據(jù)讀寫時序實現(xiàn)上。前者簡單易于編寫和理解,后者只是在對時序的理解上略有難度,并不會使代碼更加冗長。

  6、結束語

  本文通過在上擴展CAN總線模塊,詳細講解了如何在ARM9上擴展CAN總線模塊,給出了全IO口擴展和利用數(shù)據(jù)信號線擴展兩種方式;并詳細說明如何在高實時性操作系統(tǒng)eCos上開發(fā)CAN驅動程序;最后對兩種擴展方式做了簡單的比較。該在國家十一五某國防項目中得到了很好的應用。同時也為大中型國有企業(yè)自動化生產(chǎn)線的建設和改造,電力系統(tǒng)自動化的實現(xiàn)提供很好的借鑒。

陀螺儀相關文章:陀螺儀原理



上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉