目录
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 有两种复位方式:
1. 硬件复位——RESET 引脚为低电平。
2. 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 清除中断。
中断只有在引起相应中断的条件消失后,才会被清除。
使能与标志寄存器是两个独立的寄存器。使能禁止后,标志位也会正常置位。其结构见下图。
中断类型如下图:
2.5.2 寄存器配置