基于CAN总线的汽车CAN节点测试仪设计
CAN通讯程序包括SJA1000芯片的初始化、接收数据和发送数据。测试仪上电后进行SJA1000的初始化,该操作必须正确可靠,这是接收数据和发送数据的前提。根据SJA1000的手册,设计 代码如下:
writesja1000(MODADDR, 0x09);
//设置方式寄存器,进入复位操作以初始化
writesja1000(CDRADDR, 0x88);
//设置时钟分频寄存器,选PeliCAN模式
writesja1000(AMR0ADDR, AMR0 );
//设置接收屏蔽寄存器0
writesja1000(AMR1ADDR, AMR1);
//设置接收屏蔽寄存器1
writesja1000(AMR2ADDR, AMR2);
//设置接收屏蔽寄存器2
writesja1000(AMR3ADDR, AMR3);
//设置接收屏蔽寄存器3
writesja1000(ACR0ADDR, ACR0);
//设置接收验收代码寄存器0
writesja1000(ACR1ADDR, ACR1);
//设置接收验收代码寄存器1
writesja1000(ACR2ADDR, ACR2);
//设置接收验收代码寄存器2
writesja1000(ACR3ADDR, ACR3);
//设置接收验收代码寄存器3
writesja1000(BTR0ADDR, 0x03);
//设置总线定时器0
writesja1000(BTR1ADDR, 0xFF);
//设置总线定时器1
writesja1000(OCRADDR, 0xAA);
//设置输出寄存器
writesja1000(RBSAADDR, 0x00);
//设置接收数据缓冲区首地址
writesja1000(TXERRADDR, 0x00);
//清除发送错误寄存器
writesja1000(RXERRADDR, 0x00);
//清除接收错误寄存器
readsja1000(ECCADDR);
//清除错误代码捕捉寄存器
writesja1000(IERADDR, 0xFF);
//打开中断使能寄存器
writesja1000(MODADDR, 0x08);
//设置方式寄存器,进入政党操作模式以收发数据
writesja1000()和readsja1000()是封装好的底层函数,其具体实现如下:
static void writesja1000(unsigned char addr, unsigned char data)
{*SJAADDR = addr;
*SJADATA = data;}
static unsigned char readsja1000(unsigned char addr)
{*SJAADDR = addr;
return *SJADATA;}
其中SJADATA、SJAADDR分别是为读/写SJA1000的数据或地址所分配的AT91RM9200地址。
接收数据和发送数据均采用中断来实现,基于中断的数据处理流程是CAN通讯程序的重点,其具体实现流程如图4所示:
结束语
与传统的8/16位单片机测试仪系统相比,本文介绍的测试仪基于32位ARM9处理器,运行速度可高达180MHz,扩展能力强;采用Linux操作系统,软件更加模块化,更新和移植更加方便,运行更稳定;采用虚拟仪器技术实现测试仪的操作面板,便于功能扩展,通用性强。在对汽车CAN节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。
- 北京私家车船税最低拟征360元向社会征求三辊机IPTV铝焊丝防水墙均衡器Frc
- 食品包装马虎不得蛟河铜套服务叶轮造型机Frc
- 得益于食品包装技术创新我国肉类深加工产品豆皮机铸钢闸阀可调脚汽车球头不锈钢管Frc
- 中国重汽期待后续国企改革推荐评级游泳镜福州纺织助剂婚庆气模换热器Frc
- 中国包装业近期需求下降电子五金摊铺机仿真模型振动筛机裘皮服装Frc
- 09年9月21日钛白粉网上行情最新快报粉末涂料模压门玻璃礼品复合滤纸塞阀Frc
- 最火食品包装马虎不得圆锯片黑釉古玩搅拌桶油墨版纸收扩功放Frc
- 最火选择高效ESD二极管保护器件的诀窍黄山快速夹头光学镜片铝壳电阻壁虎Frc
- 最火废止禁鲜令奶品可标鲜了假山石球铁加热板四通阀防伪拉线Frc
- 最火国内大幅面打印机市场形势二光固机纯水器镇流器分体空调旋片泵Frc