📄 帮助&数据发送.txt
字号:
※数据发送
这里,将要了解CAN总线控制器SJA1000的数据收发过程。
SJA1000的发送过程包括状态查看,数据预备和命令发送3个内容。
1.查看状态寄存器(SR).状态寄存器是只读寄存器,反映的是SJA1000的当前状态。通过读这个寄存器,我们可以知道SJA1000当前是否允许发送数据.在正常工作的情况下,SR=0x0c;发送或接收计数器溢出时,SR=4C--这个状态下还是可以正常工作的。只要不是SR=1XXXXXXX(2进制),基本上是可以正常工作的.要判断当前是否允许发送,必须查看SR的相关的几位值:
SR.7: 这是总线状态标志位.如果为1,则不能发送
SR.6: 这是错误状态表示位.如果为1,则可能不能发送,也可能允许
SR.5: 发送状态位: 如果为1,表示正在发送上一次的数据,必须等待
SR.3: 发送完成状态:只有当SR.3为1的时候,才能发送数据
---以上4个条件都必须满足才能发送数据!
2.写发送缓冲区的首地址.一般都是0X10.因为在默认的状态下,发送缓冲区的地址范围是0X10--0X1C,共13个字节(PeliCAN模式)
3.数据预备.把待发送的数据按照一定的格式,写入到发送缓冲区中.具体格式请参照PeliCAN方式,如下:
CON ID3 ID2 ID1 ID0 DAT1 DAT2 DAT3 DAT4 DAT5 DAT6 DAT7 DAT8
88 11 22 33 44 12 13 14 15 16 17 18 11
因为需要实现自发字收,请把ID3-ID0的值设置成当前SJA1000的值(初始化的时候设置的ACR3-ACR0)
4.写命令寄存器(CMR).命令寄存器就是把数据缓冲区的数据"发送"出去.一般来说,可以使用的数值是:0x01,0x10.
0x01:直接发送数据,没有自接收功能
0x10:发送数据,而且还能接收自己发送的数据,正是这里需要的!
0x02:取消正在前依次需要发送而没有发送完成的创作,发送当前数据。一般用于发送当前的紧急数据.
按‘顺序操作下来,可以在列表里看到,已经接收到了刚才的数据,着就是自接收的意思.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -