微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于STC89C51的CAN总线点对点通信模块设计

基于STC89C51的CAN总线点对点通信模块设计

时间:08-11 来源:互联网 点击:

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节点的点对点数据发送和接收,且正确率高,速度快。若加以扩张,再增加节点,其通信原理与上述相同。此外,也可以加上串口,这样就可以实现下位机的多点采集数据,上位机实现显示和控制。因此,本文设计在实践中如果加以扩张,会有很好的价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top