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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于S3C2410的CAN總線通信設計與開發(fā)

          基于S3C2410的CAN總線通信設計與開發(fā)

          作者: 時間:2013-02-27 來源:網(wǎng)絡 收藏


          圖2 濾池就地控制單元硬件結(jié)構(gòu)圖

          3.1 接口軟件實現(xiàn)

          的SPI可以工作在四種模式,但是MCP2515的SPI接口只支持其中的兩種。因此應該將的SPI接口配置為MCP2515支持的模式工作。從圖1中可以看出的SPI應該配置為正常模式的中斷方式,具體配置操作請見參考文獻[2]。

          S3C2410-SPI的單個字節(jié)讀、寫函數(shù)實現(xiàn)如下:

          unsigned char ReadSPI( void )
          {
          SPRDAT0 = 0x00; // 初始化SPI總線
          while ( !REDY );
          // 判斷接收數(shù)據(jù)是否完成
          return ( SPRDAT0 );
          // 獲取接收到的數(shù)據(jù)
          }
          unsigned char WriteSPI( unsigned char data )
          {
          SPRDAT0 = data; // 寫數(shù)據(jù)到發(fā)送緩沖區(qū)
          if ( DCOL ) return ( -1 );
          // 判斷是否發(fā)生沖突,發(fā)生沖突則返回錯誤標準
          else while( !REDY );
          // 否則等待數(shù)據(jù)發(fā)送完成
          return ( 0 ); // 返回發(fā)送成功標準
          }

          對MCP2515的讀寫函數(shù)原型如下:

          void Mcp_Read( unsigned char Addr, unsigned char *ReadData, unsigned char Length );
          void Mcp_Write( unsigned char Addr, unsigned char *WriteData, unsigned char Length );
          Addr:要讀寫區(qū)域的首地址;
          ReadData/WriteData:讀取數(shù)據(jù)存放區(qū)、寫出數(shù)據(jù)緩沖區(qū)首地址;
          Length:要讀、寫數(shù)據(jù)的字節(jié)數(shù)。

          其它對MCP2515的操作在此不一一列舉,請見參考文獻[3]。

          3.2 總線數(shù)據(jù)收發(fā)軟件設計

          本設計采用外部中斷1響應MCP2515的總中斷,并且配置控制器始終處于喚醒模式,發(fā)送器工作在正常模式,使能接收、發(fā)送、錯誤中斷。中斷方式處理總線數(shù)據(jù)收發(fā)的流程如圖3,分別從發(fā)送處理、接收處理、錯誤處理三個部分加以說明。


          圖3 中斷方式實現(xiàn)CAN總線數(shù)據(jù)收發(fā)流程圖



          關(guān)鍵詞: S3C2410 CAN 總線通信

          評論


          相關(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); })();