3.2 A/D 转换子程序
模拟量采集是测试系统的一个重要组成部分。系统要求底层软件能够对模拟量和开关量信号进行监控,同时也要求能够对部分信号进行高速数据采集。每当运行A/D 转换程序 ADC11P.c 时,MC68HC908GP32 通过SPI 模块控制A/D 转换器的工作。首先, MC68HC908GP32 将A/D 转换通道号放入控制字的高字节,并定义输出数据的格式为16 位, 以MSB 方式送出二进制数据;接着将控制字写到SPI 的数据寄存器,发送给TLC2543,在控 制字传送过程中,MC68HC908GP32 保持等待状态,直到其发送完毕,至此发送过程结束。 随后等待接收TLC2543 发送过来的数据,当判断接收标志位为1 时,从SPI 的数据寄存器 接收数据,并将该数据存放到预先分配好的内存空间。由十每次从TLC2543 取出的数据是上一周期的数据,所以上述过程中NE64 所取得的数据仅仅是上次转换结果的高字节。接下 来,MC68HC908GP32 只要通过向SPI 的数据寄存器中写入任意的字节,并重复上述发送等 待和接收等待的过程,即可取得上次转换结果的低字节,将其存入紧接高字节之后的地址空间,其流程如图5 所示。
3.3 串行通信子程序
串行通信子程序 SCL.c 主要完成SCI 初始化,波特率设置、通信格式设置、发送接收数据方式的设置等,由SCI 初始化、接收1 字节、发送1 字节、接收n 字节和发送n 字节函数组成。在上下位机通过RS232 进行串行通讯之前,需要对串口工作方式以及所采用的波特率进行设置:
(1)串行口工作方式设定:将串行口设置为工作方式即10 位为一帧的异步串行方式。共包 括1 个起始位,8 个数据位和1 个停止位,允许SCI、正常码输出、8 位数据、无校验,即 设SCC1=Ob01000000; 同时设置允许发送、允许接收,查询方式收发, 即设 SCC2=0b00001100。
(2)波特率设定:本控制器采用的波特率为9600,经过计算有SCBR=0b00000010。
4.结论
本文创新点:本文在MCU MC68HC908GP32 的基础上设计并实现了平台及外围电路的设计,并给出MCU 方软件实现的总体原则,接着对各个子程序功能进行了分析与设计,最 后给出数据采集与数据传送过程中的串行通信协议设计的思想。鉴于目前国内外各科研单位所研制的主要是电机自动测试系统,它仅用于电机的某特定试验,功能比较单一,本系统在 该领域有一定独创性。