基于DSP 技术和CAN总线的多节点远程数据传输系统
进行初始化时,注意要先设置CAN模块主控制寄存器MCR 中的改变配置请求位为1 ,即CCR = 1 ,并判断全局状态寄存器GSR 中的改变配置使能位CCE 是否为1 ,如为1 则可进行下面的初始化工作。而在完成对位定时器的初始化后需将CCR 位清零以进入正常工作模式; 在配置BCR1 和BCR2 时要按照如下公式对CAN 控制器波特率进行设定:
波特率= ICLK/ [ ( BRP + 1) + BitTime ]
式中: ICLK为CAN 控制器的时钟频率,即在SCSR1 中充定的DSP 的系统频率; BRP 为波特率预分频位,决定着CAN 控制器的时间片TQ , TQ = ( BRP + 1) / ICLK; BitTime = ( TSEG1 + 1) +( TESG2 + 1) + 1 , TSEG1 为时间段1 ,可编程为3~16个TQ时间片。TSEG2 为时间段2 ,必须小于或等于时间段1。
4. 1. 2 初始化邮箱
对邮箱初始化即是对邮箱中的有关寄存器进行初始化,主要用来设置邮箱接收或发送报文的标识符,发送的是远程帧还是数据帧,并对发送的数据区赋初值。步骤为:禁止邮箱工作,即向邮箱方向/ 使能控制寄存器MDER 中的邮箱使能位MEn( n = 0~5) 写0 ;设置MCR 寄存器中数据域改变请求位为1 ;配置邮箱的内容;返回正常模式;使能邮箱。
4. 1. 3 邮箱信息的接收和发送
在做完以上初始化工作后, 就可以转入邮箱的收发程序。为了大量的数据能在系统网络上连续传输, 在内存设置了2个数据缓冲区(读和写2 个数据区) , 分别用来存放要发送和接收的数据。用邮箱发送时, 将准备发送的数据从写数据存储区写到发送邮箱的数据区, 然后使能发送邮箱并设置TCR寄存器中发送请求位为1 , 判断发送应答信号和发送中断标志位, 在成功发送之后再将发送中断标志位和发送应答位清除。
图4 数据发送流程图
对于一个接收事件来说,由于每个CAN 节点接收数据是根据检测网络上数据帧的ID 与接收邮箱中初始化设定的报文的设定ID 是否相符来决定该节点是否接收此数据,因此在接收事件中,要设置接收邮箱报文的标识符及标识符相关的局部屏蔽寄存器(LAM) 。然后判断接收信息悬挂位RMPn 或接收中断标志位MIFn 是否置位,如果位说明邮箱成功接收信息,将接收的数据转移到读据缓冲区,然后复位接收中断标志位和接收信息悬挂位。
图5 数据接收流程图
4. 2 SCI 串行通信程序设计
串行通信的程序分为DSP 的串行收发和PC 机的串行收发两个。对于PC 机的串行收发采用了标准串口通讯程序。TMS320LF2407 串行通信的软件设计可以采用查询和中断两种方式,设计中采用了中断方式接收数据,并设置软件发送标志位来查询发送的方式。程序分为主程序和中断服务程序2 个部分。
在主程序中对SCI 异步串口进行初始化(包括操作模式、波特率、字符长度、奇偶校验位、停止位位数、中断优先级和使能控制等信息) 。主程序设置了软件发送标志位,并不断查询此位,在其置位时发送数据。中断服务程序中,当需要上传数据时,在中断程序或其他的子程序中置发送标志位,由主程序通过查询该标志位来控制发送数据;对于接收数据,则在中断服务程序中,将接收到的数据地址与相应软件设置的地址进行比较,采用地址位唤醒模式实现与上位机通讯。
在串行通信中,时钟和波特率的同步是十分重要的,在编程中,考虑到所用芯片的特性和实际应用需要,采用了系统时钟为20 MHz ,通讯波特率4 800 bit/ s 与RS - 232 进行通信。根据公式: SCI 异步波特率= SYSCLK/ [ (BRR + 1) ×8]
来确定波特率选择寄存器BRR 的值。
值得注意的是在串行通信设置中,串行通信控制寄存器SCICTL1 的SLEEP 位(上电时为1) 设置很重要,SLEEP 位为SCI休眠位,为1 时使能休眠方式,它的正确设置可以使得通信过程正确的响应中断,从而转移到相应的服务程序中。因此必须正确设置使得程序只有在检测到地址字节时被中断。而在中断程序中比较地址:若相同,则软件清除SLEEP 位,确保在收到每个数据字节都可产生中断;若不相同,则保持SLEEP 为1 以接收下一个地址。由于系统为多节点的通信,因此采用了地址位唤醒模式来正确控制各节点间的数据收发。在调试程序中为每个节点设置了2 个标识地址(如00H 和FFH) ,当收到00H时,DSP 发送数据,当收到FFH 时,DSP 接收数据。图6、图7 分别为串行主程序和中断服务程序的流程图。
图6 串行通信主程序流程图
图7 中断服务程序的流程图
5 结束语
系统解决了野外作业时要求高稳定性的远程数据传输问题,可以在环境恶劣的情况下,多点采集数据,并将采集到的数 据及时处理传输
- 基于AD73360和TMS320F2812的数据采集系统设计(12-06)
- 基于紫外检测法的智能型特高压验电器系统(03-17)
- 单一DSP控制两套三相逆变器的实现(08-31)
- 基于DSP生成SVPWM在逆变电源中的应用(11-09)
- DSP的大功率开关电源的设计方案(12-01)
- DSP处理器电源方案设计(02-08)