⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 帮助&数据发送.txt

📁 我自己开发的CAN总线实验软件
💻 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 + -