色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時(shí)間:2014-01-17 來(lái)源:網(wǎng)絡(luò) 收藏

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

            set_config函數(shù):bool (*set_config)(can_bus *priv,cyg_can_info_t *config)該函數(shù)用于對(duì)指定的端口配置。如果對(duì)硬件配置成功,則返回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)在中斷方式下,當(dāng)數(shù)據(jù)發(fā)送結(jié)束后,該函數(shù)進(jìn)制發(fā)送端,進(jìn)制發(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總線在中斷方式下的負(fù)責(zé)對(duì)中斷進(jìn)行處理函數(shù)是中斷服務(wù)程序ISR和中斷滯后服務(wù)程序DSR。對(duì)中斷的處理主要有三種模式,第一種模式是在中斷服務(wù)程序ISR內(nèi)完成所有設(shè)備處理工作,第二種是在中斷滯后服務(wù)程序DSR內(nèi)實(shí)現(xiàn),第三中是將對(duì)設(shè)備的處理推遲到中斷線程內(nèi)進(jìn)行。在驅(qū)動(dòng)程序的設(shè)計(jì)中采用的是第二種模式。

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

            44.jpg

            4.4 綁定設(shè)備中斷

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

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

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

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

            設(shè)備中斷綁定后,當(dāng)設(shè)備產(chǎn)生中斷時(shí)系統(tǒng)會(huì)找到相應(yīng)的中斷向量,然后把控制權(quán)交給中斷處理程序,進(jìn)行中斷的處理。

            5、兩種擴(kuò)展方式比較

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

            6、結(jié)束語(yǔ)

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

          陀螺儀相關(guān)文章:陀螺儀原理



          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉