0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32 CAN接收/发送错误寄存器如何清零?

工程师邓生 来源:未知 作者:刘芹 2023-09-14 14:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32 CAN接收/发送错误寄存器如何清零?

CAN总线是一种常用的串行总线,其具有高可靠性、高速率、容错能力强等特点,广泛应用于汽车电子、制造业自动化、工程控制等领域。在CAN总线的标准中,每一个节点都有一个CAN控制器,CAN控制器通过内部寄存器和接口与CAN总线连接。其中,在CAN传输过程中,如果出现错误,会在CAN控制器内部错误寄存器中记录错误信息。因此,在使用STM32进行CAN接收/发送时,及时清零错误寄存器是非常重要的。

一、STM32的CAN错误寄存器

STM32是一款常用的单片机,内置了CAN控制器,其错误寄存器分为两种类型:

1.接收错误寄存器:即CAN接收错误寄存器,用于记录CAN接收过程中出现的错误信息;

2.发送错误寄存器:即CAN发送错误寄存器,用于记录CAN发送过程中出现的错误信息。

这两个寄存器都可以对系统诊断以及CAN总线的异常处理起到重要的作用。

二、接收错误寄存器的清零

在CAN接收过程中,很容易出现错误,这些错误会被记录在接收错误寄存器中。如果不及时清零错误寄存器,会影响后续的接收,并会对CAN节点的正常通讯产生影响。因此,在STM32进行CAN接收时,及时清零接收错误寄存器是非常重要的。

清零接收错误寄存器的方法如下:

首先,需要在代码中使能CAN接收错误中断,当出现错误时,会产生错误中断。其次,需要在接收错误中断函数中调用相应的错误寄存器清零函数。

在STM32的标准库中,可以通过以下代码清零CAN接收错误寄存器:

CAN_ClearFlag(CANx, CAN_FLAG_RQCP0);

其中,CANx表示CAN1或者CAN2,CAN_FLAG_RQCP0表示CAN接收错误寄存器中的错误标记。此函数会将接收错误寄存器中的标记位清零,以保证后续的接收正常进行。

三、发送错误寄存器的清零

在CAN发送过程中,也可能会发生错误。如果不及时清零发送错误寄存器,会影响后续的发送,并会对CAN节点的正常通讯产生影响。因此,在STM32进行CAN发送时,及时清零发送错误寄存器也是非常重要的。

清零发送错误寄存器的方法如下:

首先,需要在代码中使能CAN发送错误中断,当出现错误时,会产生错误中断。其次,需要在发送错误中断函数中调用相应的错误寄存器清零函数。

在STM32的标准库中,可以通过以下代码清零CAN发送错误寄存器:

CAN_ClearFlag(CANx, CAN_FLAG_TERR0);

其中,CANx表示CAN1或者CAN2,CAN_FLAG_TERR0表示CAN发送错误寄存器中的错误标记。此函数会将发送错误寄存器中的标记位清零,以保证后续的发送正常进行。

四、总结

CAN总线的应用范围非常广泛,其可靠性和容错能力强是其他总线不能比拟的。在STM32进行CAN接收/发送过程中,及时清零错误寄存器是非常重要的,它会对系统以及CAN总线轻松应对一些异常情况产生积极的作用。通过清零CAN接收/发送错误寄存器,可以提高系统的可靠性和稳定性,同时避免一些可能会出现的通信问题,确保应用能够顺利进行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45357

    浏览量

    664225
  • 寄存器
    +关注

    关注

    31

    文章

    5590

    浏览量

    129159
  • CAN
    CAN
    +关注

    关注

    58

    文章

    3017

    浏览量

    471640
  • STM32
    +关注

    关注

    2306

    文章

    11124

    浏览量

    371346
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用位操作精准配置单片机寄存器

    清零整个寄存器​注意寄存器的读写顺序: REG |= (1 << BIT_POS);// 先读取 REG,然后置位​可能导致竞态问题,可使用: disable_irq();REG |= (1 << BI
    发表于 11-24 07:22

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    移位寄存器和存储寄存器提供时钟。移位寄存器具有一个直接覆盖清零 (SRCLR) 输入以及用于级联结构的串行 (SER) 输入和串行输出 (QH’)。当输出使能 (OE) 输入置为高电平
    的头像 发表于 09-19 14:31 624次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    SN74LV594A:2-5.5V带输出寄存器的8位移位寄存器技术解析

    AEC-Q100标准,采用可湿性侧翼QFN (WBQB) 封装。TI SN74LV594A/-Q1可在移位寄存器和存储寄存器上进行独立直接覆盖清零
    的头像 发表于 09-02 09:42 630次阅读
    SN74LV594A:2-5.5V带输出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>技术解析

    Texas Instruments SN74AHC165/SN74AHC165-Q1 SIPO移位寄存器数据手册

    位D型存储寄存器。这些存储寄存器具有并行三态输出。为存储寄存器和移位寄存器提供单独的时钟。移位寄存器具有串行 (SER) 输入、直接覆盖
    的头像 发表于 08-11 15:31 852次阅读
    Texas Instruments SN74AHC165/SN74AHC165-Q1 SIPO移位<b class='flag-5'>寄存器</b>数据手册

    Texas Instruments SN74AHCT165/SN74AHCT165-Q1 SIPO移位寄存器数据手册

    位D型存储寄存器。这些存储寄存器具有并行三态输出。为存储寄存器和移位寄存器提供单独的时钟。移位寄存器具有串行 (SER) 输入、直接覆盖
    的头像 发表于 08-11 14:55 861次阅读
    Texas Instruments SN74AHCT165/SN74AHCT165-Q1 SIPO移位<b class='flag-5'>寄存器</b>数据手册

    Texas Instruments SN74AHCT594/SN74AHCT594-Q1 8位移位寄存器数据手册

    Texas Instruments SN74AHCT594/SN74AHCT594-Q1 8位移位寄存器包含一个为8位D型存储寄存器提供数据的8位串行输入、并行输出移位寄存器。移位寄存器
    的头像 发表于 08-01 15:16 936次阅读
    Texas Instruments SN74AHCT594/SN74AHCT594-Q1 8位移位<b class='flag-5'>寄存器</b>数据手册

    Texas Instruments SN74AHC594/SN74AHC594-Q1 8位移位寄存器数据手册

    和存储寄存器提供独立的时钟和直接覆盖清零(RCLR、RCLR)输入。提供串行(QH′)输出,用于级联。Texas Instruments SN74AHC594-Q1器件通过了AEC-Q100汽车应用认证。
    的头像 发表于 08-01 14:58 899次阅读

    Texas Instruments SN74LVC166A 8位并联负载移位寄存器数据手册

    Texas Instruments SN74LVC166A 8位并行加载移位寄存器包含一个8位并行加载移位寄存器。数据通过移位或加载(SH/LD)选择和时钟(CLK)输入同步加载。Texas
    的头像 发表于 07-24 14:43 517次阅读
    Texas Instruments SN74LVC166A 8位并联负载移位<b class='flag-5'>寄存器</b>数据手册

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 1061次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    STM32F743的canfd错误寄存器,TEC,REC等信息怎么复位?

    STM32F743的canfd错误寄存器,TEC,REC等信息怎么复位?重新初始化后寄存器值仍然保持。
    发表于 03-14 07:04

    【答疑】网关返回错误?Modbus地址与寄存器地址别混淆!

    与PLC的错误灯都在闪烁。技术人员在为客户提供技术支持时发现,大部分客户都是因为将“寄存器的Modbus地址”当成“寄存器地址”配置到了网关,导致网关读写到错误的寄
    的头像 发表于 03-06 19:33 1200次阅读
    【答疑】网关返回<b class='flag-5'>错误</b>?Modbus地址与<b class='flag-5'>寄存器</b>地址别混淆!

    ads1248对寄存器先写再读回,dout输出始终为,为什么?

    调试了一周时间,对ads1248的写操作仍未成功,对寄存器先写再读回,dout输出始终为。spi时序都满足要求,reset和start始终高电平,先发送一个字节的写操作指令和寄存器
    发表于 02-06 08:32

    纳祥科技74HC595D,一款应用于LED广告显示屏的低功耗3态8位移位寄存器

    74HC595D是一颗高速寄存器 / 输出锁存芯片,采用CMOS硅栅工艺,它包含一个8位串行输入与并行输出移位寄存器,并提供一个8位D型存储寄存器,具有8位3态输出,分别提供独立的时
    的头像 发表于 02-05 17:21 900次阅读
    纳祥科技74HC595D,一款应用于LED广告显示屏的低功耗3态8位移位<b class='flag-5'>寄存器</b>

    STM32驱动ADS7952时怎么配置AD的寄存器

    STM32驱动ADS7952时不懂怎么配置AD的寄存器,不知道发送什么数据偶去才能使它工作,PDF看不懂,貌似要发很多次不同的数据,请尽快求解
    发表于 01-02 07:08

    STM32F407和ADS8684进行SPI通信,寄存器怎么配置?

    通过STM32F407和ADS8684进行SPI通信,阅读了ADS8684的手册,配置STM32F407为主,CPOL为0,CPHA为1,这样对吗? 配置好后应该先设置ADS8684的程序寄存器还是
    发表于 12-20 06:25