新聞中心

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

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

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


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

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

的SPI可以工作在四種模式,但是MCP2515的SPI接口只支持其中的兩種。因此應(yīng)該將的SPI接口配置為MCP2515支持的模式工作。從圖1中可以看出的SPI應(yīng)該配置為正常模式的中斷方式,具體配置操作請見參考文獻(xiàn)[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ā)生沖突則返回錯誤標(biāo)準(zhǔn)
else while( !REDY );
// 否則等待數(shù)據(jù)發(fā)送完成
return ( 0 ); // 返回發(fā)送成功標(biāo)準(zhǔn)
}

對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的操作在此不一一列舉,請見參考文獻(xiàn)[3]。

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

本設(shè)計采用外部中斷1響應(yīng)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)閉