基于STC89C51的CAN总线点对点通信模块设计
3 CAN系统软件设计
STC89C51的软件设计由MCU初始化、SJAl000初始化、SJAl000的接收发送和数据显示模块等构成。其系统软件设计图如图5所示。
3.1 SJAl000初始化软件设计
SJAl000的初始化程序设计主要是通过对SJAl000的寄存器写入相应的控制字,从而确定SJAl000的工作方式。在对SJAl000的寄存器写入控制字时,要在SJAl000的复位模式下采用软件复位模式。其初始化流程图如图6所示。
3.2 SJAl000数据发送软件设计
报文的发送通常是由CAN控制器根据CAN协议规范自动完成的。首先由CPU将要发送的报文传送到发送缓冲器中,并置位命令寄存器中的发送请求标志。其发送流程图如图7所示。
3.3 SJAl000接收数据软件设计
CPU以一定的周期读取CAN控制器的状态寄存器,从而检查接收缓冲区的转台标志,指示是否至少接收到一个报文。当接收缓冲区状态标志指示为“空”时,表示没有接收到报文;在没有新的检查接收缓冲区状态的要求前,CPU则继续当前的任务。
当接收缓冲区状态标志为满的时候,即表明已接收一个或者多个报文。此时CPU将从CAN控制器取出第一个报文,并置位命令寄存器中的释放接收缓冲区标志。其接收流程图如图8所示。
4 测试
将两个CAN系统模块挂接在CAN总线上,相当于构成CAN总线上两个节点,这样就可以点对点地发送数据,其测试方法就是在当其中一个节点的按键按下时,除了自身的数码管1、2显示加一外,总线上另一节点接收到该数据后,它的数码管3、4也做加一操作,即与发送端节点的数码管1、2同步显示。这样就可以测试CAN总线的点对点的通信。
5 结束语
通过此系统可以较好地完成CAN节点的点对点数据发送和接收,且正确率高,速度快。若加以扩张,再增加节点,其通信原理与上述相同。此外,也可以加上串口,这样就可以实现下位机的多点采集数据,上位机实现显示和控制。因此,本文设计在实践中如果加以扩张,会有很好的价值。
模块 设计 通信 总线 STC89C51 CAN 基于 相关文章:
- 改善WiMAX链路容限的方法和主要RF模块(12-26)
- 基于蓝牙芯片的无线通信模块设计与开发(02-03)
- 一种嵌入式射频光传输模块实现方案(03-12)
- 实测简化版TEA5767调频收音模块(09-03)
- 4款常见2.4G无线模块横向对比(09-03)
- 一种915MHz的发射/接收模块电路设计(08-29)