首页 理论教育现场总线BasicCAN功能

现场总线BasicCAN功能

【摘要】:BasicCAN地址分配见表4-3。表4-3 BasicCAN地址分配表(续)2.控制段控制寄存器控制寄存器的内容是用于改变CAN控制器的状态。然而,数据长度码必须正确设置以避免两个CAN控制器用同样的识别机制启动远程帧传送而发生总线错误。如果选择的值超过8,则按照DLC规定认为是8。当复位请求位出现了1到0的变化时,CAN控制器将返回操作模式。

1.BasicCAN地址分配

SJA1000对微控制器而言是内存管理的I/O器件。两器件的独立操作是通过像RAM一样的片内寄存器修正来实现的。

SJA1000的地址区包括控制段和报文缓冲器。控制段在初始化加载时,可被编程来配置通信参数(如位定时等)。微控制器也是通过这个段来控制CAN总线上的通信。在初始化时,CLKOUT信号可以被微控制器编程指定一个值。

应发送的报文写入发送缓冲器。成功接收报文后,微控制器从接收缓冲器中读出接收的报文,然后释放空间以便下一次使用。

微控制器和SJA1000之间状态、控制和命令信号的交换都是在控制段中完成的。初始化加载后,寄存器的接收代码、接收屏蔽、总线定时寄存器0和1以及输出控制就不能改变了。只有控制寄存器的复位位被置高时,才可以访问这些寄存器。

在以下两种不同的模式中访问寄存器是不同的:

1)复位模式。

2)工作模式。

当硬件复位或控制器掉电时会自动进入复位模式。工作模式是通过置位控制寄存器的复位请求位激活的。

BasicCAN地址分配见表4-3。

表4-3 BasicCAN地址分配表

978-7-111-55649-7-Chapter04-26.jpg

(续)

978-7-111-55649-7-Chapter04-27.jpg

2.控制段

(1)控制寄存器(CR)

控制寄存器的内容是用于改变CAN控制器的状态。这些位可以被微控制器置位或复位,微控制器可以对控制寄存器进行读/写操作。控制寄存器各位的功能见表4-4。

表4-4 控制寄存器(地址0)

978-7-111-55649-7-Chapter04-28.jpg

(2)命令寄存器(CMR)

命令位初始化SJA1000传输层上的动作。命令寄存器对微控制器来说是只写存储器。如果去读这个地址,返回值是“11111111”。两条命令之间至少有一个内部时钟周期,内部时钟的频率是外部振荡频率的1/2。命令寄存器各位的功能见表4-5。

表4-5 命令寄存器(地址1)

978-7-111-55649-7-Chapter04-29.jpg

(3)状态寄存器(SR)

状态寄存器的内容反映了SJA1000的状态。状态寄存器对微控制器来说是只读存储器,各位的功能见表4-6。

表4-6 状态寄存器(地址2)

978-7-111-55649-7-Chapter04-30.jpg

(续)

978-7-111-55649-7-Chapter04-31.jpg

(4)中断寄存器(IR)

中断寄存器允许识别中断源。当寄存器的一位或多位被置位时,INT(低电位有效)引脚被激活。该寄存器被微控制器读过之后,所有位被复位,这将导致INT引脚上的电平漂移。中断寄存器对微控制器来说是只读存储器,各位的功能见表4-7。

表4-7 中断寄存器(地址3)

978-7-111-55649-7-Chapter04-32.jpg

(5)验收代码寄存器(ACR)

复位请求位被置高(当前)时,这个寄存器是可以访问(读/写)的。如果一条报文通过了接收过滤器的测试而且接收缓冲器有空间,那么描述符和数据将被分别顺次写入RXFIFO。当报文被正确的接收完毕,则有:(www.chuimin.cn)

1)接收状态位置高(满)。

2)接收中断使能位置高(使能),接收中断置高(产生中断)。

验收代码位(AC.7~AC.0)和报文标识符的高8位(ID.10~ID.3)必须相等,或者验收屏蔽位(AM.7~AM.0)的所有位为1。即如果满足以下方程的描述,则予以接收:

[(ID.10~ID.3)≡(AC.7~AC.0)]∨(AM.7~AM.0)≡11111111

验收代码寄存器各位功能见表4-8。

表4-8 验收代码寄存器(地址4)

978-7-111-55649-7-Chapter04-33.jpg

(6)验收屏蔽寄存器(AMR)

如果复位请求位置高(当前),这个寄存器可以被访问(读/写)。验收屏蔽寄存器定义验收代码寄存器的哪些位对接收过滤器是“相关的”或“无关的”(即可为任意值)。

当AM.i=0时,是“相关的”;

当AM.i=1时,是“无关的”(i=0,1,…,7)。

验收屏蔽寄存器各位的功能见表4-9。

表4-9 验收屏蔽寄存器(地址5)

978-7-111-55649-7-Chapter04-34.jpg

3.发送缓冲区

发送缓冲区的全部内容见表4-10。缓冲器是用来存储微控制器要SJA1000发送的报文的。它被分为描述符区和数据区。发送缓冲器的读/写只能由微控制器在工作模式下完成。在复位模式下读出的值总是“FFH”。

表4-10 发送缓冲区

978-7-111-55649-7-Chapter04-35.jpg

(1)标识符(ID)

标识符有11位(ID0~ID10)。ID10是最高位,在仲裁过程中是最先被发送到总线上的。标识符就像报文的名字。它在接收器的接收过滤器中被用到,也在仲裁过程中决定总线访问的优先级。标识符的值越低,其优先级越高。这是因为在仲裁时有许多前导显性位所致。

(2)远程发送请求(RTR)

如果此位置1,总线将以远程帧发送数据。这意味着此帧中没有数据字节。然而,必须给出正确的数据长度码,数据长度码由具有相同标识符的数据帧报文决定。

如果RTR位没有被置位,数据将以数据长度码规定的长度来传送数据帧。

(3)数据长度码(DLC)

报文数据区的字节数根据数据长度码编制。在远程帧传送中,因为RTR被置位,数据长度码是不被考虑的。这就迫使发送/接收数据字节数为0。然而,数据长度码必须正确设置以避免两个CAN控制器用同样的识别机制启动远程帧传送而发生总线错误。数据字节数是0~8,是以如下方法计算的:

数据字节数=8×DLC.3+4×DLC.2+2×DLC.1+DLC.0

为了保持兼容性,数据长度码不超过8。如果选择的值超过8,则按照DLC规定认为是8。

(4)数据区

传送的数据字节数由数据长度码决定。发送的第一位是地址12单元的数据字节1的最高位。

4.接收缓冲区

接收缓冲区的全部列表和发送缓冲区类似。接收缓冲区是RXFIFO中可访问的部分,位于CAN地址的20~29之间。

标识符、远程发送请求位和数据长度码同发送缓冲器的相同,只不过是在地址20~29。RXFIFO共有64B的报文空间。在任何情况下,FIFO中可以存储的报文数取决于各条报文的长度。如果RXFIFO中没有足够的空间来存储新的报文,CAN控制器会产生数据溢出。数据溢出发生时,已部分写入RXFIFO的当前报文将被删除。这种情况将通过状态位或数据溢出中断(中断允许时,即使除了最后一位整个数据块被无误接收也使接收报文无效)反映到微控制器。

5.寄存器的复位值

检测到有复位请求后将中止当前接收/发送的报文而进入复位模式。当复位请求位出现了1到0的变化时,CAN控制器将返回操作模式。