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

CAN总线行车记录仪设计

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

3 系统软件设计

在软件设计方面采用模块化设计思想和中断调用方案,系统上电后首先进行初始化,对CAN总线上的信息采用中断方式接收,由XGATE处理中断程序,系统每接收一帧信息,便产生一次中断来触发微处理器进入中断,在中断服务程序中读取该帧数据并暂存在缓存里。此缓存是XGATE和CPU共享的,由于通过CH375读写u盘的数据单位是一个扇区,所以本系统将缓存设置为一个扇区(512Byte),当缓存满时,由主程序将数据转存到U盘中。

系统软件部分主要功能模块包括:主程序模块,初始化模块,中断处理模块。

3.1 主程序设计

主程序流程图如图3所示。

由流程图3可看出,在整个程序运行期间,采用查询的方式来检测电源是否掉电。由于车内CAN 信号发包频率均为几十毫秒,如果液晶屏实时显示数据的话,屏幕刷新太快,不易于观察,因此本系统设置当缓存接收满时,刷新一次屏幕数据,这样的刷新频率足以满足用户的需要,无论存储开关是否闭和,液晶屏均提供显示服务。记录过程中突然掉电或者用户断开存储开关,都将导致当前所记录文件的关闭,即修改文件指针和文件长度等与文件系统相关的处理。

图3 主程序流程
图3 主程序流程

3.2 初始化模块

(1)CAN模块的初始化

对CAN控制器的初始化设计是重点,必须对写入的每个寄存器进行仔细全面的考虑,如果初始化没成功,系统将无法正常工作。本记录仪实质上是作为整个CAN 网络的一个增加节点参与通信,网络内的所有CAN节点必须同步。要进行CAN模块的初始化,首先必须进入初始化模式,通过设置IN—ITRQ(CANCTLO)位发起请求,并得到INITAK(CANCTL1)的回应后,MSCAN进入初始化模式。在此模式下,通常是对CAN一BTR0、CANBTR1、CANIDAR、CANIDMR等寄存器进行配置。CANBTR0决定波特率预分频和同步跳转宽度的数值,CAN—BTR1决定周期的宽度、采样点的位置以及在每个采样点进行采样的次数,根据具体CAN总线通信速率设置适当的值。CANIDAR、CANIDMR共同决定哪些ID帧需要接收,在本系统中,CAN总线记录仪的目的是接收CAN线数据全部报文,因而设置CANIDMR为0xFFh,即所有位都不屏蔽,所有的帧都接收。将需要配置的寄存器设置好后,需退出初始化模式,参与CAN总线通信。

(2)CH375的初始化

主要是设置USB的工作模式,通过CH375提供的SETUSB MODE命令,设置其工作模式代码为06H,即USB主机方式下,自动检测USB设备是否连接,当USB设备连接或者断开时都会产生中断通知外部单片机,并自动定时产生USB帧周期开始包SOF发送给已经连接的USB设备。通常情况下,设置USB工作模式在20微秒时间内完成,完成后输出操作状态。通过读PA端口得到操作状态,查看是否设置成功。如不成功,表明CH375出错,例如芯片型号错或者处于串口方式或者不支持,则无法进行u盘的读写。

【分页导航】


?? ?? ??


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

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

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

相关文章

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