MCP2515 CAN总线控制器技术详解
MCP2515 CAN总线控制器技术详解
Microchip的MCP2515是一款独立的控制器局域网络(Controller Area Network,CAN)协议控制器,完全支持CAN V2.0B技术规范。它是CAN协议中数据链路层的芯片。
一.时钟和复位
1.1 振荡器
MCP2515通过将晶体或陶瓷谐振器连接在OSC1和OSC2引脚上作为振荡器来工作。MCP2515的振荡器设计要求选用并联切割晶体。若采用串联切割晶体,其产生的时钟频率可能超出厂商规定值。
MCP2515使用了一个振荡器起振定时器(Oscillator Startup Timer,OST),它使MCP2515处于复位状态以保证振荡器在内部状态机开始运行之前已处于稳定状态。上电或从休眠模式唤醒后的最初128 OSC1时钟周期内,OST将保持复位状态。应注意,只有在OST超时后才能进行SPI协议操作。
1.2 复位
MCP2515有两种复位方式:
- 硬件复位——RESET引脚为低电平。
- SPI复位——通过SPI命令复位。
这两种复位方式效果一样。上电后要采用其中一种方式复位器件,以确保逻辑和寄存器处于缺省状态。这一点非常重要。在RESET引脚上连接一个RC电路,可自动进行硬件复位(见图1.1)。按照电气规范(tRL)指定的那样,选择的RC值必须确保在VDD达到工作电压后,器件至少有2μs处于复位状态。
二.功能配置
2.1 寄存器列表
2.2 工作模式
2.2.1 五种工作模式
MCP2515从休眠模式被唤醒后进入“仅监听模式”。工作模式如下图所示:
2.2.2 寄存器配置
2.3 引脚
2.3.1 引脚图
2.3.2 寄存器配置
2.4 位定时
位定时决定传输速度。CAN总线上的所有节点都必须具有相同的标称比特率。CAN协议采用不归零(Non Return to Zero,NRZ)编码方式,在数据流中不对时钟信号进行编码。因此,接收时钟信号必须由接收节点恢复并与发送器的时钟同步。
由于不同节点的振荡器频率和传输时间不同,接收器应具有某种能与数据传输边沿同步的锁相环(Phase Lock Loop,PLL)来同步时钟并保持这种同步。鉴于数据采用NRZ编码,有必要进行位填充以确保至少每6位时间发生一次边沿,使数字锁相环(Digital Phase Lock Loop,DPLL)同步。
2.4.1 相关因素
2.4.1.1 比特率
在CAN规范中,标称比特率(Nominal Bit Rate,NBR)定义为在不需要再同步的情况下,理想发送器每秒发送的位数,它可用下面的公式来表示:
2.4.1.2 标称位时间
标称位时间(Nominal Bit Time,NBT)(tbit)由互不重叠的段时间段组成。因此NBT为下列时间段之和:
2.4.1.3 时间份额
组成位时间的每个段都由时间份额(TQ)组成。每个时间份额的长度取决于振荡器周期(tOSC)。通常TQ为两个振荡器周期。图5-2显示了如何从TOSC和TQ推导出位周期。TQ的长度等于一个TQ时钟周期(tBRPCLK),利用称为波特率预分频器(BRP)的可编程预分频器对它进行编程设置。以下公式对此进行了阐述:
2.4.1.4 同步(硬同步和再同步)
2.4.1.5 波特额配置
例如,MCP2515的时钟频率为FOSC=8MHz,要实现250KHz的CAN波特率,计算过程如下:
①标称位时间: tbit = 1/250 = 4000ns
②时钟振荡周期:TOSC = 1/8 = 125ns
③时间份额:TQ = 2 * (BRP + 1) * TOSC = (2, 4, 6, 8,„„) TOSC
对于BRP值的推导如下:
1个标称位的时钟振荡周期个数:n = tbit / TOSC = 32个
1个标称位的TQ个数:m = 32 / (2, 4, 6, 8,„„) = 16, 8, 4, 2, 1
而一个位时间的时间份额范围为8~25TQ,故此
m只能取16或8。这里取m = 16,则BRP = 0。
④各时间段的确定
同步段 = 1TQ
传播段 = 2TQ
PS1 = 7TQ
PS2 = 6TQ
采样点时间比 = (1+2+7)/16 = 62.5%,符合要求。
2.4.2 寄存器配置
2.5 中断
2.5.1 结构
当发生中断时,INT引脚将被MCP2515拉为低电平,并保持低电平状态直至MCU清除中断。中断只有在引起相应中断的条件消失后,才会被清除。使能与标志寄存器是两个独立的寄存器。使能禁止后,标志位也会正常置位。其结构见下图。中断类型如下图: