历史上的今天
今天是:2025年04月12日(星期六)
2019年04月12日 | stm32之CAN发送、接收详解
2019-04-12 来源:eefocus
CAN接收报文并过滤之标识符过滤:(重点、难点)
在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时-根据标识符的值-决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。
为满足这一需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(13~0),以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件过滤从而占用一定的CPU开销。每个过滤器组x由2个32位寄存器,CAN_FxR0和CAN_FxR1组成。这两个寄存器用途在下面有大用处;
可变的位宽:
每个过滤器组的位宽都可以独立配置,以满足应用程序的不同需求。根据位宽的不同,每个过滤器组可提供:
1个32位过滤器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位===用于扩展ID(28位)和标准ID(11位)
2个16位过滤器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位====只用于标准ID
可参见图126
此外过滤器可配置为,屏蔽位模式和标识符列表模式。
屏蔽位模式
在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。
标识符列表模式
在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用1个标识符加1个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须
跟过滤器标识符相同。

BxCAN过滤器的编号
在stm32中,过滤器编号用于加速CPU对收到报文的处理。当受到一个有效报文时,BxCAN会将收到的报文以及它所通过的过滤器编号,一起存入邮箱中。当CPU处理时,可以根据过滤器编号,快速地知道该报文的用途,从而做出处理。其实,不用过滤器编号也是可以的,这时CPU就要分析所收到报文的标识符,从而知道报文的用途。由于标识符所含的信息较多,处理起来就相对慢一些;

报文存储
邮箱是软件和硬件之间关于报文的接口。邮箱包含了所有跟报文有关的信息:标识符、数据、控制、状态和时间戳信息。
发送邮箱
软件需要在一个空的发送邮箱中,把待发送报文的各种信息设置好(然后再发出发送的请求)。发送的状态可通过查询CAN_TSR寄存器获知。
接收邮箱(FIFO)
在接收到一个报文后,软件就可以访问接收FIFO的输出邮箱来读取它。一旦软件处理了报文(如把它读出来),软件就应该对CAN_RFxR寄存器的RFOM位进行置1,来释放该报文,以便为后面收到的报文留出存储空间。过滤器匹配序号存放在CAN_RDTxR寄存器的FMI域中。16位的时间戳存放在CAN_RDTxR寄存器的TIME[15:0]域中。

邮箱中保存的是完整的报文信息;解析邮箱参见手册;

时间特性:(涉及波特率的计算)
位时间特性逻辑通过采样来监视串行的CAN总线,并且通过跟帧起始位的边沿进行同步,及通过跟后面的边沿进行重新同步,来调整其采样点。它的操作可以简单解释为,如
下所述把名义上的每位的时间分为3段:
同步段(SYNC_SEG):通常期望位的变化发生在该时间段内。其值固定为1个时间单元(1 x tCAN)。
时间段1(BS1):定义采样点的位置。它包含CAN标准里的PROP_SEG和PHASE_SEG1。其值可以编程为1到16个时间单元,但也可以被自动延长,以补偿因为网络中不同节点的频率差异所造成的相位的正向漂移。
时间段2(BS2):定义发送点的位置。它代表CAN标准里的PHASE_SEG2。其值可以编程为1到8个时间单元,但也可以被自动缩短以补偿相位的负向漂移。
重新同步跳跃宽度(SJW)定义了,在每位中可以延长或缩短多少个时间单元的上限。其值可以编程为1到4个时间单元。

史海拾趣
|
先楫官方工程师干货:HPM6000电源管理系统功能和特性、功耗实测 作者:先楫应用工程师全立 本文介绍了HPM6000电源管理系统功能和特性,低功耗管理系统的功能和特性,低功耗应用开发的示例,最后基于HPM6300EVK开发板测试验证了HPM6300 MCU在各个电源模式下的功耗指标,方便用户快速评估和上 ...… 查看全部问答> |
|
EEPROM擦写频率 EEPROM擦写频率怎么理解?怎么根据擦写频率选择EEPROM还是flash?比如如下这个案列 每100ms采集一次数据,每秒存20个字节(实际使用清空EEPROM存储的数据是每周清除三次,这个是否也是擦写频率的一种?) ...… 查看全部问答> |
|
本帖最后由 毛球大大 于 2022-11-9 19:51 编辑 作为第四次工业革命的重要基石,工业互联网为产业数字化提供了关键基础设施支撑和产业生态基础,成为数字经济创新发展的关键支撑。工业互联网的应用场景正在由销售、物流等 ...… 查看全部问答> |
|
Qorvo:新的 “Matter” 协议是智能家居物联网市场增长的关键 预计今年晚些时候,连接物联网设备的新 Matter 标准将最终确定。如果您正在研究任何类型的智能家居解决方案,那么您有充分的理由对新的 “Matter”协议将为 Wi-Fi (和其他连接技术)带来的改变感到兴奋。 Qorvo 表示,“ ...… 查看全部问答> |
|
什么是Matter Matter 是智能家居无线连接技术的一种开放标准协议,可使家庭设备可以与任何经过Matter认证的Matter生态系统产品互联互通。 Matter技术小解 Matter是一个应用层规范,能够在任何支持IPv6的设备上运行。最初规范中支持的网络 ...… 查看全部问答> |
|
反射系数Γ,回波损耗RL和电压驻波比VSWR。但是这三个名词描述的其实是一个意思:反射波和入射波之间的关系。 反射系数Γ,回波损耗RL和电压驻波比VSWR之间的关系如下: 既然是一个意思,居然用了三个名词来描述,也足见反射在射频设 ...… 查看全部问答> |
|
看到eeworld负责人发的e络盟有活动,赶紧上去看看,果然有活动,刚好最近DIY有需要用到电容,就买了几颗1000uF 35V和680uF 25V的电容,都是PANASONIC的,SF快递上海仓发货,三天就到了,非常快,哈哈,生命在于折腾,生命不息,折腾不止 &nb ...… 查看全部问答> |
|
micropython新书《用 MicroPython 开发 Raspberry Pi Pico W》 本周发布了一本新书:用 MicroPython 开发 Raspberry Pi Pico W :Miguel Grinberg 用 Python 编程数字电路的简要介绍 欢迎阅读《用于 Raspberry Pi Pico W 的 MicroPython》,这本书将向您介绍令人兴奋的微控制器和小型互 ...… 查看全部问答> |
|
Pimoroni银河独角兽开发板有一个巨大的 53 x 11 (583) RGB LED 矩阵,带有放大器和扬声器,核心是运行 Pimoroni 的 MicroPython 分支的 Raspberry Pi Pico W。 LED 可以在 14 位精度下以 300 fps 刷新。 技术指标: ...… 查看全部问答> |
|
Q、隔离型与非隔离型产品有何不同? A、隔离型的一次侧(AC线路)和二次侧(DC输出)是分离的,因此触电风险更低。而非隔离型的一次侧和二次侧是连接的,因此有触电的风险。 有些应用需要隔离型,有些则不需要。 Q、将IC的“NC ...… 查看全部问答> |




