语音模块使用了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(右)所示。
小结
该卡车语音报警系统已经在台架上进行了实验,并在与其他控制器的台架实验中取得了良好的通信效果,能实现良好的语音报警功能。此外,该设计还需进行进一步的实车验证,其基本设计思路也可应用于轿车中。