
MCP2515
3.0
3.1
消息传递
发送缓冲器
3.3
启动变速箱
在MCP2515实现了三个发送缓冲器。每
这些缓冲区占用14个字节的SRAM,并
映射到设备的存储器映射。
第一个字节, TXBNCTRL ,是一个控制寄存器
与消息相关联的缓冲区。在信息
这个寄存器确定在何种条件下的
消息将被发送并且指示的状态
消息传递(见寄存器3-2 ) 。
5个字节用来存放标准和扩展
的标识符,以及其他信息的仲裁
信息(见寄存器3-4到寄存器3-7) 。
最后八个字节是八个可能的数据
要发送的消息的字节数(见
寄存器3-8 ) 。
至少,须将TXBnSIDH , TXBnSIDL和
TXBnDLC寄存器加载。如果数据字节
目前的消息中,该TXBnDm寄存器必须
也被装载。如果消息是使用扩展
标识符,该TXBnEIDm寄存器也必须是
装载和TXBnSIDL.EXIDE位置1 。
此前发送消息时,MCU必须初始化
的应对CANINTE.TXInE位来使能或禁用
产生中断时,该消息被发送。
注意:
该TxBnCTRL.TXREQ位置必须清晰
(指示发送缓冲器不
写之前等待的发送)
发送缓冲器。
为了发起消息的传输,该
TXBnCTRL.TXREQ位置位必须为每个缓冲器被设置
被发送。这可以通过:
通过SPI写入命令写入寄存器
发送SPI RTS命令
设置用户可将TXnRTS引脚为低电平为特定
发送缓冲器( s)表示将要发送的
如果传输是通过SPI接口启动的,则
TXREQ位可以设置在同一时间作为TXP
优先位。
当TXBnCTRL.TXREQ位置被设置, TXBnCTRL.ABTF ,
TXBnCTRL.MLOA和TxBnCTRL.TXERR仲裁位将
自动清零。
注意:
将TXBnCTRL.TXREQ位呢
没有启动消息传输。它
只是标记一个消息缓冲区被
准备用于传输。变速器会
当装置检测到总线开始
是可用的。
一旦传输已经成功,则完成
TXBnCTRL.TXREQ位置位将被清零,
CANINTF.TXnIF位置位将置一个中断会
若向该CANINTE.TXnIE位被置位。
If
该
信息
传输
失败,
该
TXBnCTRL.TXREQ位置将保持置。这表明
该消息仍然等待发送一
以下条件标志将被设置:
如果消息开始发送但发生
羊羔一个错误条件时, TxBnCTRL.TXERR仲裁
而CANINTF.MERRF位将被设置和
中断将在INT引脚,如果产生
CANINTE.MERRE位被置位
如果消息丢失,仲裁处
TXBnCTRL.MLOA位将被置
注意:
If
单稳
模式
is
启用
( CANCTRL.OSM ) ,在上述条件
将仍然存在。然而, TXREQ位会
被清除,该消息不会
试图传输的第二时间。
3.2
传输优先级
发送优先级是MCP2515内的优先级
的待发送报文。这是
无关,而不一定与任何
优先隐含在消息仲裁机制
内置的CAN协议。
此前发送的SOF ,所有缓冲区的优先级
排队等待传输进行了比较。发送
缓冲器具有最高优先级将首先发送。为
例如,如果发送缓冲器0的优先级设置
比发送缓冲器1 ,缓冲器0将首先发送。
如果两个缓冲区具有相同的优先级设置,缓冲区
具有最高的缓冲器号将被首先发送。为
例如,如果发送缓冲器1具有相同的优先级
设置为发送缓冲器0 ,缓冲器1将优先发送。
有四个级别的发送优先级。如果
TXBnCTRL.TXP<1 : 0>为特定的消息缓冲区
被设置为
11,
该缓冲器具有尽可能高的优先级。
如果TXBnCTRL.TXP<1 : 0>特定消息缓冲器消耗
FER是
00,
该缓冲器具有最低的优先级。
3.4
单次转换模式
单次转换模式,确保了消息只会
尝试发送一次。通常,如果一个CAN
消息仲裁失败,或者被错误销毁
架,该消息是重传。使用单次
启动模式下,报文只会发送
有一次,无论仲裁丢失或错误帧。
单次转换模式,需要保持时隙
确定性的系统,如TTCAN 。
2003-2012 Microchip的科技公司
DS21801G第15页