0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 CAN接收/發(fā)送錯(cuò)誤寄存器如何清零?

工程師鄧生 ? 來(lái)源:未知 ? 作者:劉芹 ? 2023-09-14 14:22 ? 次閱讀

STM32 CAN接收/發(fā)送錯(cuò)誤寄存器如何清零?

CAN總線(xiàn)是一種常用的串行總線(xiàn),其具有高可靠性、高速率、容錯(cuò)能力強(qiáng)等特點(diǎn),廣泛應(yīng)用于汽車(chē)電子、制造業(yè)自動(dòng)化、工程控制等領(lǐng)域。在CAN總線(xiàn)的標(biāo)準(zhǔn)中,每一個(gè)節(jié)點(diǎn)都有一個(gè)CAN控制器,CAN控制器通過(guò)內(nèi)部寄存器和接口與CAN總線(xiàn)連接。其中,在CAN傳輸過(guò)程中,如果出現(xiàn)錯(cuò)誤,會(huì)在CAN控制器內(nèi)部錯(cuò)誤寄存器中記錄錯(cuò)誤信息。因此,在使用STM32進(jìn)行CAN接收/發(fā)送時(shí),及時(shí)清零錯(cuò)誤寄存器是非常重要的。

一、STM32的CAN錯(cuò)誤寄存器

STM32是一款常用的單片機(jī),內(nèi)置了CAN控制器,其錯(cuò)誤寄存器分為兩種類(lèi)型:

1.接收錯(cuò)誤寄存器:即CAN接收錯(cuò)誤寄存器,用于記錄CAN接收過(guò)程中出現(xiàn)的錯(cuò)誤信息;

2.發(fā)送錯(cuò)誤寄存器:即CAN發(fā)送錯(cuò)誤寄存器,用于記錄CAN發(fā)送過(guò)程中出現(xiàn)的錯(cuò)誤信息。

這兩個(gè)寄存器都可以對(duì)系統(tǒng)診斷以及CAN總線(xiàn)的異常處理起到重要的作用。

二、接收錯(cuò)誤寄存器的清零

在CAN接收過(guò)程中,很容易出現(xiàn)錯(cuò)誤,這些錯(cuò)誤會(huì)被記錄在接收錯(cuò)誤寄存器中。如果不及時(shí)清零錯(cuò)誤寄存器,會(huì)影響后續(xù)的接收,并會(huì)對(duì)CAN節(jié)點(diǎn)的正常通訊產(chǎn)生影響。因此,在STM32進(jìn)行CAN接收時(shí),及時(shí)清零接收錯(cuò)誤寄存器是非常重要的。

清零接收錯(cuò)誤寄存器的方法如下:

首先,需要在代碼中使能CAN接收錯(cuò)誤中斷,當(dāng)出現(xiàn)錯(cuò)誤時(shí),會(huì)產(chǎn)生錯(cuò)誤中斷。其次,需要在接收錯(cuò)誤中斷函數(shù)中調(diào)用相應(yīng)的錯(cuò)誤寄存器清零函數(shù)。

在STM32的標(biāo)準(zhǔn)庫(kù)中,可以通過(guò)以下代碼清零CAN接收錯(cuò)誤寄存器:

CAN_ClearFlag(CANx, CAN_FLAG_RQCP0);

其中,CANx表示CAN1或者CAN2,CAN_FLAG_RQCP0表示CAN接收錯(cuò)誤寄存器中的錯(cuò)誤標(biāo)記。此函數(shù)會(huì)將接收錯(cuò)誤寄存器中的標(biāo)記位清零,以保證后續(xù)的接收正常進(jìn)行。

三、發(fā)送錯(cuò)誤寄存器的清零

在CAN發(fā)送過(guò)程中,也可能會(huì)發(fā)生錯(cuò)誤。如果不及時(shí)清零發(fā)送錯(cuò)誤寄存器,會(huì)影響后續(xù)的發(fā)送,并會(huì)對(duì)CAN節(jié)點(diǎn)的正常通訊產(chǎn)生影響。因此,在STM32進(jìn)行CAN發(fā)送時(shí),及時(shí)清零發(fā)送錯(cuò)誤寄存器也是非常重要的。

清零發(fā)送錯(cuò)誤寄存器的方法如下:

首先,需要在代碼中使能CAN發(fā)送錯(cuò)誤中斷,當(dāng)出現(xiàn)錯(cuò)誤時(shí),會(huì)產(chǎn)生錯(cuò)誤中斷。其次,需要在發(fā)送錯(cuò)誤中斷函數(shù)中調(diào)用相應(yīng)的錯(cuò)誤寄存器清零函數(shù)。

在STM32的標(biāo)準(zhǔn)庫(kù)中,可以通過(guò)以下代碼清零CAN發(fā)送錯(cuò)誤寄存器:

CAN_ClearFlag(CANx, CAN_FLAG_TERR0);

其中,CANx表示CAN1或者CAN2,CAN_FLAG_TERR0表示CAN發(fā)送錯(cuò)誤寄存器中的錯(cuò)誤標(biāo)記。此函數(shù)會(huì)將發(fā)送錯(cuò)誤寄存器中的標(biāo)記位清零,以保證后續(xù)的發(fā)送正常進(jìn)行。

四、總結(jié)

CAN總線(xiàn)的應(yīng)用范圍非常廣泛,其可靠性和容錯(cuò)能力強(qiáng)是其他總線(xiàn)不能比擬的。在STM32進(jìn)行CAN接收/發(fā)送過(guò)程中,及時(shí)清零錯(cuò)誤寄存器是非常重要的,它會(huì)對(duì)系統(tǒng)以及CAN總線(xiàn)輕松應(yīng)對(duì)一些異常情況產(chǎn)生積極的作用。通過(guò)清零CAN接收/發(fā)送錯(cuò)誤寄存器,可以提高系統(tǒng)的可靠性和穩(wěn)定性,同時(shí)避免一些可能會(huì)出現(xiàn)的通信問(wèn)題,確保應(yīng)用能夠順利進(jìn)行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44452

    瀏覽量

    630797
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5268

    瀏覽量

    119640
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2686

    瀏覽量

    462906
  • STM32
    +關(guān)注

    關(guān)注

    2262

    文章

    10846

    瀏覽量

    353677
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    同步清零和異步清零的概念、特點(diǎn)及應(yīng)用

    同步清零的原理 同步清零的實(shí)現(xiàn)通常依賴(lài)于觸發(fā)(Flip-Flop)或鎖存(Latch)。在同步清零中,觸發(fā)
    的頭像 發(fā)表于 07-23 11:12 ?928次閱讀

    怎么判斷同步清零和異步清零

    在數(shù)字電路設(shè)計(jì)中,清零操作是一種常見(jiàn)的操作,用于將寄存器或計(jì)數(shù)的值清零。清零操作可以分為同步清零
    的頭像 發(fā)表于 07-23 11:11 ?921次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類(lèi)型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?828次閱讀

    一文讀懂CAN通訊錯(cuò)誤

    錯(cuò)誤標(biāo)定檢測(cè)到錯(cuò)誤條件的站通過(guò)發(fā)送錯(cuò)誤標(biāo)志指示錯(cuò)誤。對(duì)于“錯(cuò)誤主動(dòng)”的節(jié)點(diǎn),錯(cuò)誤信息為“主動(dòng)
    的頭像 發(fā)表于 06-12 08:24 ?2288次閱讀
    一文讀懂<b class='flag-5'>CAN</b>通訊<b class='flag-5'>錯(cuò)誤</b>幀

    一文讀懂CAN控制錯(cuò)誤處理的原理

    CAN通訊的錯(cuò)誤幀到底是如何被界定的?本文帶你輕松了解!錯(cuò)誤標(biāo)定檢測(cè)到錯(cuò)誤條件的站通過(guò)發(fā)送錯(cuò)誤標(biāo)志指示錯(cuò)
    的頭像 發(fā)表于 04-26 08:25 ?1420次閱讀
    一文讀懂<b class='flag-5'>CAN</b>控制<b class='flag-5'>器</b><b class='flag-5'>錯(cuò)誤</b>處理的原理

    基于紫光FPGA的CAN控制系統(tǒng)架構(gòu)

    通過(guò)用戶(hù)接口管理配置,控制CAN寄存器的尋址。向位時(shí)序模塊、can發(fā)送模塊和can接收模塊提供配
    發(fā)表于 04-10 12:18 ?496次閱讀
    基于紫光FPGA的<b class='flag-5'>CAN</b>控制<b class='flag-5'>器</b>系統(tǒng)架構(gòu)

    STM32F413 CAN2過(guò)濾器寄存器設(shè)置不成功的原因?

    最近用到了STM32F413的CAN1、CAN2。調(diào)試CAN2時(shí),發(fā)現(xiàn)只能發(fā)送不能接收。仿真發(fā)現(xiàn)
    發(fā)表于 04-09 07:58

    使用STM8S的CAN總線(xiàn)為什么一直報(bào)發(fā)送錯(cuò)誤?

    有哪位朋友用過(guò)STM8S的CAN總線(xiàn),發(fā)個(gè)例程,讓小弟學(xué)學(xué)。我的自己寫(xiě),總是發(fā)生發(fā)送錯(cuò)誤
    發(fā)表于 03-18 06:20

    介紹一個(gè)IC設(shè)計(jì)錯(cuò)誤案例:可讀debug寄存器錯(cuò)誤跨時(shí)鐘

    本文將介紹一個(gè)跨時(shí)鐘錯(cuò)誤的案例如圖所示,phy_status作為一個(gè)多bit的phy_clk時(shí)鐘域的信號(hào),需要輸入csr模塊作為一個(gè)可讀狀態(tài)寄存器
    的頭像 發(fā)表于 03-11 15:56 ?427次閱讀
    介紹一個(gè)IC設(shè)計(jì)<b class='flag-5'>錯(cuò)誤</b>案例:可讀debug<b class='flag-5'>寄存器</b><b class='flag-5'>錯(cuò)誤</b>跨時(shí)鐘

    同步置數(shù),異步置數(shù),同步清零,異步清零的概念

    同步置數(shù)、異步置數(shù)、同步清零和異步清零是數(shù)字電路設(shè)計(jì)中常用的概念。 一、同步置數(shù) 同步置數(shù)是指在某一個(gè)特定的時(shí)鐘脈沖上,將寄存器或者特定的電路元件的值設(shè)置為一個(gè)確定的值。在同步置數(shù)中,設(shè)置值的動(dòng)作
    的頭像 發(fā)表于 02-22 13:48 ?1.3w次閱讀

    labview移位寄存器如何清零

    移位寄存器(Manual Shift Register,簡(jiǎn)稱(chēng)MSR)。ASR會(huì)在每次循環(huán)開(kāi)始時(shí)自動(dòng)清零,而MSR需要手動(dòng)控制。
    的頭像 發(fā)表于 01-05 13:49 ?2585次閱讀

    AD7858電能寄存器讀取時(shí)如何設(shè)置成讀不清零?

    AD7858電能寄存器讀取時(shí)如何設(shè)置成讀不清零,使能量就會(huì)累加上去
    發(fā)表于 12-26 07:36

    STM32串口的發(fā)送接收

    USART是STM32內(nèi)部集成的硬件外設(shè),可以根據(jù)數(shù)據(jù)寄存器的一個(gè)字節(jié)數(shù)據(jù)自動(dòng)生成數(shù)據(jù)幀時(shí)序,從TX引腳發(fā)送出去,也可以自動(dòng)接收RX引腳的數(shù)據(jù)幀時(shí)序,拼接成一個(gè)字節(jié)數(shù)據(jù),存放在數(shù)據(jù)
    的頭像 發(fā)表于 11-10 16:04 ?1301次閱讀
    <b class='flag-5'>STM32</b>串口的<b class='flag-5'>發(fā)送</b>和<b class='flag-5'>接收</b>

    stm32中串口寄存器USART_DR一次能接收多少位的數(shù)據(jù)?

    stm32中串口寄存器USART_DR一次能接收多少位的數(shù)據(jù)? STM32是意法半導(dǎo)體(STMicroelectronics)公司生產(chǎn)的基于A(yíng)RM Cortex-M內(nèi)核的微控制
    的頭像 發(fā)表于 10-26 11:31 ?2086次閱讀

    STM32請(qǐng)問(wèn)串口要發(fā)送數(shù)據(jù)“1”該怎么賦值給USART-&gt;DR寄存器?

    STM32請(qǐng)問(wèn)串口要發(fā)送數(shù)據(jù)“1”該怎么賦值給USART-DR寄存器? 首先,我們需要了解一下STM32的串口通信模塊。 STM32的串口通
    的頭像 發(fā)表于 10-26 11:30 ?950次閱讀