微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于C8051F040的CAN总线系统智能节点设计

基于C8051F040的CAN总线系统智能节点设计

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

点的初始化的流程图如图2所示。

  图2 CAN节点初始化流程图

2. 3. 2 中断方式下的CAN节点通信程序

它的一般流程是:首先在中断服务子程序中读取中断寄存器的值,获取引起中断的消息对象的号码;然后通过判断状态寄存器中是RxOK还是TxOk置位来确认是接收还是发送中断。如果是发送中断,则设定命令屏蔽寄存器中ClrIntPend位和NewDat位为1,并通过读取相应的消息对象来清除相应消息对象的中断等待位和新数据位;如果是接收中断,在清除上述位的同时读取消息对象中的相应数据,最后清除状态寄存器中的相应位。流程图如图3所示。

  图3 中断方式下的CAN节点通信程序

2. 3. 3 查询方式下的CAN节点消息发送接收程序

对于工作在查询方式下的发送消息对象,有两种方法来进行消息的发送。

第一种方法为设定其消息请求寄存器的Txqst位为1启动一个新的消息的发送,然后通过查询状态寄存器中的TXOK位来判断消息是否成功发送。发送成功后清除相应的状态标志位。流程框图如图4( a)所示。

第二种方法为首先通过查询发送请求寄存器中相应的Txqst位是否为0来判断上次消息是否已成功传送,如果已成功传送则可通过设定其消息请求寄存器的Txqst位为1启动一个新的消息的发送。流程框图如图4( b)所示。

  图4CAN节点消息发送接收程序

对于工作在查询方式下的接收消息对象,首先通过查询状态寄存器中的RXOK是否置位来判断是否成功接收到一个消息,然后通过查询新数据寄存器中设定为接收消息对象的新数据位(NewDat)是否为1来判断哪些消息对象成功接收到了消息,然后依次读取这些消息对象中的消息,最后清除状态寄存器的RXOK位。注意,成功接收到一个消息,则不管它是否通过验收滤波,都会置位RXOK。查询方式的CAN总线通信的流程图如图4( c)所示。对于实际的CAN总线测控节点来说,一般情况发送采用查询方式,而接收采用中断方式。

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

网站地图

Top