基于CAN通信的卡车语音报警器的设计
扫描二维码
随时随地手机看文章
汽车诊断技术是汽车安全技术中不可缺少的一部分,它能在汽车发生故障时及时地进行语音报警,避免事故的发生。CAN即控制器局域网,是国际上应用最广泛的现场总线之一。由于CAN总线技术的优良特性,在汽车电气系统以及其他一些实时控制单元中得到广泛应用。一种基于CAN总线的通信网络具有速度高、抗噪性强及通用性好等优点。
我们设计的基于CAN总线技术的卡车语音报警系统能给汽车乘员提供一个安全的驾乘环境。该语音报警系统采用了摩托罗拉公司的M68HC908GZ16微控制器,该微控制器尺寸小,资源齐全,具有很高的性价比。
CAN总线位定时
CAN总线采用同步串行通信方式,数据流中的字符与字符之间、字符内部的位与位之间都同步,这就要求收/发双方必须以同步时钟来控制数据的发送和接收。要在相当长的数据流中保持位同步,接收端必须能识别每个二进制位是从什么时刻开始的,这就是位定时。通常为保证接收器时钟和发送器时钟严格一致,采用接收器通过解调器从数据流中提取同步信号,或者接收器和发送器使用统一的时钟的方法。但是即便这样,仍然很难解决总线传输延时问题。针对以上问题, CAN总线的位定时改进了位编码/解码。
CAN总线位定时由4部分组成:同步段(SYNC_SEG)、传播段(PROP_SEG)、相位段1(PHASE_SEG1)和相位段2 (PHASE_SEG2)。同步段用于同步总线上的各节点,在此段等待一个跳边沿;传播段用于补偿网络内的物理延迟时间;相位段1及相位段2用做补偿相位误差。在采样点读总线电平。
M68HC908GZ16微控制器(见图1)中内置CAN控制器,提供了波特率控制寄存器;SJW(重同步跳转宽度)决定了一次重同步期间一个位时间被延长或缩短的时间量子;BRP为波特率预分频系数;Spl(采样模式位)决定对有效位采样的次数。
图1 MC68HC908GZ16的内部结构
位定时主要用于定义CAN总线通信的速率,对同一总线上的各个节点应定义同一种通信速率,否则无法进行通信联系。CAN控制器的总线工作频率计算公式如下:
式中:BRP为系统预分频因子,它在TSEG1域中的取值范围为0~63;TSEG1、TSEG2的值由位定时寄存器编程决定,并满足1≤TSEG1≤7, 2≤TSEG2≤15。报警器中位定时的设置,定义通信频率为250KB/s。设定DSC=BRP=1,TSEG1+TSEG2=5,系统晶振频率为 8MHz,即XTAL=8MHz,CAN通信频率由上式计算得到250KB/s。
最后位定时设置结果为:BRP=1,TSEG2=2,TSEG1=3。
图2 语音报警系统结构
设计概述
该卡车语音报警系统的设计目标是:成本低;功能强大;适用于日常应用;能够应用于各类车辆。该系统可实现如下功能:利用CAN网络实现对卡车故障码的接收;二,通过识别CAN系统传过来的信号,并对信号进行处理得到相应的语音提示,通过与语音芯片的连接实现相应故障的语音播放报警。
该语音报警系统以摩托罗拉公司的MC68HC908GZ16处理器为核心,并利用其丰富的接口扩展使用了语音播放、CAN通信接口等外围模块,使产品设计更加人性化。MC68HC908GZ16处理器具有如下优点:
1.丰富的硬件资源
MC68HC908GZ16为闪存型MCU,内部拥有16K的FLASH存储空间和1K的RAM存储空间。内部拥有锁相环电路,能够在使用低速晶振的情况下使总线频率最高达到8MHz。同时拥有多达37个通用I/O口,可以方便地与其他外围设备相连接。
图3 卡车报警器电路原理图
2.极强的抗扰能力
内部集成了CAN控制器,利用CAN通信具有很强的抗干扰这一特点,保证了产品能够在恶劣环境条件下高效而稳定地运行。
本设计采用CAN通信的方式完成卡车语音报警系统的设计,系统结构如图2所示。
通过MC68HC908GZ16上集成的MSCAN08模块实现数据通信。利用C68HC908GZ16的I/O口,我们在设计中使用了市场上常见的ISD公司的ISD4002-120数码语音芯片。该芯片采用3V直流供电,可以录制并保存2min的语音信息。其采样频率为8kHz,信息分辨率可达200ms,能够非常真实地再现语音、音乐、声调和效果音。
硬件设计
从图3可以看出,卡车报警器电路主要由三部分构成:微控制器 MC68HC908GZ16(内部集成的MSCAN08模块)、语音芯片 ISD4002和CAN总线收发器TLE6250、ZJYS。微控制器负责MSCAN08模块的初始化,通过CAN模块实现数据的接收和发送等通信任务。 CAN通信控制模块主要完成CAN的通信协议。CAN控制模块可完成物理层和数据链路层的所有功能,适用于汽车及一般的工业环境。利用CAN通信不但可以减少导线连接,而且能增强诊断和监控能力。
CAN收发器TLE6250用于提供对总线差动发送和接收的驱动能力,具有输出信号CANH和CANL的最佳匹配、电磁辐射更低、无待机模式等优点。CANH和CANL与地之间并联两个25PF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射作用。
软件描述
软件编程主要实现两大功能:利用总线进行故障码接收;通过转换故障码实现相应的语音故障报警。语音播放根据其功能设计,整个程序大部分操作在主程序中完成,而CAN接收是在中断中完成。
主程序中的操作是初始化各寄存器、I/O端口,然后在死循环中根据标志位进行相应的处理,具体流程如图4所示。
图4 主程序流程图
1.语音模块软件设计
语音模块使用了ISD4002芯片。单片机通过I/O接口与ISD4002建立连接,并通过命令字的方式控制语音播放的地址,实现语音播放的控制。
2.CAN通信模块软件设计
在CAN总线编程时,需要定义一系列的控制字配置,并要在装置上进行配置。其具体步骤包括:定义CAN控制寄存器、定义位定时、定义信息体屏蔽方式、信息体的初始化、信息体发送数据和信息体接收数据。
(1)MSCAN08模块的初始化
MSCAN08模块的初始化主要是定义通信速率。配置位定时寄存器以确定CAN的通信速率、配置全域屏蔽寄存器以确定滤波策略、初始化每个信息体。初始化信息体需要确定信息体类型(发送还是接收),设定符合CAN协议的ID、SRR、IDE和RTR。CAN通信首先要进行初始化。在完成 MSCAN08模块的初始化以后,MSCAN08模块就可以回到工作状态,进行正常的通信任务。
(2)数据的接收与发送
报文的发送由CAN控制器独立完成,微控制器只要将发送的数据传送到发送MSCAN08模块相应的发送信息体中,然后将命令寄存器中的“发送请求”标志置位即可。报文发送流程图如图5所示,在发送之前先做判断。发送程序分为发送远程帧和数据帧两种。远程帧无数据场,其程序流程图如图5(左)所示。
图5 CAN发送和接收流程图(左为发送流程,右为接收流程)
MSCAN08模块的接收非常灵活。如果根据CAN总线应用层协议规定好ID的含义,就可以通过设定3个屏蔽寄存器(1个全局的,2个特殊的)将需要的数据接收到消息缓冲区,将不需要的过滤掉,再通过读当前消息缓冲区的ID确定数据所代表的含义。AN82527报文接收主要有两种方式:中断方式和查询方式,在该系统中采用了中断方式。报文接收流程图如图5(右)所示。
小结
该卡车语音报警系统已经在台架上进行了实验,并在与其他控制器的台架实验中取得了良好的通信效果,能实现良好的语音报警功能。此外,该设计还需进行进一步的实车验证,其基本设计思路也可应用于轿车中。