STM8 CAN 标识符过滤器理解 CAN 的两座大山一座是位时间和同步昨天被我们推倒后紧接着今天另一座标识符过滤器再一次被我们打倒,下面是我的理解如有误高手请拍砖! STM8 的 CAN 有 6 个过滤器组: 根据配置,每 1 组过滤器组可以有1 个 ,2 个或4 个过滤器. 这些过滤器相当于关卡,每当收到一条报文时,CAN 要先将收到的报文 从这些过滤器上"过滤"一下,能通过的报文是有效报文 ,收进FIFO 中 , 不能通过的是无效报文(不是发给"我 "的报文),直接丢弃. 所有的过滤器是并联的,即 ,一个报文只要通过了一个过滤器,就是算是有效的. 每组过滤器组有两种工作模式: 标识符列表模式,标识符屏蔽位模式. 在标识符列表模式下,收到报文的标识符必须与过滤器的值完全相等,才能通过. 在标识符屏蔽位模式下,可以指定标识符的哪些位为何值时,才能通过.这其实就是限定了处于某一范围的标识符能够通过. 在一组过滤器中,整组的过滤器都使用同一种工作模式 . 另外,每组过滤器中的过滤器宽度是可变的,可以是 32、 16、 8 位 由工作模式和宽度,一个过滤器组可以变成以下几中形式之一: (1) 1 个 32 位的屏蔽位模式的过滤器。 2 个 32 位的列表模式的过滤器。 (2) 2 个 16 位的屏蔽位模式的过滤器。 4 个 16 位的列表模式的过滤器。 2 个 16 位的列表模式过滤器和1 个屏蔽位模式过滤器。 (3)1 个 16 位的屏蔽位模式的过滤器和2 个 8 位屏蔽位模式的过滤器。 2 个 16 位的列表模式的过滤器和2 个 8 位的屏蔽位模式的过滤器。 1 个 16 位的屏蔽位模式的过滤器和4 个 8 位的列表模式的过滤器。 2 个 16 位的列表模式过滤器和4 个 8 位的列表模式的过滤器。 (4) 4 个 8 位的屏蔽位模式的过滤器。 4 个 8 位列表模式的过滤器和2 个 8 位的屏蔽位模式的过滤器。 8 个 8 位的列表模式的过滤器。 所有的过滤器是并联的,即 ,一个报文只要通过了一个过滤器,就是算是有效的. 每组过滤器组有8个 8位的寄存器用于存储过滤用的"标准值",分别是CAN_FxRi[i(1...8),x(0...8)] 在 32 位的屏蔽位模式下: 有 1 个过滤器, FxR[5...8]用于指定需要关心哪些位,FxR[1...4]用于指定这些位的标准值 在 32 位的列表模式下: 有两个过滤器. FxR[1...4]指定过滤器0 的标准值,收到报文的标识符只有跟FxR[1...4]完全相同时,才算通过. FxR[5...8]指定过滤器1 的标准值. 在 16 位...