久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2765|回復: 5
打印 上一主題 下一主題
收起左側

有關CAN 通訊擴展幀和多ID問題求助

[復制鏈接]
跳轉到指定樓層
樓主
ID:826942 發表于 2022-4-23 10:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在學習CAN的時候發現這個例程是用標準幀、回環模式,但是我需要改成擴展幀和多ID,看到手冊上說改IDE這個配置可以改成擴展幀,就是這個代碼   CAN_TxMessages[0].IDE     = CAN_ID_STD;    //設置為標準幀ID 此處可以改成擴展幀ID
但是除此之外還要怎么改?

  uint8_t i = 0;
    /* Init Transmit frame初始化發送幀*/
    CAN_TxMessages[0].StdId   = CAN_TX1_SID;   //標準識別符
    CAN_TxMessages[0].IDE     = CAN_ID_STD;    //設置為標準幀ID 此處可以改成擴展幀ID
    CAN_TxMessages[0].RTR     = CAN_RTRQ_DATA; //  數據幀
    CAN_TxMessages[0].DLC     = CAN_TXDLC_8;   // 數據為8
    for(i=0;i<CAN_TXDLC_8;i++)
    {
       CAN_TxMessages[0].Data[i]=CAN_Tx_Frame1_Data[i];
    }
    CAN_TxMessages[1].ExtId   = CAN_TX2_EID;//擴展幀標識符
    CAN_TxMessages[1].IDE     = CAN_ID_EXT;//設置成擴展幀
    CAN_TxMessages[1].RTR     = CAN_RTRQ_DATA;
    CAN_TxMessages[1].DLC     = CAN_TXDLC_8;
    for(i=0;i<CAN_TXDLC_8;i++)
    {
       CAN_TxMessages[1].Data[i]=CAN_Tx_Frame2_Data[i];
    }


這代碼是不是說CAN_TxMessages[0].為標準幀 而 CAN_TxMessages[1].為擴展幀?

然后要是改擴展幀的話過濾器試試不是也要改?
uint8_t Check_CANRxMessage(CanRxMessage* RxMessage)  //檢查CAN接收消息
{
        //   如果       接收消息是標準幀       與       接收消息不是發送CAN_TX1標準幀ID   或
        //              接收消息是擴展幀       與       接收消息不是發送CAN_TX2擴展幀ID
    if ( ((RxMessage->IDE == CAN_ID_STD) && (RxMessage->StdId != CAN_TX1_SID)) ||
         ((RxMessage->IDE == CAN_ID_EXT) && (RxMessage->ExtId != CAN_TX2_EID)) \
       ) return FAILED; //返回0
                //  接收消息數據幀不是發送的數據             返回0
    if ( RxMessage->RTR != CAN_RTRQ_DATA) return FAILED;
                //  接收消息數據長度不是發送的數據長度        返回0
    if ( RxMessage->DLC != CAN_TXDLC_8)   return FAILED;
    //  接收消息數據0位不是0x01         與  接收消息數據0位不是0x08       或
    if ( ( (RxMessage->Data[0] != 0x01) && (RxMessage->Data[0] != 0x08) ) ||\
         ( (RxMessage->Data[1] != 0x02) && (RxMessage->Data[1] != 0x07) ) ||\
         ( (RxMessage->Data[2] != 0x03) && (RxMessage->Data[2] != 0x06) ) ||\
         ( (RxMessage->Data[3] != 0x04) && (RxMessage->Data[3] != 0x05) ) ||\
         ( (RxMessage->Data[4] != 0x05) && (RxMessage->Data[4] != 0x04) ) ||\
         ( (RxMessage->Data[5] != 0x06) && (RxMessage->Data[5] != 0x03) ) ||\
         ( (RxMessage->Data[6] != 0x07) && (RxMessage->Data[6] != 0x02) ) ||\
         ( (RxMessage->Data[7] != 0x08) && (RxMessage->Data[7] != 0x01) ) \
        )  return FAILED;//返回0
    return PASSED;//返回1
}

就是這個函數嗎?
懇請大佬指點下 在這個例程上要改成擴展幀的話要改那幾個代碼?


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:826942 發表于 2022-4-23 10:21 | 只看該作者
多ID的話該怎么配置?
回復

使用道具 舉報

板凳
ID:573999 發表于 2022-4-24 07:08 | 只看該作者
你說的是CAN接收過濾吧,庫函數說明就有
回復

使用道具 舉報

地板
ID:573999 發表于 2022-4-24 07:10 | 只看該作者
同樣接收也可以用用戶數據處理來做邏輯實現的,只不過處理的數據多點
回復

使用道具 舉報

5#
ID:1013883 發表于 2022-4-24 09:20 | 只看該作者
發送和接收都得是一樣的,發送寄存器是標準幀,接收寄存器也得是標準幀,反之同理
回復

使用道具 舉報

6#
ID:826942 發表于 2022-4-24 10:50 | 只看該作者
SDDQ 發表于 2022-4-24 09:20
發送和接收都得是一樣的,發送寄存器是標準幀,接收寄存器也得是標準幀,反之同理

我也是這樣改的 但是測試的話說失敗啦
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久免费大片 | 久久婷婷国产麻豆91 | 精品国产aⅴ | 国内精品视频在线观看 | 亚洲欧洲成人av每日更新 | 国产精品精品久久久 | 国产精品成人一区二区 | 天天操精品视频 | 国产视频久久 | 香蕉视频黄色 | 久久伊人精品一区二区三区 | 91免费在线播放 | 欧美成人久久 | 亚洲视频精品 | 在线黄 | 欧美日韩高清一区二区三区 | 亚洲精品黄 | 欧美日日| 青青久在线视频 | 日韩在线大片 | 国产精品亚洲精品 | 午夜久久久 | 欧美精品一区二区三区在线播放 | 成人免费影院 | 超碰97在线免费 | 二区在线观看 | 天堂在线www | 欧美黄色一级毛片 | 国产精品久久久久av | 日韩精品在线一区 | 一区二区在线不卡 | 精品不卡| 国产九九精品视频 | 成人在线视频网 | 午夜视频在线免费观看 | 久久99精品视频 | 国产成人精品网站 | 久久大| 欧美久久天堂 | 久久婷婷色 | 可以免费观看的av片 |