STM32上的CAN通讯是什么?CAN模式功能的详细分析 CAN模式
一.工作模式 通过CAN_MCR寄存器控制INRQ和SLEEP 1.初始化INRQ=1 SLEEP=0 软件初始化应该在硬件 2.正常INRQ=0 SLEEP=0 在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文 3.睡眠SLEEP=1 bxCAN可工作在低功耗的睡眠模式 二.测试模式 通过CAN_BTR寄存器控制LBKM和SILM 1. 静默 可以接受不能发送
2. 循回 可以发送不能接受 3.环回静默 只能自发自收
三.调试模式
STM32标识符筛选器
在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的优先级相关的。因此,节点在接收报文时-根据标识符的值-决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。为满足这一需求,bxCAN为应用程序提
供了14个位宽可变的、可配置的过滤器组(13~0),以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件过滤从而占用一定的CPU开销。
STM32普通型芯片的 CAN 有14组过滤器组(互联型有28组过滤器组) ,用以对接收到的帧进行过滤。每组过滤器包括了2个可配置的32位寄存器:CAN_FxR1和 CAN_FxR2。对于过滤器组,通过设置CAN_FM0R的FBMx位, 1.屏蔽位模式 这样 CAN_FxR0中保存的就是标识符匹配值,CAN_FxR2中保存的是屏蔽码,即 CAN_FxR2中如果某一位为1,则 CAN_FxR1中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器。CAN_FxR2中为0的位表示 CAN_FxR1中的相应位可不必与收到的帧进行匹配。
2.标识符列表模式 此时 CAN_FxR1和CAN_FxR2中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。