共2条
1/1 1 跳转至页
AT90CAN128 跪地求解AT90CAN128的命令问题,急急急???
问
由于CAN128这个片子采用的是MOB消息对象的方式,所以小弟不是很明白怎么来写入消息命令。比如,现在我有两个CAN128的片子:A和B。想让A发送给B一个数据桢的命令(两个字节:1、2), 然后B接收到命令后要响应一条数据桢的消息(两个字节:1、2)返回给A, 这应该怎么编呢???
请各位高手们指点迷津~~~小弟不胜感激 答 1: 不知道和AT89C51CC01一样的CAN控制器吗?? 答 2: 如果一样到是可以帮你 答 3: tgb123兄,我也不知道CAN128和AT89C51CC01一不一样以下是我翻译的CAN128寄存器部分的资料
我现在主要的问题是不知道怎么才能让节点B(如我的求助帖子中所述)收到A节点的命令后响应给A一条数据桢消息。
通用控制寄存器CANGCON
ABRQ:放弃请求
0:无请求
1:CANCDMOB寄存器中CONMOB位的对每个MOB的一个复位。待决通信被立即禁止,进行中的通信将被正常终止,设置成合适的状态标志。
OVRQ:过载桢请求
0:无请求
1:在下一个接收桢之后发送一个过载桢
过载桢可通过观察CANGSTA寄存器中的OVFG位来查出。
TTC:定时器触发通信
0:无TTC
1:TTC模式
SYNTTC:TTC同步
0:TTC定时器在SOF上被捕获
1:TTC定时器在EOF的最后一位上被捕获
LISTEN:只听模式
0:无只听模式
1:只听模式
TEST:测试模式
0:无测试模式
1:测试模式:为工厂测试而准备的,不是为用户使用的
ENA/STB:使能/备用模式
因为这个位是一个命令且不是立即有效的,CANGSTA寄存器中的ENFG位给出了被选模式的真实状态。
0:备用模式:进行中的通信被正常终止,CAN通道被冻结(每个MOB中的CONMOB位不改变)。发送器连续提供一个隐性电平。在这种模式下,接收器不被使能,但所有的寄存器和邮箱仍然可从CPU访问。
1:使能模式:一旦11个连续的隐性位被读,则CAN通道进入使能模式。
SWRES:软件复位请求
这个能自动复位的位只是将CAN控制器复位。
0:无复位
1:这个复位与硬件复位是“或”的关系。
通用状态寄存器CANGSTA
OVFG:过载桢标志
这个标志不会产生中断
0:无过载桢
1:只要产生的过载桢被发送,该位就由硬件置位
TXBSY:发送器忙
这个标志不会产生中断
0:发送器不忙
1:只要一个桢(数据、远程、过载或者错误桢)或者一个ACK域被发送,该位就由硬件置位。当一个内部桢空间被发送的时候,也置位。
RXBSY:接收器忙
这个标志不会产生中断
0:接收器不忙
1:只要一个桢被接收或者被监测,该位就由硬件置位
ENFG:使能标志
这个标志不会产生中断
0:CAN控制器禁止:因为一个使能或者禁止命令不会立即有效,这个状态位给出了被选模式的真实状态。
1:CAN控制器使能
BOFF:总线关闭模式
BOFF给出了CAN通道的状态信息。只有进入总线关闭模式才能产生BOFFIT中断。
0:无总线关闭模式
1:总线关闭模式
ERRP:错误被动模式
ERRP给出了CAN通道的状态信息。这个标志不会产生中断
0:无错误被动模式
1:错误被动模式
通用中断寄存器CANGIT
CANIT:通用中断标志
该位只读
0:无中断
1:反映了除OVRTIM中断外的所有CAN控制器中断。该位能用于轮询方法。
BOFFIT:总线关闭中断标志
写一个逻辑1来复位这个中断标志。BOFFIT标志只能当CAN入口处于总线关闭模式时设置。
0:无中断
1:当CAN入口处于总线关闭模式时,总线关闭中断
OVRTIM:超时运行CAN定时器
写一个逻辑1来复位这个中断标志。进入CAN定时器超时运行中断处理程序也会复位该中断标志
0:无中断
1:当CAN定时器从0xFFFF到0x0000转换时该位置位
BXOK:桢缓冲接收中断
写一个逻辑1来复位该中断标志。仅当所有MOB的CONMOB域都已被重写过,BXOK标志才能被清除。
0:无中断
1:脉冲串接收中断:当桢缓冲接收完成时该位置位。
SERG:通用Stuff错误
写一个逻辑1来复位该中断标志
0:无中断
1:stuff错误中断:监测到超过5个连续的相同极性位时。
CERG:通用CRC 错误
写一个逻辑1来复位该中断标志
0:无中断
1:CRC错误中断:CRC检验到CRC域没有被消息
FERG:通用Form错误
写一个逻辑1来复位该中断标志
0:无中断
1:form错误中断:CRC界定符、确认界定符或者EOF中有一个或者多个违规的固定格式。
AERG:通用确认错误
写一个逻辑1来复位该中断标志
0:无中断
1:确认错误中断:在确认的时间段中没有监测到显性位。
CAN通用中断使能寄存器CANGIE
ENIT:使能所有中断(除了CAN定时器超时运行中断)
0:中断禁止
1:CANIT中断使能
ENBOFF:使能总线关闭中断
0:中断禁止
1:总线关闭中断使能
ENRX:使能接收中断
0:中断禁止
1:接收中断使能
ENTX:使能发送中断
0:中断禁止
1:发送中断使能
ENERR:使能Mob错误中断
0:中断禁止
1:Mob错误中断使能
ENBX:使能桢缓冲中断
0:中断禁止
1:桢缓冲中断使能
ENERG:使能通用错误中断
0:中断禁止
1:通用错误中断使能
ENOVRT:使能CAN定时器超时运行中断
0:中断禁止
1:CAN定时器超时运行中断使能
CAN使能Mob寄存器CANEN2、CANEN1
ENMOB14:0 :使能Mob
该位提供Mob的有效性
当Mob使能(CANCDMOB寄存器中的CONMOB1:0位)时,该位置1。
一旦TXOK或者RXOK置1(TXOK自动应答),响应ENMOB复位。ENMOB置0来配置Mob禁止模式,应用于异常终止或者备用模式。
0:消息对象禁止:Mob对一个新的发送或者接收有效
1: 消息对象使能:Mob处于使用状态
CAN使能中断Mob寄存器CANSIT2、CANSIT1
位14:0 :Mob引发中断的状态
0:无中断
1:Mob中断
注:例如:CANSIT2=00100001:Mob 0&5中断
CAN时序寄存器1 CANBT1
BRP5:0 :波特率预定标器
CAN控制器系统时钟Tscl周期可传播和确定单个位定时。
Tscl=(BRP[5:0]+1)/clk frequency 这里是频率的形式,也可化为周期
CAN时序寄存器2 CANBT2
SJW1:0 :重复同步跳转宽度
为了比较不同总线控制器时钟振荡器间的移相,控制器必须重复同步跳转宽度来定义时钟周期的最大数。一个位周期可由一个重复同步来缩短或者延长。
Tsjw=Tscl x (SJW[1:0]+1)
PRS2:0 :传播时间段
这部分位时间用于补偿网络中的物理延时。它是总线上单个传播时间总和的两倍,输入比较器延时或者输出驱动器延时。
Tprs=Tscl x (PRS[2:0]+1)
CAN时序寄存器3 CANBT3
位6:4——PHS22:0 :段2
该段用于补偿段界限错误。该段可由重复同步跳转宽度来缩短。
Tphs2=Tscl x (PHS2[2:0]+1)
位3:1——PHS12:0 :段1
该段用于补偿段界限错误。该段可由重复同步跳转宽度来延长。
Tphs1=Tscl x (PHS1[2:0]+1)
SMP:采样点
0:一次,在采样点
1:三次,总线的“三次采样”是采样点和“两次超过Tscl周期1/2的长度”。该结果为三个值的主要判定的响应。
CAN定时器控制寄存器CANTCON
TPRSC7:0 :CAN定时预定标器
预定标器,CAN定时器向上计数范围是0到255。如果CAN控制器使能,则它为CAN定时器提供时钟。
CLKCANTIM=CLK x 8 x (CANTCON[7:0]+1)
CAN定时器寄存器CANTIML、CANTIMH
位15:0——CANTIM15:0 :CAN定时器计数,范围0到65535
CAN TTC定时器寄存器CANTTCL、CANTTCH
位15:0——TIMTTC15:0 :CAN TTC定时器计数,范围0到65535
CAN发送错误计数寄存器CANTEC
位7:0——TEC7:0 :发送错误计数,范围0到255
CAN接收错误计数寄存器CANREC
位7:0——REC7:0 :接收错误计数,范围0到255
CAN最高优先级Mob寄存器CANHPMOB
位7:4——HPMOB3:0 :最高优先级Mob数
Mob在CANSIT寄存器中有最高优先级。如果CANSIT=0(没有Mob),返回值为0xF
位3:0——CGP3:0 :CAN通用目标位
这些位能预先编程,来匹配CANPAGE寄存器的想要的配置(例如,AINC和INDX2:0设置)
CAN页Mob寄存器CANPAGE
位7:4——MOBNB3:0 :Mob数
Mob数的选择,有效数范围0到14
AINC:自动增加FIFO CAN数据缓冲索引(低有效)
0:自动增加索引(默认值)
1:不自动增加索引
位2:0——INDX2:0 :FIFO CAN数据缓冲索引
进入FIFO的CAN数据位的位单元,来定义Mob
Mob寄存器
CAN Mob状态寄存器CANSTMOB
DLCW:数据长度代码警告
即将到来的消息不被DLC期望。无论是什么样的桢格式,CANCDMOB寄存器的DLC域都通过接收到的DLC来更新。
TXOK:发送OK
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。发送使能通信结束。当控制器已经准备好发送一个桢,如果两个或者多个消息对象使能,低的Mob索引(0到14)会首先被供应。
RXOK:接收OK
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。接收使能通信结束。如果两个或者多个消息对象接收,低的Mob索引(0到14)会首先被供应。
BERR:位错误(只当发送时)
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。该位被监测的值与该位被发送的值不一样。
例外:在仲裁域期间,被监测的接收位作为一个显性位发送,确认时间段在一个错误桢发送时监测到一个显性位。
SERR:Stuff错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。监测到多于五个连续相同极性位。这个标志能产生一个中断
CERR:CRC错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。接收器在从桢到数据域的开始每一个被接收的消息上执行一个CRC检查。如果这个检查不与CRC域匹配,则一个CRC设置被设置
FERR:Form错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。Form错误由以下位域里的固定格式的一个或多个违规引起:
CRC界定符、确认界定符、EOF
AERR:确认错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。在确认时间段里没有显性位被监测到。
CAN Mob控制和DLC寄存器CANCDMOB
位7:6——CONMOB1:0 :消息对象配置
这些位设置通信被执行(复位之后没有初始值)
00- 禁止
01- 使能发送
10-使能接收
11-使能桢缓冲接收
一旦通信被执行,这些位不被清除。用户必须重写配置来使能一个新的通信
这个操作对于能复位BXOK标志是必要的。
这个操作也在CANEN寄存器里设置响应位
RPLV:应答有效
用于在接收一个远程桢后的自动应答模式
0- 应答没有准备好
1- 应答准备好并且有效
IDE:标识符扩展
远程桢或者数据桢的IDE位发送
该位通过接收到的远程桢或者数据桢的响应值来更新
0-CAN标准 2.0A(标识符长度-11位)
2- CAN标准 2.0B(标识符长度-29位)
位3:0——DLC3:0 :数据长度代码
消息的数据域中的位数目
远程桢或者数据桢的DLC域发送。DLC的范围是从0到8。如果DLC域大于8,则有效的DLC=8。
该域通过被接收的远程桢或者数据桢的响应值来更新。如果被期望的DLC与即将到来的DLC不一样,则一个DLC警告会在CANSTMOB寄存器中出现。
CAN标识符标志寄存器CANIDT1、CANIDT2、CANIDT3、CANIDT4
V2.0 A 位31:21——IDT10:0 :标识符标志
远程桢或者数据桢的标识符域发送
该域通过被接收的远程桢或者数据桢的响应值来更新。
RTRTAG:远程发送请求标志
远程桢或者数据桢的RTR位发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB0TAG:保留位0标志
远程桢或者数据桢的保留位0发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
V2.0 B 位31:3——IDT28:0 :标识符标志
远程桢或者数据桢的标识符域发送
该域通过被接收的远程桢或者数据桢的响应值来更新。
RTRTAG:远程发送请求标志
远程桢或者数据桢的RTR位发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB1TAG:保留位1标志
远程桢或者数据桢的保留位1发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB0TAG:保留位0标志
远程桢或者数据桢的保留位0发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
CAN标识符屏蔽寄存器CANIDM1、CANIDM2、CANIDM3、CANIDM4
V2.0 A 位31:21——IDMSK10:0 :标识符屏蔽
0- 比较真值强制
1- 位比较使能
RTRMSK:远程发送请求屏蔽
0- 比较真值强制
1- 位比较使能
IDEMSK:标识符扩展屏蔽
0- 比较真值强制
1- 位比较使能
V2.0 B 位31:3——IDMSK28:0 :标识符屏蔽
0- 比较真值强制
1- 位比较使能
RTRMSK:远程发送请求屏蔽
0- 比较真值强制
1- 位比较使能
IDEMSK:标识符扩展屏蔽
0- 比较真值强制
1- 位比较使能
CAN定时器标志寄存器CANSTML、CANSTMH
位15:0——TIMSTM15:0 :定时器标志计数
CAN定时器标志计数范围0到65535
CAN数据消息寄存器CANMSG
位7:0——MSG7:0 :消息数据
该寄存器包括了指向页Mob寄存器CAN数据位
在写页Mob寄存器后,该位与预先定义的标识符+索引的指定消息位相等。如果自动增加被使用,在数据寄存器结尾写或者读循环,索引自动增加。计数范围是8位没有结尾的循环(0,1,…,7,0,…)
答 4: 拜托了!!! 答 5: 看了一下英文的。好像是一样的。。看了一下英文的。好像是一样的。。你有什么问题。。?要不我发个51驱动给你你看看!!你邮件地址多少??
请各位高手们指点迷津~~~小弟不胜感激 答 1: 不知道和AT89C51CC01一样的CAN控制器吗?? 答 2: 如果一样到是可以帮你 答 3: tgb123兄,我也不知道CAN128和AT89C51CC01一不一样以下是我翻译的CAN128寄存器部分的资料
我现在主要的问题是不知道怎么才能让节点B(如我的求助帖子中所述)收到A节点的命令后响应给A一条数据桢消息。
通用控制寄存器CANGCON
ABRQ:放弃请求
0:无请求
1:CANCDMOB寄存器中CONMOB位的对每个MOB的一个复位。待决通信被立即禁止,进行中的通信将被正常终止,设置成合适的状态标志。
OVRQ:过载桢请求
0:无请求
1:在下一个接收桢之后发送一个过载桢
过载桢可通过观察CANGSTA寄存器中的OVFG位来查出。
TTC:定时器触发通信
0:无TTC
1:TTC模式
SYNTTC:TTC同步
0:TTC定时器在SOF上被捕获
1:TTC定时器在EOF的最后一位上被捕获
LISTEN:只听模式
0:无只听模式
1:只听模式
TEST:测试模式
0:无测试模式
1:测试模式:为工厂测试而准备的,不是为用户使用的
ENA/STB:使能/备用模式
因为这个位是一个命令且不是立即有效的,CANGSTA寄存器中的ENFG位给出了被选模式的真实状态。
0:备用模式:进行中的通信被正常终止,CAN通道被冻结(每个MOB中的CONMOB位不改变)。发送器连续提供一个隐性电平。在这种模式下,接收器不被使能,但所有的寄存器和邮箱仍然可从CPU访问。
1:使能模式:一旦11个连续的隐性位被读,则CAN通道进入使能模式。
SWRES:软件复位请求
这个能自动复位的位只是将CAN控制器复位。
0:无复位
1:这个复位与硬件复位是“或”的关系。
通用状态寄存器CANGSTA
OVFG:过载桢标志
这个标志不会产生中断
0:无过载桢
1:只要产生的过载桢被发送,该位就由硬件置位
TXBSY:发送器忙
这个标志不会产生中断
0:发送器不忙
1:只要一个桢(数据、远程、过载或者错误桢)或者一个ACK域被发送,该位就由硬件置位。当一个内部桢空间被发送的时候,也置位。
RXBSY:接收器忙
这个标志不会产生中断
0:接收器不忙
1:只要一个桢被接收或者被监测,该位就由硬件置位
ENFG:使能标志
这个标志不会产生中断
0:CAN控制器禁止:因为一个使能或者禁止命令不会立即有效,这个状态位给出了被选模式的真实状态。
1:CAN控制器使能
BOFF:总线关闭模式
BOFF给出了CAN通道的状态信息。只有进入总线关闭模式才能产生BOFFIT中断。
0:无总线关闭模式
1:总线关闭模式
ERRP:错误被动模式
ERRP给出了CAN通道的状态信息。这个标志不会产生中断
0:无错误被动模式
1:错误被动模式
通用中断寄存器CANGIT
CANIT:通用中断标志
该位只读
0:无中断
1:反映了除OVRTIM中断外的所有CAN控制器中断。该位能用于轮询方法。
BOFFIT:总线关闭中断标志
写一个逻辑1来复位这个中断标志。BOFFIT标志只能当CAN入口处于总线关闭模式时设置。
0:无中断
1:当CAN入口处于总线关闭模式时,总线关闭中断
OVRTIM:超时运行CAN定时器
写一个逻辑1来复位这个中断标志。进入CAN定时器超时运行中断处理程序也会复位该中断标志
0:无中断
1:当CAN定时器从0xFFFF到0x0000转换时该位置位
BXOK:桢缓冲接收中断
写一个逻辑1来复位该中断标志。仅当所有MOB的CONMOB域都已被重写过,BXOK标志才能被清除。
0:无中断
1:脉冲串接收中断:当桢缓冲接收完成时该位置位。
SERG:通用Stuff错误
写一个逻辑1来复位该中断标志
0:无中断
1:stuff错误中断:监测到超过5个连续的相同极性位时。
CERG:通用CRC 错误
写一个逻辑1来复位该中断标志
0:无中断
1:CRC错误中断:CRC检验到CRC域没有被消息
FERG:通用Form错误
写一个逻辑1来复位该中断标志
0:无中断
1:form错误中断:CRC界定符、确认界定符或者EOF中有一个或者多个违规的固定格式。
AERG:通用确认错误
写一个逻辑1来复位该中断标志
0:无中断
1:确认错误中断:在确认的时间段中没有监测到显性位。
CAN通用中断使能寄存器CANGIE
ENIT:使能所有中断(除了CAN定时器超时运行中断)
0:中断禁止
1:CANIT中断使能
ENBOFF:使能总线关闭中断
0:中断禁止
1:总线关闭中断使能
ENRX:使能接收中断
0:中断禁止
1:接收中断使能
ENTX:使能发送中断
0:中断禁止
1:发送中断使能
ENERR:使能Mob错误中断
0:中断禁止
1:Mob错误中断使能
ENBX:使能桢缓冲中断
0:中断禁止
1:桢缓冲中断使能
ENERG:使能通用错误中断
0:中断禁止
1:通用错误中断使能
ENOVRT:使能CAN定时器超时运行中断
0:中断禁止
1:CAN定时器超时运行中断使能
CAN使能Mob寄存器CANEN2、CANEN1
ENMOB14:0 :使能Mob
该位提供Mob的有效性
当Mob使能(CANCDMOB寄存器中的CONMOB1:0位)时,该位置1。
一旦TXOK或者RXOK置1(TXOK自动应答),响应ENMOB复位。ENMOB置0来配置Mob禁止模式,应用于异常终止或者备用模式。
0:消息对象禁止:Mob对一个新的发送或者接收有效
1: 消息对象使能:Mob处于使用状态
CAN使能中断Mob寄存器CANSIT2、CANSIT1
位14:0 :Mob引发中断的状态
0:无中断
1:Mob中断
注:例如:CANSIT2=00100001:Mob 0&5中断
CAN时序寄存器1 CANBT1
BRP5:0 :波特率预定标器
CAN控制器系统时钟Tscl周期可传播和确定单个位定时。
Tscl=(BRP[5:0]+1)/clk frequency 这里是频率的形式,也可化为周期
CAN时序寄存器2 CANBT2
SJW1:0 :重复同步跳转宽度
为了比较不同总线控制器时钟振荡器间的移相,控制器必须重复同步跳转宽度来定义时钟周期的最大数。一个位周期可由一个重复同步来缩短或者延长。
Tsjw=Tscl x (SJW[1:0]+1)
PRS2:0 :传播时间段
这部分位时间用于补偿网络中的物理延时。它是总线上单个传播时间总和的两倍,输入比较器延时或者输出驱动器延时。
Tprs=Tscl x (PRS[2:0]+1)
CAN时序寄存器3 CANBT3
位6:4——PHS22:0 :段2
该段用于补偿段界限错误。该段可由重复同步跳转宽度来缩短。
Tphs2=Tscl x (PHS2[2:0]+1)
位3:1——PHS12:0 :段1
该段用于补偿段界限错误。该段可由重复同步跳转宽度来延长。
Tphs1=Tscl x (PHS1[2:0]+1)
SMP:采样点
0:一次,在采样点
1:三次,总线的“三次采样”是采样点和“两次超过Tscl周期1/2的长度”。该结果为三个值的主要判定的响应。
CAN定时器控制寄存器CANTCON
TPRSC7:0 :CAN定时预定标器
预定标器,CAN定时器向上计数范围是0到255。如果CAN控制器使能,则它为CAN定时器提供时钟。
CLKCANTIM=CLK x 8 x (CANTCON[7:0]+1)
CAN定时器寄存器CANTIML、CANTIMH
位15:0——CANTIM15:0 :CAN定时器计数,范围0到65535
CAN TTC定时器寄存器CANTTCL、CANTTCH
位15:0——TIMTTC15:0 :CAN TTC定时器计数,范围0到65535
CAN发送错误计数寄存器CANTEC
位7:0——TEC7:0 :发送错误计数,范围0到255
CAN接收错误计数寄存器CANREC
位7:0——REC7:0 :接收错误计数,范围0到255
CAN最高优先级Mob寄存器CANHPMOB
位7:4——HPMOB3:0 :最高优先级Mob数
Mob在CANSIT寄存器中有最高优先级。如果CANSIT=0(没有Mob),返回值为0xF
位3:0——CGP3:0 :CAN通用目标位
这些位能预先编程,来匹配CANPAGE寄存器的想要的配置(例如,AINC和INDX2:0设置)
CAN页Mob寄存器CANPAGE
位7:4——MOBNB3:0 :Mob数
Mob数的选择,有效数范围0到14
AINC:自动增加FIFO CAN数据缓冲索引(低有效)
0:自动增加索引(默认值)
1:不自动增加索引
位2:0——INDX2:0 :FIFO CAN数据缓冲索引
进入FIFO的CAN数据位的位单元,来定义Mob
Mob寄存器
CAN Mob状态寄存器CANSTMOB
DLCW:数据长度代码警告
即将到来的消息不被DLC期望。无论是什么样的桢格式,CANCDMOB寄存器的DLC域都通过接收到的DLC来更新。
TXOK:发送OK
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。发送使能通信结束。当控制器已经准备好发送一个桢,如果两个或者多个消息对象使能,低的Mob索引(0到14)会首先被供应。
RXOK:接收OK
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。接收使能通信结束。如果两个或者多个消息对象接收,低的Mob索引(0到14)会首先被供应。
BERR:位错误(只当发送时)
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。该位被监测的值与该位被发送的值不一样。
例外:在仲裁域期间,被监测的接收位作为一个显性位发送,确认时间段在一个错误桢发送时监测到一个显性位。
SERR:Stuff错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。监测到多于五个连续相同极性位。这个标志能产生一个中断
CERR:CRC错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。接收器在从桢到数据域的开始每一个被接收的消息上执行一个CRC检查。如果这个检查不与CRC域匹配,则一个CRC设置被设置
FERR:Form错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。Form错误由以下位域里的固定格式的一个或多个违规引起:
CRC界定符、确认界定符、EOF
AERR:确认错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。在确认时间段里没有显性位被监测到。
CAN Mob控制和DLC寄存器CANCDMOB
位7:6——CONMOB1:0 :消息对象配置
这些位设置通信被执行(复位之后没有初始值)
00- 禁止
01- 使能发送
10-使能接收
11-使能桢缓冲接收
一旦通信被执行,这些位不被清除。用户必须重写配置来使能一个新的通信
这个操作对于能复位BXOK标志是必要的。
这个操作也在CANEN寄存器里设置响应位
RPLV:应答有效
用于在接收一个远程桢后的自动应答模式
0- 应答没有准备好
1- 应答准备好并且有效
IDE:标识符扩展
远程桢或者数据桢的IDE位发送
该位通过接收到的远程桢或者数据桢的响应值来更新
0-CAN标准 2.0A(标识符长度-11位)
2- CAN标准 2.0B(标识符长度-29位)
位3:0——DLC3:0 :数据长度代码
消息的数据域中的位数目
远程桢或者数据桢的DLC域发送。DLC的范围是从0到8。如果DLC域大于8,则有效的DLC=8。
该域通过被接收的远程桢或者数据桢的响应值来更新。如果被期望的DLC与即将到来的DLC不一样,则一个DLC警告会在CANSTMOB寄存器中出现。
CAN标识符标志寄存器CANIDT1、CANIDT2、CANIDT3、CANIDT4
V2.0 A 位31:21——IDT10:0 :标识符标志
远程桢或者数据桢的标识符域发送
该域通过被接收的远程桢或者数据桢的响应值来更新。
RTRTAG:远程发送请求标志
远程桢或者数据桢的RTR位发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB0TAG:保留位0标志
远程桢或者数据桢的保留位0发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
V2.0 B 位31:3——IDT28:0 :标识符标志
远程桢或者数据桢的标识符域发送
该域通过被接收的远程桢或者数据桢的响应值来更新。
RTRTAG:远程发送请求标志
远程桢或者数据桢的RTR位发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB1TAG:保留位1标志
远程桢或者数据桢的保留位1发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB0TAG:保留位0标志
远程桢或者数据桢的保留位0发送
该目标通过被接收的远程桢或者数据桢的响应值来更新。
CAN标识符屏蔽寄存器CANIDM1、CANIDM2、CANIDM3、CANIDM4
V2.0 A 位31:21——IDMSK10:0 :标识符屏蔽
0- 比较真值强制
1- 位比较使能
RTRMSK:远程发送请求屏蔽
0- 比较真值强制
1- 位比较使能
IDEMSK:标识符扩展屏蔽
0- 比较真值强制
1- 位比较使能
V2.0 B 位31:3——IDMSK28:0 :标识符屏蔽
0- 比较真值强制
1- 位比较使能
RTRMSK:远程发送请求屏蔽
0- 比较真值强制
1- 位比较使能
IDEMSK:标识符扩展屏蔽
0- 比较真值强制
1- 位比较使能
CAN定时器标志寄存器CANSTML、CANSTMH
位15:0——TIMSTM15:0 :定时器标志计数
CAN定时器标志计数范围0到65535
CAN数据消息寄存器CANMSG
位7:0——MSG7:0 :消息数据
该寄存器包括了指向页Mob寄存器CAN数据位
在写页Mob寄存器后,该位与预先定义的标识符+索引的指定消息位相等。如果自动增加被使用,在数据寄存器结尾写或者读循环,索引自动增加。计数范围是8位没有结尾的循环(0,1,…,7,0,…)
答 4: 拜托了!!! 答 5: 看了一下英文的。好像是一样的。。看了一下英文的。好像是一样的。。你有什么问题。。?要不我发个51驱动给你你看看!!你邮件地址多少??
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |