基于MCP2515的CAN学习

CAN总线上的所有节点都必须具有相同的标称比特率(Nominal Bit Rate)。

 

MCP2515通过DPLL(数字锁相环)实现位定时,DPLL被配置成同输入数据同步,并为发送数据提供标称定时。DPLL将一个位时间分割为有最小单位为时间份额(Time Quanta,TQ)所组成的多个时间段。

 

CAN总线上的所有器件都必须使用相同的比特率。然而并非所有器件都要求具有相同的主振荡器时钟频率。对于采用不同时钟频率的器件,应通过适当设置波特率预分频比以及每一时间段中的时间份额的数量来对比特率进行调整。

 

CAN位时间由互不重叠的时间段组成。每个时间段又由时间份额(TQ)组成。

CAN的标称比特率(Nominal Bit Rate,NBR):在不需要再同步的情况下,理想发送器每秒发送的位数公式如下:

        NBR = fbit = 1/tbit

标称位时间(Nominal Bit Time,NBT)(tbit)由互不重叠的段时间段组成,NBT为以下时间段之和。

    tbit = tSyncSeg + tPropSeg + tPS1 + tPS2

与NBT相关的参数是采样点、同步跳转宽度(Synchronization Jump Width,SJW)和信息处理时间(Information Processing Time,IPT)。

 

同步段(SyncSeg)为NBT中的首段,用于同步CAN总线上的各个节点,输入信号的跳变沿就发生在同步段,该段持续时间为1TQ。

传播段(PropSeg)用于补偿各节点之间的物理传输延迟时间。传输延时时间为信号在总线上传播时间的两倍,包括总线驱动器延迟时间,传播段的长度可编程设定为1--8TQ。

相位缓冲段1(PS1)和相位缓冲段2(PS2)

PS1、PS2用于补偿总上的边沿相位误差。通过再同步,可以延长PS1(或缩短PS2)。PS1可编程设定为1--8TQ,而PS2可编程设定为2--8TQ。

采样点

采样点是位时间内的一个时间点,在该时间点,读取总线电平并进行分析。采样点位于PS1的终点。当采样模式设置为每位采样3次时例外。这种情况下,在PS1的终点仍然对某一位进行采样时,前两次的采样时间间隔为TQ/2,而该位的值将根据三个采样值中至少两次采样的相同值决定。

信息处理时间(IPT)

信息处理时间是确定采样点的位电平所需要的时间。IPT从采样点开始,以TQ计算,Microchip的CAN模块将该时间长度定义为2TQ。PS2同样开始于采样点,且为位时间的最后一个时间段,因此PS2的最小值不能小于IPT。

                PS2min = IPT = 2TQ

同步跳转宽度

同步跳转宽度(SJW0)可通过编程设定为1--4TQ,他可对位时钟进行必要的调整来保持与发送报文同步。

时间份额

组成位时间的每个段都由时间份额(TQ)组成。每个时间份额长度取决于振荡器周期(tOSC)通常TQ为两个振荡器周期。TQ的长度等于一个TQ时钟周期(tBRPCLK),可利用波特率预分频器(BRP)对其进行编程设置。

 

 

STM32 CAN控制器的知识:

stm32复位后can处于睡眠模式,国际惯例在使用某个模块时最好先调用XXX_DeInit函数使该模块处于复位后的状态,can模块的函数为CAN_DeInit。

CAN_Init函数对can模块进行初始化,这里设置了:

  对寄存器 CAN bit timing register (CAN_BTR),当CAN处于初始化模式时,该寄存器只能由软件访问

CAN_Prescaler,位时序寄存器中的波特率分频器,取值范围:1 --- 1024;该位域定义了时间单元tq的长度  tq = (分频值+1)xtpclk;

CAN_Mode,位时序寄存器中的模式位,官方3.5.0固件库给出四个取值CAN_Mode_Normal (正常模式)、CAN_Mode_LoopBack (回环模式)、CAN_Mode_Silent (静默模式) 、CAN_Mode_Silent_LoopBack( 静默回环模式)。这个官方固件库的注释不正确请注意甄别;

CAN_SJW,位时序寄存器中的重新同步跳跃宽度,为了重新同步,该位域定义了CAN硬件在每位中可以延长或缩短多少个时间单元tq的上限。tRJW(重新同步跳跃宽度)=tcan x(SJW值+1)。这里的tcan对照中英文数据手册和固件库确认等于tq时间单元,这里数据手册里给出两个标识tcan和tq来表示时间宽度没搞懂为什么这么做。

CAN_BS1,位时序寄存器中的时间段1,该位域定义了时间段1占用了多少个tq时间单元,tBS1 = tcan x(时间段1值+1),此处tcan依旧等于tq;时间段1值取值:0 -- 15

CAN_BS2,位时序寄存器中的时间段2,该位域定义了时间段2占用了多少个tq时间单元,tBS2 = tcan x(时间段2值+1),此处tcan依旧等于tq;时间段1值取值:0 -- 7

  对寄存器CAN master control register (CAN_MCR)

TTCM:时间触发通信模式,禁止或允许;在时间触发通信模式下CAN硬件的内部定时器被激活,并且用于产生(发送与接收邮箱的)时间戳。

ABOM:自动离线管理,两种退出过程。

AWUM:自动唤醒模式,两种方式。

NART:禁止报文自动重传

RFLM:接收FIFO锁定模式

TXFP:发送FIFO优先级

待续

 

转载于:https://www.cnblogs.com/king-77024128/articles/3987778.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值