欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    STM32单片机bxCAN的工作模式解析.doc

    • 资源ID:3273608       资源大小:23KB        全文页数:5页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    STM32单片机bxCAN的工作模式解析.doc

    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总线达到空闲状态,即在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)这2个寄存器。在对bxCAN的过滤器组(模式、位宽、FIFO关联、激活和过滤器值)进行初始化前,软件要对CAN_FMR寄存器的FINIT位设置1。对过滤器的初始化可以在非初始化模式下进行。注: 当FINIT=1时,报文的接收被禁止。可以先对过滤器激活位清0(在CAN_FA1R中),然后修改相应过滤器的值。如果过滤器组没有使用,那么就应该让它处于非激活状态(保持其FACT位为清0状态)。1.2 正常模式在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文。软件可以通过对CAN_MCR寄存器的INRQ位清0,来请求从初始化模式进入正常模式,然后要等待硬件对CAN_MSR寄存器的INAK位置1的确认。在跟CAN总线取得同步,即在CANRX引脚上监测到11个连续的隐性位(等效于总线空闲)后,bxCAN才能正常接收和发送报文。不需要在初始化模式下进行过滤器初值的设置,但必须在它处在非激活状态下完成(相应的FACT位为0)。而过滤器的位宽和模式的设置,则必须在初始化模式中进入正常模式前完成。1.3 睡眠模式(低功耗)bxCAN可工作在低功耗的睡眠模式。软件通过对CAN_MCR寄存器的SLEEP位置1,来请求进入这一模式。在该模式下,bxCAN的时钟停止了,但软件仍然可以访问邮箱寄存器。当bxCAN处于睡眠模式,软件必须对CAN_MCR寄存器的INRQ位置1并且同时对SLEEP位清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时,就确认了睡眠模式的退出。2 测试模式通过对CAN_BTR寄存器的SILM和/或LBKM位置1,来选择一种测试模式。只能在初始化模式下,修改这2位。在选择了一种测试模式后,软件需要对CAN_MCR寄存器的INRQ位清0,来真正进入测试模式。2.1 静默模式通过对CAN_BTR寄存器的SILM位置1,来选择静默模式。在静默模式下,bxCAN可以正常地接收数据帧和远程帧,但只能发出隐性位,而不能真正发送报文。如果bxCAN需要发出显性位(确认位、过载标志、主动错误标志),那么这样的显性位在内部被接回来从而可以被CAN内核检测到,同时CAN总线不会受到影响而仍然维持在隐性位状态。因此,静默模式通常用于分析CAN总线的活动,而不会对总线造成影响显性位(确认位、错误帧)不会真正发送到总线上。图12.2 环回模式通过对CAN_BTR寄存器的LBKM位置1,来选择环回模式。在环回模式下,bxCAN把发送的报文当作接收的报文并保存(如果可以通过接收过滤)在接收邮箱里。环回模式可用于自测试。为了避免外部的影响,在环回模式下CAN内核忽略确认错误(在数据/远程帧的确认位时刻,不检测是否有显性位)。在环回模式下,bxCAN在内部把Tx输出回馈到Rx输入上,而完全忽略CANRX引脚的实际状态。发送的报文可以在CANTX引脚上检测到。2.3 环回静默模式通过对CAN_BTR寄存器的LBKM和SILM位同时置1,可以选择环回静默模式。该模式可用于“热自测试”,即可以象环回模式那样测试bxCAN,但却不会影响CANTX和CANRX所连接的整个CAN系统。在环回静默模式下,CANRX引脚与CAN总线断开,同时CANTX引脚被驱动到隐性位状态。图33 如何设置工作模式固件接口如下:/*briefSelectstheCANOperationmode.*paramCAN_OperaTIngMode:CANOperaTIngMode.*ThisparametercanbeoneofrefCAN_OperaTIngMode_TypeDefenumeraTIon.*retvalstatusoftherequestedmodewhichcanbe*-CAN_ModeStatus_Failed:CANfailedenteringthespecificmode*-CAN_ModeStatus_Success:CANSucceedenteringthespecificmode*/uint8_tCAN_OperatingModeRequest(CAN_TypeDef*CANx,uint8_tCAN_OperatingMode);CAN_operating_mode如下定义:/*defgroupCAN_operating_mode*/#defineCAN_OperatingMode_Initialization(uint8_t)0x00)/*!#defineCAN_OperatingMode_Normal(uint8_t)0x01)/*!#defineCAN_OperatingMode_Sleep(uint8_t)0x02)/*!4 如何设置测试模式/*defgroupCAN_operating_mode*/#defineCAN_Mode_Normal(uint8_t)0x00)/*!#defineCAN_Mode_LoopBack(uint8_t)0x01)/*!#defineCAN_Mode_Silent(uint8_t)0x02)/*!#defineCAN_Mode_Silent_LoopBack(uint8_t)0x03)/*!在CAN初始化函数接口CAN_Init调用时,使用CAN_TypeDef类型的CAN_Mode定义了CAN的测试模式,其值如上所定义。如下所示:CAN_DeInit(CAN1);CAN_StructInit(/。.CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;/正常模式,或者设置为测试模式/。.if(CAN_Init(CAN1,">/。./。.5 控制和状态寄存器5.1 CAN主控制寄存器 (CAN_MCR)地址偏移量: 0x00复位值: 0x0001 0002

    注意事项

    本文(STM32单片机bxCAN的工作模式解析.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开