<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于CAN總線的嵌入式車燈監(jiān)控系統(tǒng)設(shè)計(jì)

          基于CAN總線的嵌入式車燈監(jiān)控系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2012-08-30 來源:網(wǎng)絡(luò) 收藏

          3.1.1 節(jié)點(diǎn)初始化
          系統(tǒng)的主要任務(wù)是實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的通訊,將下位機(jī)節(jié)點(diǎn)采集到的電壓電流參數(shù)上傳至上位機(jī)并顯示給用戶,實(shí)時(shí)反映的工作狀況。因此通訊任務(wù)具有最高級(jí)別的優(yōu)先級(jí)。在任務(wù)taskican中,首先完成節(jié)點(diǎn)的初始化,包括端口初始化、設(shè)定波特率、設(shè)置驗(yàn)收濾波等,初始化通過調(diào)用Stellaris外設(shè)驅(qū)動(dòng)庫(kù)中的相應(yīng)函數(shù)來完成。函數(shù)SysCtlPeripheralEnable()和GPIOPinTvpeCAN()可完成CAN模塊外設(shè)的端口初始化,CANSetBitTiming()可以設(shè)定波特率,本中的通訊波特率設(shè)定為1 MB/s,并且上的節(jié)點(diǎn)都設(shè)置成相同的波特率,canAcceptFilterSet()可完成驗(yàn)收濾波設(shè)置。完成CAN節(jié)點(diǎn)的初始化之后,在任務(wù)taskican中每10 ms調(diào)用一次iCAN調(diào)度函數(shù)ICAN_Sche dul(),完成一次數(shù)據(jù)收發(fā)工作,同時(shí)將下位機(jī)節(jié)點(diǎn)采集的電壓電流值上傳至上位機(jī)并刷新顯示。
          3.1.2 iCAN協(xié)議的消息處理
          iCAN協(xié)議,即工業(yè)CAN-bus應(yīng)用層協(xié)議。是由我國(guó)自主研發(fā)的CAN的高層應(yīng)用協(xié)議,詳細(xì)的定義了CAN報(bào)文中ID以及數(shù)據(jù)的分配和應(yīng)用,建立了一個(gè)統(tǒng)一的設(shè)備模型,定義了設(shè)備的I/O資源和訪問規(guī)則,采用“連接,面向節(jié)點(diǎn)”的通訊方式,既支持主從方式通訊模式,又支持事件觸發(fā)通訊模式。系統(tǒng)中,上位機(jī)主節(jié)點(diǎn)的ID為0x01,下位機(jī)各節(jié)點(diǎn)的ID可以根據(jù)具體情況設(shè)定,范圍為0x00-0x3F。
          節(jié)點(diǎn)中,數(shù)據(jù)的發(fā)送和接收是由微處理器集成的CAN控制器自動(dòng)完成。為滿足實(shí)時(shí)性的要求,數(shù)據(jù)的接收操作采用中斷方式。由于下位機(jī)節(jié)點(diǎn)數(shù)量較多,數(shù)據(jù)的發(fā)送接收量比較大,為了保證不丟失數(shù)據(jù),這里了兩個(gè)深度為40字節(jié)的CAN報(bào)文緩沖區(qū),分別用作發(fā)送和接收緩存。對(duì)緩沖區(qū)的操作,由函數(shù)canCirBufRead和函數(shù)canCirBufWrite來完成。而對(duì)于CAN消息的發(fā)送和接收由函數(shù)ICANTxMsgObjSend、canFr ameSend和ICANRxMsgObjExplain來完成。
          CAN消息的發(fā)送接收流程圖如圖5所示。數(shù)據(jù)的發(fā)送調(diào)用函數(shù)ICANTxMsgObiSend,其中先按照iCAN協(xié)議規(guī)定的格式填寫報(bào)文的ID和數(shù)據(jù)段,然后查詢緩沖區(qū)的狀態(tài),如果發(fā)送緩沖區(qū)未滿,則調(diào)用canCirBufWrite將整合后的數(shù)據(jù)寫入發(fā)送緩沖區(qū),最后調(diào)用函數(shù)canFrameSend將數(shù)據(jù)發(fā)送到CAN上。

          本文引用地址:http://www.ex-cimer.com/article/148494.htm

          c.JPG


          接收采用中斷方式,當(dāng)有中斷產(chǎn)生,即收到一幀數(shù)據(jù),此時(shí)首先查詢接收緩沖區(qū)的狀態(tài),如果未滿,則調(diào)用函數(shù)canCirBufWrite將接收到的數(shù)據(jù)寫入接收緩沖區(qū)。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();