📄 帮助&寄存器.txt
字号:
※寄存器读取与设置
包括了SJA1000的大部分只读、只写和读写的寄存器。这里只列出几个比较重要和需要特别注意的寄存器,其他的设置请参考教材的相关内容.
0.模式寄存器(MODE).
经过前几次的实验,估计对模式寄存器都有个大概的认识。
模式寄存器使用SJA1000所必须设置的第一个寄存器。通过它,可以使SJA1000进入和退出复位状态(MODE.0);可选择接收滤波器的滤波状态(单滤波MODE.3=1,双滤波MODE.3=0);可以使SJA1000进入\退出只听状态(MODE.1);可以选择进入与退出自检测模式(MODE.2);也可以使SJA1000进入和退出睡眠状态(MODE.4).
1.命令寄存器(CMR).
命令寄存器的各种值的意义:
CMR=0x01: 普通方式发送一个数据
CMR=0x02: 紧急发送当前数据,如果前依次的发送没有完成,撤消前一次发送.
CMR=0x04: 释放数据接收缓冲接收区
CMR=0X08: 清除数据溢出
CMR=0X10: 以自接收方式发送数据
2.状态寄存器(CR).
状态寄存器反映的是SJA1000的当前活动状态.读取这个的值可以知道当前的SJA1000是否允许接收和发送数据.状态寄存器共有8位,每一位都表示不同的状态.
SR.7:总线状态.
SR.7=1:总线关闭,SJA1000不参与总线活动,有可能是总线错误引发的.
SR.7=0:总线正常
SR.6:错误状态.
SR.6=1:出现错误,至少一个错误计数器达到或超过报警限额(0X60).
SR.6=0:正常
SR.5:发送状态.
SR.5=1:SJA1000正在发送报文.
SR.5=0:空闲
SR.4:接收状态.
SR.4=1:SJA1000正在接收报文.
SR.4=0:空闲
SR.3:发送完成状态.
SR.3=1:完成,最后一次已经发送成功
SR.3=0:先前请求的发送还没有完成
SR.2:发送缓冲区状态.
SR.2=1:释放,可以想发送缓冲区写报文.
SR.2=0:锁定,不能访问发送缓冲区
SR.1:数据溢出状态.
SR.1=1:溢出,报文丢失
SR.1=0:正常
SR.0:接收缓冲器状态.
SR.0=1:存在有效报文.
SR.O=0:没有报文
3.中断寄存器(IR)
中断寄存器是用作中断源的识别.当有一位或多位为"1"时,SJA1000就在INT引脚输出一个负脉冲(前提条件是中断使能寄存器允许中断的发生),可以使单片机进入中断。
中断寄存器的各位定义请参考相关教材。在这个实验中,由于没有使用中断方式进行数据传输,所以基本上没有使用这个寄存器.
4.中断使能
也称为中断允许寄存器。只有设置这里的相应位为"1" ,SJA1000才能在条件满足的情况下,输出一个负脉冲,以触发单片机.
由于没有使用中断,软件也没有使用这个寄存器的设置.需要了解的话,请参考教材.
6.总线时序0(BTR0)
定义了波特率预置器和同步跳转宽度.
7.总线时序1(BTR1)
定义了一个位的周期长度,采样点的位置和采样点的数目.
总线时序寄存器(BTR0,BTR1)构成了SJA1000的波特率控制器.这两个寄存器只能在复位状态下设置.
8.输出控制寄存器(OCR)
允许由软件控制建立不同输出驱动的配置.只有在复位状态下才能设置,
11.仲裁丢失捕捉(ALC)
包括了仲裁丢失的位置信息.这是只读寄存器.详细请参考相关内容.
12.错误代码捕捉寄存器(ECC)
包含了总线错误的类型和位置的信息,是只读的寄存器.
13.错误报警限额(EWLR)
默认值是0X60,可读也可写(复位状态下可写),不过一般都使用这个的默认值.
14.接收错误计数器(RXERR)
反映了接收错误计数器的当前值,硬件复位后此寄存器被初始化为0.是只读的一个寄存器.
15.发送错误计数器(TXERR)
反映了发送错误计数器的当前值.同上.
16-28.发送,接收缓窗口.
在逻辑上,数据发送和数据接收都是使用了这个缓冲区,但是在物理上,它们对应的是不同的寄存器.
这个窗口与单片机的串口SBUF类似,对它进行读和写,就对应了数据接收和数据发送.
30.接收缓冲区开始地址(RBSA)
默认情况下,该值为0.可写可读.
31.时钟分频寄存器(CDR)
控制输出给单片机的CLOCKOUT的频率,可以是CLOCKOUT引脚失效,可以选择SJA1000的工作模式:PeliCAN模式或BasiCAN模式.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -