女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

STM32速成筆記(14)—CAN通信

冬至子 ? 來源:二土電子 ? 作者:二土電子 ? 2023-10-24 15:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、CAN通信簡介

1.1 CAN簡介

CAN全稱是Controller Area Network,控制器局域網(wǎng)絡(luò),是ISO國際標準化的串行通信協(xié)議。CAN是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。

CAN通信只有兩根信號線,分別是CAN_H和CAN_L,CAN 控制器根據(jù)這兩根線上的電位差來判斷總線電平。總線申平分為顯性電平和隱性申平,二者必居其一。發(fā)送方通過使總線電平發(fā)生變化,將消息發(fā)送給接收方。

  • ? 2.0V---------邏輯0------顯性電平
  • ? 0 V-----------邏輯1------隱性電平

CAN總線遵從“線與”機制, 顯性電平可以覆蓋隱性電平 。這就導(dǎo)致 只有所有節(jié)點都發(fā)送隱形電平時總線才處于隱性狀態(tài)

圖片

CAN通信示意圖

1.2 CAN協(xié)議特點

  • ? 多主控 在總線空閑時所有單元都可以發(fā)送消息。當(dāng)兩個以上單元發(fā)送消息時,會根據(jù)標識符(ID)決定發(fā)送的優(yōu)先級。
  • ? 通信速度較快 ,最高可達1Mbps。 通信距離較遠 。當(dāng)速度為1Mbps時,傳輸距離小于40m。當(dāng)速度小于500Kbps時,傳輸距離最遠可達10Km。
  • ? 具有錯誤檢測,錯誤通知和錯誤恢復(fù)功能 。CAN總線上的任意一個單元都可以檢測錯誤,當(dāng)任意一個單元檢測出錯誤時,會立刻通知其他單元。正在發(fā)送消息的單元一旦檢測出錯誤,會強制結(jié)束當(dāng)前發(fā)送。強制結(jié)束的單元會不斷重新發(fā)送消息,直到發(fā)送成功。
  • ? 故障封閉功能 CAN可以判斷出錯誤的類型是總線上暫時的數(shù)據(jù)錯誤還是持續(xù)的數(shù)據(jù)錯誤。當(dāng)總線上持續(xù)出現(xiàn)數(shù)據(jù)錯誤時,可以將引起故障的單元從總線上隔離出去。
  • ? 連接節(jié)點多 理論上連接單元沒有數(shù)量限制,但是連接單元越多,速度就會越低。

11.3 CAN通信的幀類型

CAN通信有5種幀類型

1.jpg

在上述的幾種幀里,數(shù)據(jù)很和遙控幀有標準幀擴展幀兩種。標準幀有11位ID,擴展幀有29位ID。

1.4 數(shù)據(jù)幀結(jié)構(gòu)

CAN通信數(shù)據(jù)幀的構(gòu)成如下

圖片

CAN通信數(shù)據(jù)幀結(jié)構(gòu)

  • ? 幀起始 表示數(shù)據(jù)幀開始的段,標準幀和擴展幀的幀起始都是由1個位的顯性電平組成。
  • ? 仲裁段 表示數(shù)據(jù)幀優(yōu)先級的段。
    圖片
    仲裁段

RTR是用來表示是否是遠程幀(遙控幀)。RTR為0是數(shù)據(jù)幀,RTR為1是遠程幀。擴展幀中的IDE是標識符的選擇位,如果為0,使用標準標識符,如果為1,使用擴展標識符。擴展幀的SRR相當(dāng)于標準幀中的RTR位。 標準幀的ID禁止高七位是隱性電平

  • ? 控制段 控制段由6位構(gòu)成,表示數(shù)據(jù)段的字節(jié)數(shù)。
    圖片
    控制段
    擴展幀的r0r1是保留位,保留位必須全部以顯性電平發(fā)送。DLC是數(shù)據(jù)的長度碼,數(shù)據(jù)的字節(jié)數(shù)范圍是0~8。IDE是標識符的選擇位,如果為0,使用標準標識符,如果為1,使用擴展標識符。

  • ? 數(shù)據(jù)段 數(shù)據(jù)段可以包含0~8個字節(jié)的數(shù)據(jù)。從MSB(最高位)開始傳輸。標準幀和擴展幀的數(shù)據(jù)段相同。

  • ? CRC段 CRC段用于校驗,檢查幀傳輸是否存在錯誤。CRC段包含15位CRC序列和1位CRC界定符。標準幀和擴展幀的CRC段相同。
    圖片
    CRC段

  • ? ACK段 ACK段用來確認是否正常接收。由ACK槽和ACK界定符2位組成。標準幀和擴展幀的ACK段相同。
    圖片
    ACK段

  • ? 幀結(jié)束 由7位隱形電平組成,表示幀的結(jié)束。標準幀和擴展幀的幀結(jié)束相同。

    11.5 CAN的位時序

    由發(fā)送單元在非同步狀態(tài)下每秒鐘發(fā)送的位數(shù)稱為 位速率 。一個位可以分成4段。

  • ? 同步段 SS

  • ? 傳播時間段 PTS

  • ? 相位緩沖段1 PBS1

  • ? 相位緩沖段2 PBS2

上面的這些段由稱為Time Quantum( Tq )的最小時間單位組成。1個位分成4個段,一個段又分成若干個Tq,這成為 位時序

圖片

位構(gòu)成

采樣點是讀取總線電平,并將讀到的電平作為位值的點。

1.6 CAN的仲裁功能

在總線空閑態(tài),最先開始發(fā)送消息的單元獲得發(fā)送權(quán)。當(dāng)多個單元同時開始發(fā)送時,各發(fā)送單元從仲裁段的第一位開始進行仲裁。連 續(xù)輸出顯性電平最多的單元可繼續(xù)發(fā)送

圖片

仲裁過程

二、STM32F1的CAN

2.1 bxCAN簡介

STM32F1芯片自帶bxCAN 控制器 (Basic Extended CAN),即基本擴展CAN,可與 CAN 網(wǎng)絡(luò)進行交互,它支持 2.0A 和 B 版本的CAN 協(xié)議。STM32F1的bxCAN有以下特點

  • ? 支持 CAN 協(xié)議 2.0A 和 20B 主動模式
  • ? 波特率最高達 1Mbps
  • ? 支持時間觸發(fā)通信
  • ? 具有 3 個發(fā)送郵箱
  • ? 具有 3 級深度的 2 個接收 FIFO
  • ? 可變的過濾器組(STM32F103ZET6有14個)

bxCAN模塊可以完全自動地接收和發(fā)送CAN報文,且完全支持標準標識符(11位)和擴展標識符(29位)。

2.2 bxCAN工作模式

bXCAN有3個主要的工作模式: 初始化模式正常模式睡眠模式 。除此之外,還有測試模式,靜默模式,環(huán)回模式。

2.2.1 初始化模式

首先看一下CAN主控制寄存器 (CAN_MCR)的INRQ位。

圖片

寄存器介紹CAN_MCR

圖片

寄存器CAN_MSR介紹

通過介紹可以直到,想要進入初始化模式,軟件先將CAN_MCR的INRQ位置1。然后等待硬件將CAN主狀態(tài)寄存器(CAN_MSR)的INAK位置1。此時進入初始化模式。

當(dāng)bxCAN處于初始化模式時,禁止報文的接收和發(fā)送,并且CANTX引腳輸出隱性位(高電平)。

2.2.2 正常模式

在初始化完成后,軟件應(yīng)該讓硬件進入正常模式,以便正常接收和發(fā)送報文。繼續(xù)看上面對于CAN主控制寄存器INRQ位的介紹。軟件將INRQ位清0,可以使CAN從初始化模式進入正常模式。此時等待硬件將CAN主狀態(tài)寄存器的INAK位清0即可。

2.2.3 睡眠模式

bxCAN可工作在低功耗的睡眠模式。在該模式下,bxCAN的時鐘停止了,但軟件仍然可以訪問郵箱寄存器。

圖片

寄存器CAN_MSR介紹

可以看出,軟件將CAN主控制寄存器的SLEEP置1,即可請求進入睡眠模式。清零該位,退出睡眠模式。另外,如果CAN_MCR寄存器的AWUM位為’1’,一旦檢測到CAN總線的活動,硬件就自動對SLEEP位清’0’來喚醒bxCAN。

2.2.4 靜默模式

將CAN_BTR寄存器的SILM位置’1’,來選擇靜默模式。

圖片

寄存器CAN_BTR介紹

在靜默模式下,bxCAN可以正常地接收數(shù)據(jù)幀和遠程幀,但只能發(fā)出隱性位,而不能真正發(fā)送報文。如果bxCAN需要發(fā)出顯性位(確認位、過載標志、主動錯誤標志),那么這樣的顯性位在內(nèi)部被接回來從而可以被CAN內(nèi)核檢測到,同時CAN總線不會受到影響而仍然維持在隱性位狀態(tài)。因此,靜默模式通常用于分析CAN總線的活動,而不會對總線造成影響-顯性位(確認位、錯誤幀)不會真正發(fā)送到總線上。

圖片

靜默模式

2.2.5 環(huán)回模式

將CAN_BTR寄存器的LBKM位置’1’,來選擇環(huán)回模式。在環(huán)回模式下,bxCAN把發(fā)送的報文當(dāng)作接收的報文并保存(如果可以通過接收過濾)在接收郵箱里。

圖片

寄存器CAN_BTR寄存器介紹

環(huán)回模式可用于自測試。為了避免外部的影響,在環(huán)回模式下CAN內(nèi)核忽略確認錯誤(在數(shù)據(jù)/遠程幀的確認位時刻,不檢測是否有顯性位)。在環(huán)回模式下,bxCAN在內(nèi)部把Tx輸出回饋到Rx輸入上,而完全忽略CANRX引腳的實際狀態(tài)。發(fā)送的報文可以在CANTX引腳上檢測到。

圖片

環(huán)回模式

2.3 位時序和波特率

STM32將每一位分成三段

  • ? 同步段 SS
  • ? 時間段1 BS1
  • ? 時間段2 BS2

圖片

位時序

其中tpclk是APB1總線的時鐘頻率,默認為36MHz。

三、CAN配置步驟

  • ? 使能CAN時鐘,將對應(yīng)引腳復(fù)用映射為CAN功能 。STM32F103ZET6只有一個CAN,對應(yīng)引腳如下

1.jpg

CAN_RX配置為上拉輸入模式,CAN_TX配置為復(fù)用推挽輸出。

  • ? 設(shè)置CAN工作模式,波特率等 。庫函數(shù)提供了一個結(jié)構(gòu)體和一個函數(shù)來配置。初始化函數(shù)為
uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct)

結(jié)構(gòu)體成員如下

1.jpg

2.jpg

波特率 = Fpclk1 / ((CAN_BS1 + CAN_BS2 + 1)* CAN_Prescaler)

  • ? 設(shè)置CAN篩選器(過濾器) 庫函數(shù)也提供了篩選器的配置函數(shù)
void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct)

結(jié)構(gòu)體內(nèi)容如下

1.jpg

2.jpg

  • 選擇CAN中斷類型,開啟中斷 庫函數(shù)提供了一個中斷的配置函數(shù)
void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState)

CAN的中斷類型有很多,這里就不再一一介紹了。

#define IS_CAN_IT(IT)        (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FMP0)  ||
                             ((IT) == CAN_IT_FF0)  || ((IT) == CAN_IT_FOV0)  ||
                             ((IT) == CAN_IT_FMP1) || ((IT) == CAN_IT_FF1)   ||
                             ((IT) == CAN_IT_FOV1) || ((IT) == CAN_IT_EWG)   ||
                             ((IT) == CAN_IT_EPV)  || ((IT) == CAN_IT_BOF)   ||
                             ((IT) == CAN_IT_LEC)  || ((IT) == CAN_IT_ERR)   ||
                             ((IT) == CAN_IT_WKU)  || ((IT) == CAN_IT_SLK))
  • ? CAN發(fā)送和接收消息 CAN發(fā)送消息的函數(shù)是
uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage)

發(fā)送之前需要配置好消息的結(jié)構(gòu)體,消息結(jié)構(gòu)體成員如下

1.jpg

  • 選擇CAN中斷類型,開啟中斷 庫函數(shù)提供了一個中斷的配置函數(shù)
void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState)

CAN的中斷類型有很多,這里就不再一一介紹了。

#define IS_CAN_IT(IT)        (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FMP0)  ||
                             ((IT) == CAN_IT_FF0)  || ((IT) == CAN_IT_FOV0)  ||
                             ((IT) == CAN_IT_FMP1) || ((IT) == CAN_IT_FF1)   ||
                             ((IT) == CAN_IT_FOV1) || ((IT) == CAN_IT_EWG)   ||
                             ((IT) == CAN_IT_EPV)  || ((IT) == CAN_IT_BOF)   ||
                             ((IT) == CAN_IT_LEC)  || ((IT) == CAN_IT_ERR)   ||
                             ((IT) == CAN_IT_WKU)  || ((IT) == CAN_IT_SLK))
  • ? CAN發(fā)送和接收消息 CAN發(fā)送消息的函數(shù)是
uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage)

發(fā)送之前需要配置好消息的結(jié)構(gòu)體,消息結(jié)構(gòu)體成員如下

1.jpg

  • ? CAN狀態(tài)獲取 庫函數(shù)提供了很多可以獲取CAN狀態(tài)標志的函數(shù),比如
uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox)

FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG);

四、實戰(zhàn)項目

4.1 CAN初始化

/*
 *==============================================================================
 *函數(shù)名稱:Drv_Can_Init
 *函數(shù)功能:初始化CAN
 *輸入?yún)?shù):tsjw:重新同步跳躍寬度(Tsjw);tbs1:BS1長度;tbs2:BS2長度;
                        brp:Tq大小;mode:CAN工作模式
 *返回值:無
 *備  注:無
 *==============================================================================
 */
void Drv_Can_Init (u8 tsjw,u8 tbs1,u8 tbs2,u16 brp,u8 mode)
{
    // 結(jié)構(gòu)體定義
    GPIO_InitTypeDef GPIO_InitStructure;
    CAN_InitTypeDef CAN_InitStructure;
    CAN_FilterInitTypeDef CAN_FilterInitStructure;
    
    // 開啟時鐘
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);   // 打開CAN1時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   // PA端口時鐘打開
    
    // 初始化GPIO
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;   // PA11 CAN_RX   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   // 上拉輸入模式
    GPIO_Init(GPIOA, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;   // PA12 CAN_TX   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   // 復(fù)用推挽輸出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   // IO口速度為50MHz
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    // 初始化CAN
    CAN_InitStructure.CAN_TTCM=DISABLE;   // 非時間觸發(fā)通信模式   
    CAN_InitStructure.CAN_ABOM=DISABLE;   // 軟件自動離線管理   
    CAN_InitStructure.CAN_AWUM=DISABLE;   // 睡眠模式通過軟件喚醒(清除CAN- >MCR的SLEEP位)
    CAN_InitStructure.CAN_NART=ENABLE;   // 使用報文自動傳送 
    CAN_InitStructure.CAN_RFLM=DISABLE;   // 報文不鎖定,新的覆蓋舊的  
    CAN_InitStructure.CAN_TXFP=DISABLE;   // 優(yōu)先級由報文標識符決定 
    CAN_InitStructure.CAN_Mode= mode;   //CAN工作模式設(shè)置 
    CAN_InitStructure.CAN_SJW=tsjw;   // 重新同步跳躍寬度(Tsjw)為tsjw+1個時間單位 CAN_SJW_1tq~CAN_SJW_4tq
    CAN_InitStructure.CAN_BS1=tbs1;   // Tbs1范圍CAN_BS1_1tq ~CAN_BS1_16tq
    CAN_InitStructure.CAN_BS2=tbs2;   // Tbs2范圍CAN_BS2_1tq ~ CAN_BS2_8tq
    CAN_InitStructure.CAN_Prescaler=brp;   //分頻系數(shù)(Fdiv)為brp+1 
    CAN_Init(CAN1, &CAN_InitStructure);   // 初始化CAN1
    
    // 初始化過濾器
    CAN_FilterInitStructure.CAN_FilterNumber=0;   // 過濾器0
    CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;   // 掩碼模式
    CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;   // 32位 
    CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;   // 32位ID
    CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;   // 32位MASK
    CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;   // 過濾器0關(guān)聯(lián)到FIFO0
    CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;   // 激活過濾器0
    CAN_FilterInit(&CAN_FilterInitStructure);   // 過濾器初始化
}

4.2 CAN發(fā)送

/*
 *==============================================================================
 *函數(shù)名稱:Med_Can_Send_Msg
 *函數(shù)功能:發(fā)送報文
 *輸入?yún)?shù):msg:數(shù)據(jù)段指針;len:數(shù)據(jù)長度
 *返回值:0:發(fā)送成功;1:發(fā)送失敗
 *備  注:固定ID為0x12
 *==============================================================================
 */
u8 Med_Can_Send_Msg (u8* msg,u8 len)
{ 
    u8 mbox;
    u16 i = 0;
    CanTxMsg TxMessage;   // 定義發(fā)送報文結(jié)構(gòu)體
    TxMessage.StdId = 0x12;   // 標準標識符
    TxMessage.ExtId = 0x12;   // 擴展標識符
    TxMessage.IDE = CAN_Id_Standard;   // 使用標準標識符
    TxMessage.RTR = 0;   // 消息類型為數(shù)據(jù)幀,一幀8位
    TxMessage.DLC = len;
    for(i = 0;i   len;i ++)
    {
        TxMessage.Data[i] = msg[i];   // 填充幀數(shù)據(jù)段
    }
    mbox = CAN_Transmit(CAN1,&TxMessage);   // 發(fā)送報文   
    i = 0;
    
    // 等待發(fā)送結(jié)束
    while((CAN_TransmitStatus(CAN1,mbox) == CAN_TxStatus_Failed) && (i   0XFFF))
    {
        i++;
    }
    
    // 返回發(fā)送情況
    if(i  >= 0XFFF)
    {
        return 1;
    }
    return 0;  
}

4.3 CAN接收

/*
 *==============================================================================
 *函數(shù)名稱:Med_Can_Receive_Msg
 *函數(shù)功能:接收報文
 *輸入?yún)?shù):buf:數(shù)據(jù)緩存區(qū)指針
 *返回值:0:沒有接收到數(shù)據(jù);其他:接收數(shù)據(jù)長度
 *備  注:無
 *==============================================================================
 */
u8 Med_Can_Receive_Msg (u8 *buf)
{          
     u32 i;
    CanRxMsg RxMessage;   // 定義接收報文結(jié)構(gòu)體
    
    // 沒有接收到數(shù)據(jù),直接退出 
    if( CAN_MessagePending(CAN1,CAN_FIFO0) == 0)
    {
        return 0;
    }
    CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);   // 讀取數(shù)據(jù) 
    
    for(i = 0;i   RxMessage.DLC;i ++)
    {
        buf[i] = RxMessage.Data[i];
    }
    
    return RxMessage.DLC; 
}

4.4 CAN收發(fā)測試

利用按鍵WK UP控制報文的發(fā)送,按下一次發(fā)送一次報文。配置CAN波特率為500Kbps,環(huán)回模式。利用串口打印接收數(shù)據(jù)。需要注意的是,STM32只有CAN控制器,想要實現(xiàn)報文的收發(fā),需要自己連接CAN收發(fā)器首先初始化CAN

// 初始化CAN,500Kbps波特率
    Drv_Can_Init(CAN_SJW_1tq,CAN_BS1_9tq,CAN_BS2_8tq,4,CAN_Mode_LoopBack);

然后編寫主程序

u8 gKeyValue = 0;   // 獲取按鍵值

u8 gSendData[8] = {'1','2','3','4','5','6','7','8'};   // 發(fā)送內(nèi)容數(shù)組
u8 gReceData[8];   // 接收內(nèi)容數(shù)組
u8 gFlag = 0;   // 接收發(fā)送標志

int main(void)
{
    Med_Mcu_Iint();   // 系統(tǒng)初始化
    
    while(1)
  {
        gKeyValue = Med_KeyScan();
        
        // WK UP 按下發(fā)送消息
        if (gKeyValue == 1)
        {
            gFlag = Med_Can_Send_Msg(gSendData,8);
            
            // 發(fā)送失敗
            if (gFlag)
            {
                printf ("Send Defeat!rn");
            }
            else
            {
                printf ("Send Success!rn");
            }
        }
        
        // 接收報文
        gFlag = Med_Can_Receive_Msg(gReceData);
        
        // 接收成功
        if (gFlag)
        {
            printf ("Receive Data:%srn",gReceData);
        }
    }
}

測試結(jié)果如下

圖片

測試結(jié)果

4.5 補充說明

上面的CAN收發(fā)測試程序,發(fā)送的內(nèi)容是字符串“12345678”。如果發(fā)送的是數(shù)字12345678。在串口打印接收數(shù)據(jù)時需要先將接收到的數(shù)據(jù)轉(zhuǎn)換成字符,然后再打印。轉(zhuǎn)換方法很簡單,只需要對接收數(shù)組的每一位加48即可。

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

    關(guān)注

    114

    文章

    17102

    瀏覽量

    184236
  • CAN通信
    +關(guān)注

    關(guān)注

    5

    文章

    97

    瀏覽量

    18423
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    2056

    瀏覽量

    47013
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364825
  • CRC效驗
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    1259
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32F103做CAN的收發(fā)通信的程序思路與代碼分享

    STM32的標識符屏蔽濾波目的是減少了CPU處理CAN通信的開銷。STM32的過濾器組最多有28個(互聯(lián)型),但是STM32F103ZET6
    的頭像 發(fā)表于 06-14 16:13 ?1.2w次閱讀
    用<b class='flag-5'>STM32</b>F103做<b class='flag-5'>CAN</b>的收發(fā)<b class='flag-5'>通信</b>的程序思路與代碼分享

    stm32 CAN無法通信

    本帖最后由 alan7lanshui 于 2018-3-16 18:02 編輯 stm32板子,斷電重啟之后,無法進行CAN通信,只有在第一次寫入程序時,可以進行CAN
    發(fā)表于 08-19 06:26

    STM32奮斗板-CAN通信

    STM32奮斗板-CAN通信DEMO-V3/STM32奮斗板-CAN通信DEMO-V3/CM3/
    發(fā)表于 08-19 06:45

    STM32H743芯片上實現(xiàn)CAN通信

    1. 摘要本篇筆記主要介紹,在STM32H743芯片上實現(xiàn)CAN通信,封裝為BSP驅(qū)動,為之后實現(xiàn)CAN的高層
    發(fā)表于 08-20 07:41

    求大佬分享Can通信接口學(xué)習(xí)筆記

    求大佬分享Can通信接口學(xué)習(xí)筆記
    發(fā)表于 02-11 07:45

    STM32H743芯片上實現(xiàn)CAN通信的步驟

    本篇筆記主要介紹,在STM32H743芯片上實現(xiàn)CAN通信,封裝為BSP驅(qū)動,為之后實現(xiàn)CAN的高層通信
    的頭像 發(fā)表于 09-14 14:33 ?1.7w次閱讀
    在<b class='flag-5'>STM32</b>H743芯片上實現(xiàn)<b class='flag-5'>CAN</b><b class='flag-5'>通信</b>的步驟

    STM32學(xué)習(xí)筆記--CAN

    目錄:一、CAN通信原理1.CAN通信簡介2.CAN通信優(yōu)點3.
    發(fā)表于 11-19 12:21 ?86次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)<b class='flag-5'>筆記</b>--<b class='flag-5'>CAN</b>

    STM32F103學(xué)習(xí)筆記三 串口通信

    STM32F103學(xué)習(xí)筆記三 串口通信
    發(fā)表于 11-25 09:06 ?71次下載
    <b class='flag-5'>STM32</b>F103學(xué)習(xí)<b class='flag-5'>筆記</b>三   串口<b class='flag-5'>通信</b>

    STM32CubMX自學(xué)筆記(七)—CAN通信實驗

    STM32CubMX自學(xué)筆記(七)—CAN通信實驗主要介紹由于項目需求要用到CAN通信協(xié)議,因此
    發(fā)表于 12-04 18:21 ?12次下載
    <b class='flag-5'>STM32</b>CubMX自學(xué)<b class='flag-5'>筆記</b>(七)—<b class='flag-5'>CAN</b><b class='flag-5'>通信</b>實驗

    CubeMX STM32實現(xiàn)CAN通信——回環(huán)測試數(shù)據(jù)收發(fā)

    CubeMX STM32實現(xiàn)CAN通信——數(shù)據(jù)收發(fā)CAN通信CAN協(xié)議CubeMX設(shè)置代碼部分過
    發(fā)表于 12-04 18:36 ?14次下載
    CubeMX <b class='flag-5'>STM32</b>實現(xiàn)<b class='flag-5'>CAN</b><b class='flag-5'>通信</b>——回環(huán)測試數(shù)據(jù)收發(fā)

    基于STM32F429HAL庫的CAN通信代碼

    基于STM32F429HAL庫的CAN通信代碼* 最近在學(xué)正點原子阿波羅STM32F429開發(fā)板的CAN
    發(fā)表于 12-04 19:06 ?19次下載
    基于<b class='flag-5'>STM32</b>F429HAL庫的<b class='flag-5'>CAN</b><b class='flag-5'>通信</b>代碼

    Can通信接口學(xué)習(xí)筆記

    Can通信接口學(xué)習(xí)筆記
    發(fā)表于 12-08 16:36 ?29次下載
    <b class='flag-5'>Can</b><b class='flag-5'>通信</b>接口學(xué)習(xí)<b class='flag-5'>筆記</b>

    基于STM32CAN總線通信節(jié)點控制設(shè)計(畢設(shè)課設(shè))

    說明:這是我的畢業(yè)設(shè)計,基于STM32CAN總線通信節(jié)點設(shè)計。用的是STM32F103微控制器,LCD1602液晶顯示,MQ-4甲烷氣體傳感器,CTM1050
    發(fā)表于 12-24 19:30 ?50次下載
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>CAN</b>總線<b class='flag-5'>通信</b>節(jié)點控制設(shè)計(畢設(shè)課設(shè))

    CAN總線學(xué)習(xí)筆記|STM32CAN環(huán)回測試

    CAN基礎(chǔ)知識介紹文中介紹了CAN協(xié)議的基礎(chǔ)知識,以及STM32F4芯片的CAN控制器相關(guān)知識,下面將通過實例,利用STM32CubeMX圖
    的頭像 發(fā)表于 01-04 15:23 ?3276次閱讀

    STM32入門學(xué)習(xí)筆記CAN通信實驗1

    CAN是Controller Area Network的縮寫,最初是專門用于汽車網(wǎng)絡(luò)的通信協(xié)議,與485協(xié)議相似,CAN也是一種2線制,采用兩根線的電壓差進行數(shù)據(jù)傳輸?shù)膮f(xié)議,隨著CAN
    的頭像 發(fā)表于 02-16 14:37 ?2227次閱讀
    <b class='flag-5'>STM32</b>入門學(xué)習(xí)<b class='flag-5'>筆記</b>之<b class='flag-5'>CAN</b><b class='flag-5'>通信</b>實驗1