EDN China > 设计实例 > 汽车电子 > 总线技术 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

CAN总线行车记录仪设计

李俐?? 谢显中?? 重庆邮电大学?? 奇瑞汽车股份有限公司 计算机工程与设计?? 2015年05月13日 ?? 收藏2

3.3 中断处理模块

中断模块即接受中断,由于本系统设置所有的帧都被接收,因而必须在中断处理函数里对接收到的帧进行判断,并进行“解码”。现就实例来详细说明“解码”的过程,如表1所示,列举了A5车内2个重要的CAN消息,其ID均是采用标准格式(11位),数据单元占64位(8字节)。中断接收到数据帧后,首先取其ID号,对于标准帧格式来说,IDRO存放的是IDIO~ID3,IDR1的高3位存放的是ID2~ID0,因此ID号=(IDR0<<3)l(IDRI>>5),其中ID号设置为int型变量。得到ID号后,将根据消息列表进行消息解码,例如,假设取得的ID号是0xFA,这是来自发动机控制单元EMS(enginemanagement system)的消息帧,我们将从它的64位数据单元中取出所关心的数据,其中64位数据在结果寄存器DSR0-DSR7中的存放顺序如表2所示。假设我们从此帧中取出如下3个数据:Engine speedRPM,M eanEfectiveTorque,DriveRequest。

表1 A5车内2个重要的CAN消息

表2 数据在寄存器中的存放顺序

表3列出了它们在64位数据单元中的起始位和所占位数。在此对数据位数为16的Engine speed RPM 稍作解释,由于选用的单片机采用的是Motorola大端模式,因此其最低位是DSR1中的第8位,而不是DSR0中的第0位,而我们的上层PC机数据分析软件是Intel格式的,于是需要对多字节数据进行大小端转换。下面给出函数语句示例:

表3 数据的起始位和所占位数

Engine speed RPM DSR1;

Engine speed RPM =(Engine speed RPM<<8)IDSR0;

M eanEfectiveTorque=DSR2;

DriverRequest=DSR3;

对多字节数据需进行大小端转换,而单字节数据则是直接拷贝。将采集的数据存储在缓存里,然后结束本次中断。

3.4 其它模块

液晶模块,对于需要固定显示的部分,利用“预制画面”以减少工作中通讯传输的负担和重复性工作。读写u盘模块,u盘中的数据都是以文件格式存储的,单片机读写u盘则主要是根据FAT文件系统进行文件和目录的各种操作,CH375提供了u盘文件级子程序库,此库支持FAT16和FAT32文件系统,用户只需调用此库的各种API函数就可实现数据块的读写。A/D转换模块,对控制寄存器5(ATDCTL5)的配置要慎重,因为对此寄存器的写操作将中断当前模数转换序列并且开始一个新的转换序列,建议将此寄存器放在前4个控制寄存器之后配置。

4 结束语

本系统所开发的行车记录仪已成功的运用于A5车的3万公里、5万公里等各种路试,准确记录了行车过程中的重要数据,对于研究人员进行性能分析、故障分析、以及标定工作提供了重要的数据依据。在已具备CAN 总线的车辆上使用基于CAN的行车记录仪,可大幅度降低系统复杂度,并降低成本。对于不同的车型,只需软件的少许修改而不需要更改硬件,使得记录仪具有极高的灵活性和可移植性,从而广泛应用于各种车型。

【分页导航】


上一页1234下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

数据采集? 行车记录仪设计? 寄存器?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈