微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于CAN总线的电动车控制系统设计方案

基于CAN总线的电动车控制系统设计方案

时间:08-06 来源:3721RD 点击:

4 CAN总线节点的软件设计

系统采用基于C语言的程序设计。在IAB开发环境下进行调试和仿真。整车控制节点的软件设计主要包括4个部分:CAN控制器的初始化、报文发送、报文接收和错误处理。

4.1 CAN控制器的初始化

在启动CAN通信前必需进行CAN模块的初始化,包括硬件使能、CAN工作模式设置、总线波特率设置、设置中断、验收过滤器设置等。初始化操作在CAN模块复位的模式下进行。初始化程序流程图如图4所示。

本设计中采用的是29位扩展标示符,符合CAN2.0B的标准,所以在验收屏蔽过滤器设置中进行相应的设定。同时,本设计的CAN波特率设置为250 Kb/s,与总线上其他节点的波特率相同,才能进行正常的通信。

4.2 数据的发送

对CAN数据的发送采用查询方式,提高处理器的效率,STM32F103VE的CAN模块有3个发送邮箱,发送报文的流程为:应用程序选择一个空发送邮箱;设置标识符,数据长度和待发送数据;对CAN+TixR寄存器的TXRQ位置1,请求发送;一旦CAN总线进入空闲状态,发送邮箱中的报文则立即发送,成功发送后,邮箱为空;通过查询CAN_TSR寄存器的TXOK位来查询报文是否发送成功。数据发送程序的流程图如图5所示。


4.3 数据的接收

对CAN报文的接收采用中断方式,提高通信的实时性。接收报文的流程如图6所示。当CAN总线发来一个报文,根据屏蔽过滤器设置的标识符进行过滤,如果是要接收的报文,则CAN控制器将总线上的报文按顺序存入接收FIFO,并进入接收中断,在中断中对接收FIFO中的报文进行存储,然后释放FIFO邮箱。如果不释放邮箱,当总线上再发送过来报文时,会直接覆盖上一个报文,从而导致报文丢失。数据接收程序流程如图6所示。


4.4 错误处理

电动车的整车控制器需要接收BMS、CCS和电机控制器这3个节点发来的报文,如果超过1 s未接收到例如BMS的报文,则通信链路超时,此时需要进行故障处理。所以在软件设计时,定义一个全局变量,在每个定时周期中加1,在接收BMS报文中断中,对此变量清零,则可以实现通信超时检测。当总线发生严重故障时,CAN节点错误寄存器累积到一定次数时,CAN控制器会关闭总线,节点脱离总线。

  5 结论

在实车实验中,各个节点可以实现可靠的数据通信,可以实现电动车的加减速和匀速运行。在本电动车控制系统中,设计的CAN通信节点体积小、功耗低、处理能力强、抗干扰性好,能在电磁环境复杂的环境中稳定、可靠地工作。在电动车控制系统中可实现数据的实时快速通信,可靠性强。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top