国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

合宙LuatOS的個人空間 http://www.qingdxww.cn/space-uid-176273.html [收藏] [復制] [RSS]

博客

Air780EPM+LuatOS:解鎖CAN總線通信的高效開發秘籍!

已有 134 次閱讀2025-5-7 16:26 |個人分類:4G模組| 物聯網, 單片機, 4G模塊, 通訊模組, 嵌入式硬件

在工業物聯網場景中,穩定可靠的CAN總線通信是關鍵。本文基于Air780EPM模組與LuatOS系統,深入解析如何快速構建CAN通信解決方案,助你突破開發瓶頸,實現設備間高效數據交互。

最新資料詳見:https://docs.openluat.com/air780epm/luatos/api/core/can/

 

一、Can操作庫常量定義
 1.1 CAN工作模式常量

can.MODE_NORMAL:

正常工作模式;

can.MODE_LISTEN:

監聽模式(僅接收,不發送);

can.MODE_TEST:

自測模式(自收自發);

can.MODE_SLEEP:

休眠模式。


1.2 CAN狀態常量

can.STATE_STOP:

停止工作狀態;

can.STATE_ACTIVE:

主動錯誤狀態(一般情況下為該狀態);

can.STATE_PASSIVE:

被動錯誤狀態(總線上錯誤較多時進入,但仍可正常收發);

can.STATE_BUSOFF:

離線狀態(總線錯誤非常多,不能收發,需手動退出);

can.STATE_LISTEN:

監聽狀態(選擇監聽模式時進入);

can.STATE_TEST:

自收自發狀態(選擇自測模式時進入);

can.STATE_SLEEP:

休眠狀態(選擇休眠模式時進入)。


1.3 回調消息類型常量

can.CB_MSG:

有新數據寫入緩存;

can.CB_TX:

數據發送完成(需通過param判斷成功/失敗);

can.CB_ERR:

錯誤報告(param為錯誤碼);

can.CB_STATE:

總線狀態變更,后續param參數是新的狀態,也可以用can.state讀出。


1.4 幀格式常量

can.EXT:擴展幀;

can.STD:標準幀。

 

二、Can操作庫API函數wKgZO2gRubeAQdadAAi5_7cGeh4708.png
2.1 初始化與配置

1)初始化CAN總線

can.init(id, rx_message_cache_max) 

參數:

id:總線ID(0表示can0,1表示can1,通常默認為0)。

rx_message_cache_max:接收緩存消息數最大值(默認使用平臺值)。 

返回值:boolean(成功返回true,失敗返回false)。

示例:

wKgZO2gRufeAQgXYAABNDLe5yuQ955.png

2)配置CAN總線的波特率及時序參數

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

參數:

id:總線ID。

br:波特率(默認1Mbps)。

PTS:

傳播時間段(范圍1~8,默認5)。

PBS1:

相位緩沖段1(范圍1~8,默認4)。

PBS2:

相位緩沖段2(范圍2~8,默認3)。

SJW:

同步補償寬度(范圍1~4,默認2)。 

返回值:boolean。

示例:

wKgZPGgRujyACaIsAABSbqIDDqo119.png

3)設置CAN總線工作模式

can.mode(id, mode) 

參數:

id:總線ID。

mode:

模式常量(如 can.MODE_NORMAL)。

返回值:boolean。

示例:

wKgZPGgRumOAdFSPAABMWd0g-8Q844.png

4)設置消息過濾規則

can.filter(id, dual_mode, ACR, AMR)

參數:

id:總線ID。

dual_mode:是否啟用雙濾波模式。

ACR:接受代碼寄存器(過濾 ID 值)。

AMR:接受掩碼寄存器(掩碼值)。

返回值:boolean。

注意:具體實現依賴硬件特性。


5)設置CAN節點ID及類型can.node(id, node_id, id_type)

參數:

id:總線ID。

node_id:節點 ID。

id_type:ID 類型(can.EXT或can.STD)。

返回值:boolean。

示例:

wKgZO2gRupeAI3mCAABNo0Bwtiw035.png
2.2 數據與收發

1)發送CAN消息

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

參數:

id:總線ID。

msg_id:消息ID。

id_type:

幀類型(can.EXT 或 can.STD)。

RTR:

是否為遠程傳輸請求(true/false)。

need_ack:

是否需要應答(true/false)。

data:

數據(數組,如 {0x01, 0x02})。 

返回值:無。

示例:

wKgZO2gRusyARjpWAABIg2VwJu0252.png

2)接收CAN消息

can.rx(id) 

參數:id:總線ID。

返回值:消息數據(如 {id=0x123, data={0x01, 0x02}})。

示例:

wKgZO2gRuvmAYkeRAABZA62SthM866.png
2.3 狀態與事件

1)注冊事件回調函數

can.on(id, func)

參數:

id:總線ID。

func:回調函數(參數:id, type, param)。

示例:

wKgZO2gRuzCAbviwAADOxJdoVwI511.png

2)獲取當前總線狀態

can.state(id)

參數:id:總線ID。

返回值:狀態常量(如 can.STATE_ACTIVE)。

3)停止指定總線can.stop(id)

參數:id:總線ID。

4)重置總線(恢復默認配置)can.reset(id)

參數:id:總線ID。

5)反初始化總線can.deinit(id)

參數:id:總線ID。

6)啟用/禁用調試信息輸出can.debug(on_off)

參數:on_off(布爾值)。

 

三、CAN開發相關注意事項 

3.1 初始化順序wKgZPGgRu6GAYfS9AACmhO3XfNE642.png3.2 消息發送與接收

使用can.tx發送消息,確保參數正確;通過can.rx拉取消息,或在回調中處理can.CB_MSG。

3.3 狀態監控

定期檢查can.state,處理離線狀態(can.STATE_BUSOFF);錯誤回調can.CB_ERR,需記錄param錯誤碼。

3.4 調試與性能

啟用can.debug(true) 輸出底層日志;接收緩存rx_message_cache_max需根據需求調整,避免消息丟失。

3.5 常見問題

如何解決can.STATE_BUSOFF離線狀態?

需先調用can.reset(id)恢復總線,再重新初始化配置。

如何確保消息發送成功?

通過can.CB_TX回調判斷發送結果,或檢查返回值(若API支持)。

如何處理高頻率消息接收?

增大rx_message_cache_max,或在回調中及時處理消息。

wKgZPGgRu_uAF6U9AAZu0-Z2mm8812.pngwKgZPGgRvAyAZ3ngAAIqztab9BY129.png

更多最新開發資料詳見:www.air780epm.cn

 

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


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部
主站蜘蛛池模板: 国产日韩欧美亚洲 | 亚洲综合色就色手机在线观看 | 窝窝午夜一级看片爽 | 在线天堂中文新版有限公司 | 91免费版视频 | 非洲精品性hd | 六月综合网 | 久久国产麻豆 | 4438五月| 四虎影视在线影院4hu | 久草精彩视频 | 狠狠色婷婷丁香综合久久韩国 | 99精品国产自产在线观看 | 日韩精品视频网站 | 亚洲激情视频在线 | 黄色免费网站在线播放 | 天天干天天操天天透 | 欧美日韩不卡视频 | 国产动漫在线 | 欧美亚洲综合另类在线观看 | 欧美日韩在线视频专区免费 | 韩国一级性生活片 | 欧美特黄视频在线观看 | 毛片日韩| 国产精品视频免费观看 | 天堂网www天堂在线网 | 欧美亚洲一区二区三区导航 | 毛片天堂 | 91在线精品中文字幕 | 欧美91在线 | 成人欧美一区二区三区在线 | 免费香蕉成视频成人网 | 大伊人青草狠狠久久 | 直接进入免费看黄的网站 | 日本久久高清视频 | 韩国资源视频一区二区三区 | 啊~用力cao我cao死我公 | 日本在线视频精品 | 欧美日韩国产精品自在自线 | 精彩视频一区二区三区 | 西瓜影院在线观看理论片 |