这篇**默认若干细节已经被知道了:
CAN 消息 ID 的组成
CAN 消息的 ID 的竞争的原理(类似“线与”的特性)
另外,没有照搬 ST 的参考手册,翻译一遍也没啥意义。
但是,手册一定要读,如果想对自己的代码彻底放心的话。
也没有放代码,硬件配置相关的操作,放代码没有多大意义。
总体原则
STM32 的 CAN 收发的总体原则是,硬件邮箱(就是几组发送缓存)发送,硬件 FIFO 接受。
要知道 滤波器的配置仅和接收有关;发送的消息的 ID 是组包时“随意”写的(这里的随意是指,硬件没有做限制)。
滤波器配置的核心资源是 filter banks,这是一组外设寄存器,它们的配置和使用是相当灵活的(通过若干个相关寄存器的设置)。
相关寄存器的名字啊,配置细节啊,还是参考手册吧,这里就不堆砌了。
filter banks
假设有 28 个 filter banks,那么这 28 FB 是可以任意被分配给 FIFO0 或者 FIFO1 的(有个寄存器,忘记叫啥名字了)。
Each filter bank i is composed of two 32-bit registers. ——每个 filter bank 都是成对的 32bit 的寄存器。
为什么会有两个呢?这两个该怎么用呢?
|