目录
过滤器
由上图可知的是,CAN1、CAN2共用28个过滤器(bxCAN中最多有28个过滤器)。通过CAN_FMR 寄存器的设置,可以设置过滤器的分配方式。
STM32F1 每个过滤器组可提供:
- 1 个 32 位过滤器,包括:STDID[10:0]、EXTID[17:0]、IDE 和 RTR位
- 2 个 16 位过滤器,包括:STDID[10:0]、IDE、RTR 和 EXTID[17:15]位
可配置为:屏蔽位模式,标识符列表模式
- 屏蔽位模式:标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按 照“必须匹配”或“不用关心”处理。
- 标识符列表模式:此模式下,屏蔽寄存器被当作标识符寄存器用。所以这里是使用两个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同。
CAN_FMR 寄存器
- 为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。
- 为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。
- 应用程序不用的过滤器组,应该保持在禁用状态。
位时序
由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。
一个位可分为 4 段:
- 同步段(SS)
- 传播时间段(PTS)
- 相位缓冲段 1(PBS1)
- 相位缓冲段 2(PBS2)
这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。
- 1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。
- 1位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以任意设定位时序。通过设定 位时序,多个单元可同时采样,也可任意设定采样点。
段名称 | 段的作用 | Tq 数 | |
同步段 SS | 多个连接在总线上的单元通过此段实现时序 调整,同步进行接收和发送的工作。由隐性电 平到显性电平的边沿或由显性电平到隐性电 平边沿最好出现在此段中。 | 1Tq | 8~25Tq |
传播时间段 PTS | 用于吸收网络上的物理延迟的段 物理延迟指的就是传播过程中会出现的延迟 这个段的时间为以上各延迟时间的和的两倍。 | 1~8Tq | |
相位缓冲段 1 PBS1 | 当信号边沿不能被包含于 SS 段中时,可在此 段进行补偿。 由于各单元以各自独立的时钟工作,细微的时 钟误差会累积起来,PBS 段可用于吸收此误 差。 通过对相位缓冲段加减 SJW 吸收误差。SJW 加大后允许误差加大,但 通信速度下降。 | 1~8Tq | |
相位缓冲段 2 PBS2 | 2~8Tq | ||
再同步补偿宽度 SJW | 因时钟频率偏差、传送延迟等,各单元有同步 误差。SJW 为补偿此误差的最大值。 | 1~4Tq |
1个位构成图如下
- CAN挂靠在APB1(一般为36Mhz)总线下
- 波特率计算公式为1/(tq+tbs1+tbs2)
环回模式和静默模式
环回模式
在环回模式下,bxCAN 把发送的报文当作接收的报文并保存(如果可以通过接收过滤)在接 收邮箱里。也就是环回模式是一个自发自收的模式。
- 环回模式可用于自测试
- 在环回模式下,bxCAN 在内部把 Tx 输出 回馈到 Rx 输入上,而完全忽略 CANRX 引脚的实际状态。发送的报文可以在 CANTX 引脚上 检测到。
静默模式
在静默模式下,bxCAN可以正常地接收数据帧和远程帧,但只能发出隐性位,而不能真正发送 报文。
- 静默模式通常用于分析CAN总线的活动,而不会对总线造成影响-显性位(确认位、 错误帧)不会真正发送到总线上。
环回静默模式
该模式可用于 “热自测试”,即可以像环回模式那样测试bxCAN,但却不会影响CANTX和CANRX所连接的 整个CAN系统。在环回静默模式下,CANRX引脚与CAN总线断开,同时CANTX引脚被驱动到 隐性位状态