STM32单片机bxCAN的工作模式解析.doc
《STM32单片机bxCAN的工作模式解析.doc》由会员分享,可在线阅读,更多相关《STM32单片机bxCAN的工作模式解析.doc(5页珍藏版)》请在三一文库上搜索。
1、STM32单片机bxCAN的工作模式解析1 bxCAN工作模式bxCAN有3个主要的工作模式:初始化模式、正常模式和睡眠模式。在硬件复位后,bxCAN工作在睡眠模式以节省电能,同时CANTX引脚的内部上拉电阻被激活。软件通过对CAN_MCR寄存器的INRQ或SLEEP位置1,可以请求bxCAN进入初始化或睡眠模式。一旦进入了初始化或睡眠模式,bxCAN就对CAN_MSR寄存器的INAK或SLAK位置1来进行确认,同时内部上拉电阻被禁用。当INAK和SLAK位都为0时,bxCAN就处于正常模式。在进入正常模式前,bxCAN必须跟CAN总线取得同步;为取得同步,bxCAN要等待CAN总线达到空闲状
2、态,即在CANRX引脚上监测到11个连续的隐性位。1.1 初始化模式软件初始化应该在硬件处于初始化模式时进行。设置CAN_MCR寄存器的INRQ位为1,请求bxCAN进入初始化模式,然后等待硬件对CAN_MSR寄存器的INAK位置1来进行确认。清除CAN_MCR寄存器的INRQ位为0,请求bxCAN退出初始化模式,当硬件对CAN_MSR寄存器的INAK位清0就确认了初始化模式的退出。当bxCAN处于初始化模式时,禁止报文的接收和发送,并且CANTX引脚输出隐性位(高电平)。初始化模式的进入,不会改变配置寄存器。软件对bxCAN的初始化,至少包括位时间特性(CAN_BTR)和控制(CAN_MCR
3、)这2个寄存器。在对bxCAN的过滤器组(模式、位宽、FIFO关联、激活和过滤器值)进行初始化前,软件要对CAN_FMR寄存器的FINIT位设置1。对过滤器的初始化可以在非初始化模式下进行。注: 当FINIT=1时,报文的接收被禁止。可以先对过滤器激活位清0(在CAN_FA1R中),然后修改相应过滤器的值。如果过滤器组没有使用,那么就应该让它处于非激活状态(保持其FACT位为清0状态)。1.2 正常模式在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文。软件可以通过对CAN_MCR寄存器的INRQ位清0,来请求从初始化模式进入正常模式,然后要等待硬件对CAN_MSR寄存器的IN
4、AK位置1的确认。在跟CAN总线取得同步,即在CANRX引脚上监测到11个连续的隐性位(等效于总线空闲)后,bxCAN才能正常接收和发送报文。不需要在初始化模式下进行过滤器初值的设置,但必须在它处在非激活状态下完成(相应的FACT位为0)。而过滤器的位宽和模式的设置,则必须在初始化模式中进入正常模式前完成。1.3 睡眠模式(低功耗)bxCAN可工作在低功耗的睡眠模式。软件通过对CAN_MCR寄存器的SLEEP位置1,来请求进入这一模式。在该模式下,bxCAN的时钟停止了,但软件仍然可以访问邮箱寄存器。当bxCAN处于睡眠模式,软件必须对CAN_MCR寄存器的INRQ位置1并且同时对SLEEP位
5、清0,才能进入初始化模式。有2种方式可以唤醒(退出睡眠模式)bxCAN:通过软件对SLEEP位清1,或硬件检测到CAN总线的活动。如果CAN_MCR寄存器的AWUM位为1,一旦检测到CAN总线的活动,硬件就自动对SLEEP位清0来唤醒bxCAN。如果CAN_MCR寄存器的AWUM位为0,软件必须在唤醒中断里对SLEEP位清0才能退出睡眠状态。注: 如果唤醒中断被允许(CAN_IER寄存器的WKUIE位为1),那么一旦检测到CAN总线活动就会产生唤醒中断,而不管硬件是否会自动唤醒bxCAN。在对SLEEP位清0后,睡眠模式的退出必须与CAN总线同步,当硬件对SLAK位清0时,就确认了睡眠模式的退
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 单片机 bxCAN 工作 模式 解析
链接地址:https://www.31doc.com/p-3273608.html