新闻中心

EEPW首页>嵌入式系统>设计应用> 基于S3C2410的CAN总线通信设计与开发

基于S3C2410的CAN总线通信设计与开发

作者: 时间:2013-02-27 来源:网络 收藏


图2 滤池就地控制单元硬件结构图

3.1接口软件实现

的SPI可以工作在四种模式,但是MCP2515的SPI接口只支持其中的两种。因此应该将的SPI接口配置为MCP2515支持的模式工作。从图1中可以看出的SPI应该配置为正常模式的中断方式,具体配置操作请见参考文献[2]。

S3C2410-SPI的单个字节读、写函数实现如下:

unsigned char ReadSPI( void )
{
SPRDAT0 = 0x00; // 初始化SPI总线
while ( !REDY );
// 判断接收数据是否完成
return ( SPRDAT0 );
// 获取接收到的数据
}
unsigned char WriteSPI( unsigned char data )
{
SPRDAT0 = data; // 写数据到发送缓冲区
if ( DCOL ) return ( -1 );
// 判断是否发生冲突,发生冲突则返回错误标准
else while( !REDY );
// 否则等待数据发送完成
return ( 0 ); // 返回发送成功标准
}

对MCP2515的读写函数原型如下:

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:要读写区域的首地址;
ReadData/WriteData:读取数据存放区、写出数据缓冲区首地址;
Length:要读、写数据的字节数。

其它对MCP2515的操作在此不一一列举,请见参考文献[3]。

3.2总线数据收发软件设计

本设计采用外部中断1响应MCP2515的总中断,并且配置控制器始终处于唤醒模式,发送器工作在正常模式,使能接收、发送、错误中断。中断方式处理总线数据收发的流程如图3,分别从发送处理、接收处理、错误处理三个部分加以说明。


图3 中断方式实现CAN总线数据收发流程图



评论


相关推荐

技术专区

关闭