基于CAN总线的温室测控系统的研究与设计

时间:2011-07-14来源:网络


3 软件设计
本系统的软件程序设计是在Freescale公司的集成开发环境——Freescale Codewarrior 5.1下完成的。该系统的软件由CAN控制器软件和应用层通信协议构成。
3.1 CAN总线驱动层软件实现
CAN控制器软件主要包括器件初始化、数据发送和接收。初始化工作主要是对QG8微处理器、SPI接口和MCP2515CAN控制器的初始化。其中微处理器初始化主要包括定时器、变量和外部中断的初始化。需要特别注意的是飞思卡尔单片机的定时器与其他单片机(如51系列单片机)不太一样,QG8微处理器的定时器是不能预置某个数值的,而且是只读的,因此必须要有辅助寄存器才能实现该定时器的功能,本文采用的是QG8微处理器的16位的定时器模块TPM:SPI接口的初始化主要包括对控制寄存器SPIC1和SPIC2、波特率寄存器SPIBR、状态寄存器SPIS、数据寄存器SPID的设置。MCP2515的初始化为复位MCP2515、寄存器配置。只有对MCP2515初始化后,进入了配置模式才能对相关的寄存器进行初始化,初始化工作完成后进入工作模式,进行报文发送。为了能使节点稳定的通信,CAN总线上所有的节点都必须有相同的波特率。对于振荡器时钟频率不同的器件,可以通过对波特率预分频比和每一个时间段中时间份额数量的设置来调整比特率。
QG8是通过使用标准SPI读/写命令对寄存器进行读/写操作。外部数据和命令式通过SI引脚在SCK时钟信号上升沿传送到器件中。MCP25 15在SCK下降沿通过SO引脚发送数据。本文采用状态查询方式发送报文。首先应该禁止CAN发送中断产生,以保证报文发送不被中断。为了启动报文发送,必须将相应缓冲器的TxBnCTRL TxREQ位置1,文中是通过调用RTS2515()请求发送来实现的。缓冲器中TxBnCTRL TxP1:0>优先级最高的报文在总线空闲时首先被发送。如果发送成功将产生中断来通知接收,否则TxBnC TRL TxRR和CANINIF.MERRF将被置位,产生发送错误状态,同时INT引脚置位,产生中断请求。具体报文发送流程如图4所示。

e.JPG

1 2 3 4

关键词: 研究 设计 系统 温室 CAN 总线 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版