基于CAN总线和虚拟仪器技术的汽车CAN节点测试仪
00(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) { *SJADATA = data; static unsigned char readsja1000(unsigned char addr) { return *SJADATA; 其中SJADATA、SJAADDR分别是为读/写SJA1000的数据或地址所分配的AT91RM9200地址。 接收数据和发送数据均采用中断来实现,基于中断的数据处理流程是CAN通讯程序的重点,其具体实现流程如图4所示: 结束语 与传统的8/16位单片机测试仪系统相比,本文介绍的测试仪基于32位ARM9处理器,运行速度可高达180MHz,扩展能力强;采用Linux操作系统,软件更加模块化,更新和移植更加方便,运行更稳定;采用虚拟仪器技术实现测试仪的操作面板,便于功能扩展,通用性强。在对汽车CAN节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。
*SJAADDR = addr;
}
*SJAADDR = addr;
}
- 对TTCAN的分析(05-26)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 采用CAN总线实现DSP芯片程序的受控加载(11-08)
- 基于DSP的电动汽车CAN总线通讯技术设计(10-08)
- 基于DSP的CANopen通讯协议的实现(01-18)