事情是这样,手里有2块STC32G12K128-Beta mcu的开发板,分别用作CAN标准帧的接收和发送实验。
AMRx寄存器全部配置为0FFH的情况下,一收一发表现正常。
现在,想开启对CAN数据标准帧的双滤波设置。收/发端的CANID都设置为0177H,接收端,仅接收不发送数据。按照 20240415 发布的文档第 963 页的说明,只想让接收端接收CANID以17H开头的CAN数据标准帧,做了如下设置:
- MOV A, #ACR0
- MOV B, #2EH
- LCALL CANWRITEREG
-
- MOV A, #ACR1
- MOV B, #00H
- LCALL CANWRITEREG
-
- MOV A, #ACR2
- MOV B, #00H
- LCALL CANWRITEREG
-
- MOV A, #ACR3
- MOV B, #00H
- LCALL CANWRITEREG
-
- MOV A, #AMR0
- MOV B, #00H
- LCALL CANWRITEREG
-
- MOV A, #AMR1
- MOV B, #0FFH
- LCALL CANWRITEREG
-
- MOV A, #AMR2
- MOV B, #0FFH
- LCALL CANWRITEREG
-
- MOV A, #AMR3
- MOV B, #0FFH
- CALL CANWRITEREG
-
- MOV A, #IMR
- MOV B, #0FFH
- CALL CANWRITEREG
-
- MOV A, #ISR
- MOV B, #0FFH
- CALL CANWRITEREG
-
- ; exit from reset mode
- MOV A, #MR
- MOV B, #00H
- CALL CANWRITEREG
-
- ; enable CAN interrupt
- MOV CANICR, #02H
- ; set CAN interrupt priority to #1
- ORL CANICR, #01H
- ANL CANICR, #NOT 08H
复制代码
其中,AMR0寄存器赋值为00H,表示只对CANID的高8位(ID.10 ~ ID.3)感兴趣,剩下的AMRx全部赋值为0FFH,表示对剩下的bit位不感兴趣。
那么,对应的,ACR0被赋值为2EH。上面这段代码也是这个意思。
问题:
把发送端的CANID改为0117H后,接收端仍然可以收到数据(并不显示数据,在中断里以led闪烁表示收到数据)
想请教下,是我哪里配置错了吗?
|