国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

手把手教你 Air8000 模塊 CAN 接口開發與配置實戰全攻略

青山老竹農 ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2025-10-29 14:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

面對復雜多樣的嵌入式通信需求,Air8000 模塊的 CAN 接口開發尤為重要。本文以實戰為導向,詳細拆解 Air8000 模塊 CAN 接口的開發流程與配置方法,從環境搭建到代碼實現,再到實際測試,讓你零基礎也能輕松掌握,實現高效、穩定的數據通信。

一、CAN 概述

控制器局域網(Controller Area Network,CAN)是一種廣泛應用于工業控制汽車電子等領域的實時通信協議,由德國博世公司于 1986 年提出并標準化(ISO 11898)。其核心采用多主(Multi-Master)總線架構,通過差分信號傳輸實現高抗干擾能力,支持節點間以廣播形式進行高效、可靠的數據交換。CAN 協議基于非破壞性仲裁機制,利用報文 ID 優先級解決總線沖突,確保高優先級數據實時傳輸,同時具備完善的錯誤檢測、幀校驗和故障節點自動關閉功能,滿足嚴苛環境下的安全性需求。典型應用包括汽車 ECU 通信(如動力總成、車身控制)、工業自動化(如 PLC 聯網)及醫療設備互聯,其衍生協議如 CAN FD(靈活數據率)進一步提升了帶寬與靈活性,成為現代分布式控制系統的基礎技術之一。

二、演示功能概述

本篇文章演示的內容為:用兩種方式測試 Air8000 的 CAN 功能,第一種是使用 Air8000 整機開發板使用 CAN 連接 CAN 轉 USB 工具,進行數據收發,第二種是使用 Air8000 整機開發板和 Air8000 整機開發板進行 CAN 功能的收發測試。

三、準備硬件環境

參考:硬件環境清單第二章節內容,準備以及組裝好硬件環境。

3.1 Air8000 整機開發板

wKgZO2kBnqWAdp3JABISLO2QSWI283.png


3.2 高速 USB-CAN 分析儀

wKgZO2kBnt-AAP6OAAUT1yLhUpU980.png

3.3 硬件連接圖

Air8000 整機板和 USB-CAN 分析儀鏈接圖:

CAN 總線采用差分信號傳輸,由兩根線組成:

CAN 采用差分信號傳輸,通過兩根信號線(CANH 和 CANL)傳輸數據。兩根線上的信號相位相反,即使存在干擾,接收端也能通過差值還原出原始數據。所以 CAN 接線可以不接 GND

wKgZO2kBnyKAZHq_AA4tDMbV1TQ545.png

Air8000 整機開發板和 Air8000 整機開發板連接圖:

wKgZPGkBn2mAYCnnAAzMSAEjEvM621.png

四、準備軟件環境

在開始實踐本示例之前,先籌備一下軟件環境:

1.Luatools 工具;

2. 內核固件文件(底層 core 固件文件):LuatOS-SoC_V2008_Air8000_VOLTE.soc;參考項目使用的內核固件;

3. luatos 需要的腳本和資源文件

gitee 下載地址:https://gitee.com/openLuat/LuatOS/blob/master/module/Air8000/demo/can/main.lua

LuatOS 運行所需要的 lib 文件:

使用 Luatools 燒錄時,勾選 添加默認 lib 選項,使用默認 lib 腳本文件

準備好軟件環境之后,接下來查看如何燒錄項目文件到 Air8000,將本篇文章中演示使用的項目文件燒錄到 Air8000 中。

五、代碼 API 和代碼解析

5.1 代碼 API

can.init(id, rx_message_cache_max)

CAN 總線初始化

參數

wKgZO2kBn8GAL2AcAAA9vpHBmfQ897.png

返回值

wKgZPGkBn_CATXzfAAAVPU2g5C8939.png

例子

wKgZO2kBoBaAbwpNAAAfkfE5sbQ727.png


can.on(id, func)

注冊 CAN 事件回調

參數

wKgZO2kBoFCAYpmbAAArgAyvz_E693.png

返回值

wKgZPGkBoHCATM6uAAAL_WXwSyU258.png

例子

wKgZO2kBoJCATmwhAABoPTevoRg524.png

can.timing(id, br, PTS, PBS1, PBS2, SJW)

CAN 總線配置時序

參數

wKgZO2kBoLqAJlU3AABwDns0kHA914.png

返回值

wKgZO2kBoPSAeM8vAAAVoCHspkM197.png

例子

wKgZPGkBoQiAFc46AABMtdWLm40137.png

can.mode(id, mode)

CAN 總線設置工作模式

參數

wKgZO2kBoS-ASf5kAAA2mnLW734122.png

返回值

wKgZO2kBoUqAP1GcAAAVjIpHHj0455.png

例子

wKgZPGkBoW6Ae6SUAAAt1FewUw4871.png

can.node(id, node_id, id_type)

CAN 總線設置節點 ID,這是一種簡易的過濾規則,只接收和 ID 完全匹配的消息,和 can.filter 選擇一個使用

參數

wKgZO2kBoZeARPgHAABfbaHju6g934.png

返回值

wKgZO2kBobeATRexAAAVjSTQuTE506.png

例子

wKgZPGkBoeCAfcsiAABR0snomZs458.png

can.tx(id, msg_id, id_type, RTR, need_ack, data)

CAN 發送一條消息

參數

wKgZPGkBog2ASWH8AAClwWBW68Y988.png

返回值

wKgZPGkBoieADDoPAAAVnUJVJl0568.png

例子

wKgZO2kBok6AZPXRAAfx7dQbfqM749.png

can.rx(id)

從緩存里讀出一條消息

參數

wKgZO2kBonqAO6KmAAAjovhjxyU698.png

返回值

wKgZPGkBopOAUCJuAABSIWowwWM057.png

例子

wKgZO2kBouOACYOBAABUMhXyusI065.png

can.debug(on_off)

CAN debug 開關,打開后有更詳細的打印

參數

wKgZPGkBowqAHIhQAAAWJKUD8Ik459.png

返回值

例子

wKgZO2kBoyuAFb-qAAAlH4iPqic187.png

zbuff.create(length,data,type)

創建 zbuff

參數

wKgZO2kBo1uAYdu8AABrMnImbYM297.png

返回值

wKgZPGkBpCGAZB0VAAAWOEp9u2Y582.png

例子

wKgZPGkBpEGAI-H_AAMDxkai9Is919.png

buff:set(start, num, len)

zbuff 的類似于 memset 操作,類似于 memset(&buff[start], num, len),當然有 ram 越界保護,會對 len 有一定的限制

參數

wKgZO2kBpGqAcnbTAAAuY5qHTmU334.png

返回值

例子

wKgZO2kBpI2AUWL2AADigHPmZdw689.png

buff:seek(base,offset)

zbuff 設置光標位置(可能與當前指針位置有關;執行后指針會被設置到指定位置)

參數

wKgZPGkBpLyAEgV1AAA1u1OMdJs623.png

返回值

wKgZPGkBpNaAfc8JAAAV5mJ6Zd4239.png

例子

wKgZO2kBpPSAUur_AAB7TnP29As615.png

mcu.x32(value)

轉換 10 進制數為 16 進制字符串輸出

參數

wKgZO2kBpR2ALndeAAAOp5rHFcI453.png

返回值

wKgZO2kBpTuATpmxAAAQzU88Cho485.png

例子

wKgZPGkBpVeAIdAUAABDwnURW8g188.png


5.2 常量值解釋

wKgZO2kBpZSAeaFnAAE1UZyvW9Q821.png

5.3 代碼解析

1.配置 SELF_TEST_FLAG 為正常收發模式,節點配置為 A 節點,對應的 rx 的 id 為 0x12345678,tx 的 id 為 0x12345677,代碼里面使用的 id 為擴展幀,擴展幀和標準幀的區別:

CAN 協議中標準幀和擴展幀的主要區別體現在以下幾個方面:

5.3.1 標識符長度與節點數量

1.標準幀

2.擴展幀

5.3.2 數據傳輸能力

標準幀數據長度限制為 8 字節,超過部分會被填充或忽略。

擴展幀數據長度可達 0-64 字節,通過分段傳輸(如 ISO-TP 協議)實現大容量數據傳輸。

5.3.3 控制字段差異

標準幀:6 位控制字段(如 DLC、R0、IDE 位)。

擴展幀:4 位控制字段(如 DLC、R1、IDE 位),部分功能由擴展標識符擴展。

配置了 STB 的 pin 用于不同硬件的控制,創建了 Zbuff 存儲發送數據

wKgZPGkBphCADpaaAAH5xO2Cg7I873.png

2.初始化 CAN 總線,設置 id 和接收緩存消息數,注冊 CAN 事件的回調函數,對 cb_type 進行對比,can.CB_MSG 為對有新數據寫入緩存進行讀取處理,can.CB_TX 為數據發送結束,需要根據后續 param 確定發送成功還是失敗,can.CB_ERR 為有錯誤報告,后續 param 是錯誤碼,can.CB_STATE 為總線狀態變更,后續 param 是新的狀態,也可以用 can.state 讀出,然后對 can 總線的時序進行配置,代碼里配置的是 1Mbps,然后根據上面的是否是自測模式的變量進行判斷,如果是自測模式就使用 can.mode 配置 can 總線的工作模式為自測模式 can.MODE_TEST,如果是正常工作模式就配置為 can.MODE_NORMAL,本文檔中使用的為擴展幀,配置節點 ID 為 CAN.EXT,如果要使用標準幀配置為 CAN.STD,其中 STB 的管腳,

關于 CAN_STB 信號:

1. 電源管理(待機模式控制)

低功耗模式:當系統需要進入節能狀態時(如汽車熄火或設備待機),CAN_STB 信號可被觸發(高電平或低電平,取決于硬件設計),使 CAN 收發器進入低功耗待機模式。此時,收發器停止正常通信以降低能耗。

喚醒功能:當需要恢復通信時,CAN_STB 信號狀態切換(如拉低或拉高),將收發器從待機模式喚醒,重新激活 CAN 總線的數據傳輸。

2. 硬件控制

收發器啟用/禁用:在某些 CAN 收發器芯片(如 TI 的 SN65HVD230)中,STB(Standby)引腳直接控制收發器的工作狀態。例如:

STB = 高電平:收發器關閉,僅消耗微量靜態電流

STB = 低電平:收發器正常工作,可收發 CAN 信號。

系統集成:在復雜系統中,CAN_STB 可能由主控制器(如 MCU)輸出,協調多個 CAN 節點的電源狀態,優化整體能耗。

3. Air8000 整機開發板設計

注意!Air8000 整機開發板,CAN_STB 信號是直接引出來的,所以需要控制 GPIO 的電平拉低:

STB 為低電平是正常工作,所以需要手動把 gpio27 也就是 CAN_STB 拉低才可以

wKgZPGkBpnqAG2sjAATv65gi_ik816.png

3.設置循環定時器,2 秒鐘發一次數據,根據節點判斷是 A 節點還是 B 節點打印節點發送信息,設置 test_cnt 計數器,每發送一次 +1,>8 的時候,設置為 1,然后使用 tx_buf:set(0,test_cnt)函數,把 buff 里面的內容設置成從索引 0 開始,連續 8 個字節被填充為 test_cnt,因為 zbuff 創建空間位 8,所以是 8 個字節,然后利用 tx_buf:seek 把光標位置設置為 test_cnt 的值,比如:填充完之后內容為 01 01 01 01 01 01 01 01,設置第一個光標的值設置完為 01,設置第二個光標為 01 01,然后利用 can.tx 發送內容,其中有涉及到是否需要應答的機制,can.tx 的第五個參數,need_ack

其中該機制為:

CAN 協議中的應答機制是其核心可靠性保障措施之一,主要通過以下方式實現:

1、應答機制的核心組成

ACK 應答位

應答間隙(ACK SLOT)

應答界定符(ACK DELIMITER)

2、應答機制的工作流程

數據傳輸

發送節點發送數據幀后進入等待應答狀態,總線進入仲裁階段。

仲裁與應答

錯誤處理

wKgZO2kBpsSAQi0PAAIPYYt4Uzw937.png

六、運行結果展示

6.1 完整代碼

wKgZO2kBp0GAXpI1AAvl02uyf3M834.png


6.2 結果展示

wKgZPGkBp3GAaeapAAVSaw-GtjY900.png

使用兩個 Air8000 整機開發板測試結果:

wKgZO2kBp5WAfFuSAAXdKxRsds0192.png

一個開發板為節點 A,一個開發板為節點 B,互相發送數據接收對方的數據。

七、總結

本文演示如何在 Air8000 整機開發板上面,用 CAN 接口,使用 USB 轉 CAN 工具進行數據的收發,然后使用 Air8000 整機開發板和 Air8000 整機開發板兩個開發板把 CAN 接口進行互連,進行雙方數據的互發互收的演示。

八、常見問題

1.如何判斷模塊是否正常,如何自測?

如果有 CAN 收發器的情況下,直接設置為 can.mode(can_id, can.MODE_TEST)測試然后日志提示發送成功,則表示模塊端的 CAN 接口功能均正常。如果發送失敗,則需要短接模塊的 CAN_TX 和 CAN_RX,測試是否發送正常,如果發送正常,證明模塊這兩個腳是是沒有問題的,測量下 STB 的電平是否是低,如果為高,則需要代碼里面設置對應的 gpio 拉低。

九、硬件電路說明

Air8000 CAN 硬件電路說明:https://docs.openluat.com/air8000/luatos/hardware/design/can/


今天的內容就分享到這里了!


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    9519

    瀏覽量

    157020
  • CAN
    CAN
    +關注

    關注

    59

    文章

    3067

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    迅為驅動開發實戰:iTOP-RK3568開發板eDP屏幕移植全攻略

    迅為驅動開發實戰:iTOP-RK3568開發板eDP屏幕移植全攻略
    的頭像 發表于 12-30 15:42 ?895次閱讀
    迅為驅動<b class='flag-5'>開發</b><b class='flag-5'>實戰</b>:iTOP-RK3568<b class='flag-5'>開發</b>板eDP屏幕移植<b class='flag-5'>全攻略</b>

    GPS設計全攻略

    電子發燒友網站提供《GPS設計全攻略.pdf》資料免費下載
    發表于 12-01 17:10 ?0次下載

    醫療電子EMC整改:原理到實戰的系統化全攻略策略

    深圳南柯電子|醫療電子EMC整改:原理到實戰的系統化全攻略策略
    的頭像 發表于 11-27 09:45 ?697次閱讀

    【迅為RK3568開發板NPU實戰】別再閑置你的NPU!手把手教你玩轉RKNN-Toolkit2 的使用

    【迅為RK3568開發板NPU實戰】別再閑置你的NPU!手把手教你玩轉RKNN-Toolkit2 的使用
    的頭像 發表于 11-11 14:21 ?1116次閱讀
    【迅為RK3568<b class='flag-5'>開發</b>板NPU<b class='flag-5'>實戰</b>】別再閑置你的NPU!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>玩轉RKNN-Toolkit2 的使用

    Air8000 模塊 CAN 接口實戰開發:從入門到配置的完整流程指南

    Air8000 模塊 CAN 接口開發配置流程,涵蓋硬件連接、驅動移植、參數設置及調試技巧
    的頭像 發表于 10-29 14:05 ?482次閱讀
    <b class='flag-5'>Air8000</b> <b class='flag-5'>模塊</b> <b class='flag-5'>CAN</b> <b class='flag-5'>接口實戰</b><b class='flag-5'>開發</b>:從入門到<b class='flag-5'>配置</b>的完整流程指南

    一招破解音頻硬件困局:Air8000參考設計讓開發零門檻

    音頻產品開發成本高、周期長?Air8000參考設計以模塊化思路簡化硬件開發,預驗證的電路方案與豐富的擴展接口,讓
    的頭像 發表于 09-04 15:17 ?973次閱讀
    一招破解音頻硬件困局:<b class='flag-5'>Air8000</b>參考設計讓<b class='flag-5'>開發</b>零門檻

    BLE 5.4時代下,Air8000藍牙通知與手機讀寫操作實戰攻略

    隨著BLE 5.4的普及,Air8000模塊藍牙通信性能再升級。本篇將從實戰角度出發,講解如何通過Air8000發送設備通知,以及如何利用手機APP對從機設備進行數據讀寫,助你高效完成
    的頭像 發表于 08-13 15:31 ?907次閱讀
    BLE 5.4時代下,<b class='flag-5'>Air8000</b>藍牙通知與手機讀寫操作<b class='flag-5'>實戰</b><b class='flag-5'>攻略</b>

    是否必須使用LuatIO?Air8000 GPIO配置與設計規范深度解析

    Air8000的GPIO應用開發中,LuatIO的角色至關重要。本文剖析其必要性,結合設計注意事項,為開發者提供從配置到優化的全流程指南。 想要4G+GNSS+WiFi+BLE+TT
    的頭像 發表于 07-29 13:54 ?526次閱讀
    是否必須使用LuatIO?<b class='flag-5'>Air8000</b> GPIO<b class='flag-5'>配置</b>與設計規范深度解析

    從零到一:基于Air8000的LuatOS softAP配網功能開發教程

    對于開發者而言,快速實現設備的無線網絡配置是項目落地的重要一步。本文以Air8000為核心載體,手把手教學如何基于LuatOS系統開發sof
    的頭像 發表于 07-21 17:32 ?600次閱讀
    從零到一:基于<b class='flag-5'>Air8000</b>的LuatOS softAP配網功能<b class='flag-5'>開發</b>教程

    LuatOS藍牙配網開發全攻略:以Air8000為核心實戰教學

    聚焦Air8000核心板的藍牙配網功能,本文整合開發全流程:硬件準備、腳本編寫、固件燒錄及測試驗證,為開發者提供一站式解決方案。 一、藍牙配網概述 ? 文章開篇先簡單介紹下 Air8000
    的頭像 發表于 07-10 17:17 ?621次閱讀
    LuatOS藍牙配網<b class='flag-5'>開發</b><b class='flag-5'>全攻略</b>:以<b class='flag-5'>Air8000</b>為核心<b class='flag-5'>實戰</b>教學

    Air8000藍牙掃描實戰:從代碼解析到場景應用全攻略

    Air8000藍牙掃描技術的開源,讓觀察者模式的實戰開發變得透明高效。通過拆解示例代碼,開發者能快速掌握如何注冊監聽、處理事件回調,進而將其應用于智能門鎖管理、藍牙資產追蹤等場景,實現
    的頭像 發表于 07-06 16:50 ?586次閱讀
    <b class='flag-5'>Air8000</b>藍牙掃描<b class='flag-5'>實戰</b>:從代碼解析到場景應用<b class='flag-5'>全攻略</b>

    多功能+高擴展能力加持,Air8000開發板最新資料

    ”,尤其適合需要通信、控制、數據采集的場景,如:遠程監控、智能終端等。 一、開發板主要配置 Air8000開發板基于Air8000多功能工業
    的頭像 發表于 06-09 14:18 ?702次閱讀
    多功能+高擴展能力加持,<b class='flag-5'>Air8000</b><b class='flag-5'>開發</b>板最新資料

    《零基礎開發AI Agent——手把手教你用扣子做智能體》

    《零基礎開發AI Agent——手把手教你用扣子做智能體》是一本為普通人量身打造的AI開發指南。它不僅深入淺出地講解了Agent的概念和發展,還通過詳細的工具介紹和
    發表于 03-18 12:03

    手把手教你做星閃無人機—KaihongOS星閃無人機開發實戰》系列課程課件匯總

    —KaihongOS星閃無人機開發實戰》系列課程,該課程與《手把手教你做PC—KaihongOS筆記本電腦開發
    發表于 03-18 10:33

    手把手教你做PC-KaihongOS筆記本電腦開發實戰》課件匯總

    ”攜手“電子發燒友”聯合推出了 《KaihongOS手把手系列直播課程》,該系列課程以實際產品為案例,詳細講解每個產品的開發全流程。 此次首發內容是《手把手教你做PC-Kaihong
    發表于 03-18 10:25