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

合宙LuatOS的個人空間 http://m.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
返回頂部
主站蜘蛛池模板: 亚洲噜噜噜噜噜影院在线播放 | 欧美国产大片 | 99热这里只有精品在线观看 | 国产精彩对白综合视频 | 最近韩国日本免费免费版 | 非洲黑人毛片 | 免费看黄网 | 日日摸夜夜欧美一区二区 | 欧美一区二区三区在线观看 | 亚洲看片| 欧美精品成人久久网站 | 在线播放黄色片 | 国产精品福利在线 | 欧美一卡2卡三卡4卡公司免费 | 免费在线观看的黄色网址 | 一区二区不卡在线观看 | 欧美在线免费观看视频 | 精品久久中文网址 | 99草精品视频 | 在线看黄页 | h免费观看 | 亚洲激情在线观看 | 韩国一级毛片a级免观看 | 国产免费自拍视频 | 国产在线91观看免费观看 | 91福利刘玥国产在线观看 | 日本一区二区三区中文字幕视频 | 国产全黄a一级毛片视频 | 99在线观看| 无人视频完整免费版视频观看下载 | 裙底盗摄国产精品 | 久久亚洲国产中v天仙www | 韩剧网最新的韩国电视剧免费观看 | 拍拍叫痛的无挡视频免费 | 亚洲成人观看 | 精品在线99 | 国内毛片 | 91高清完整版在线观看 | 麻豆激情| 国产90后美女露脸在线观看 | 欧美视频一区二区三区四区 |