<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > CANopen協(xié)議棧IO模塊設計

CANopen協(xié)議棧IO模塊設計

作者:魯猛 時(shí)間:2025-03-18 來(lái)源:EEPW 收藏

1   整體思路

本文引用地址:http://dyxdggzs.com/article/202503/468259.htm

一個(gè)工業(yè)級-IO 至少需要滿(mǎn)足?

1.低成本:ARM-M0 32 bit 低成本

2.性能高:主頻80M 集成CAN,同時(shí)兼容CAN-FD

3.寬電壓:工作電壓1.62 ~ 3.6 V

4.滿(mǎn)足工業(yè)要求:工作溫度-40 ~ 125 ℃,覆蓋工業(yè)級范圍

一個(gè)工業(yè)級-IO 需要占用的內存資源?

1.內部閃存FLASH:128 k Byte

2.內部SRAM:32 k Byte

image.png

2   項目設計過(guò)程

2.1 硬件設計

CAN接口硬件設計:

1742271833290855.png

1.采用電源信號雙隔離

2.保險+ 電感防雷擊設計

3.RJ45 輸出,方便級聯(lián)

Serial接口硬件設計:

1742271880248793.png

1.USB 轉串口芯片CH340G

2.僅用于Debug 信息打印

輸入、輸出測試IO硬件設計:

輸出光耦隔離,MOS電流增強

1742271928692836.png

輸入雙向光耦隔離,支持PNP、NPN模式

1742271988693354.png

2.2 軟件設計

CAN接口軟件實(shí)現

1742272079496417.png

1.CAN初始化

2.CAN的郵箱發(fā)送

3.CAN中斷接收

image.png

IO操作軟件實(shí)現:

1742272165720662.png

1742272181911219.png

1.IO初始化

2.IO的翻轉

協(xié)議棧的的移植:

image.png

1.協(xié)議棧的移植(stack、ccm);

2.對象字典的遷移(objdict);

3.芯片底層的對接(driver);

CANopen對象字典和CIA401實(shí)現:

輸入映射rpdo:

1742272361706134.png

1742272375420406.png

1742272391585671.png

1742272415764795.png

輸入處理:

1742272441207023.png

1742272462248572.png

3   系統流程圖

image.png

硬件流程圖概述:

1.電源上電后,電源管理芯片控制5 V 電源端的輸出,后端無(wú)短路后直接輸出;

2. 5 V 電源使能后,經(jīng)過(guò)LDO 穩壓芯片到3.3 V 輸出到MCU 和各個(gè)接口芯片;

3.MCU供電正常后,開(kāi)始復位,取外部晶振倍頻后以80M 主頻運行;

4.MCU運行后會(huì )初始化相關(guān)外設,在主循環(huán)中進(jìn)行CAN報文的收發(fā)和IO端口的控制;

5.MCU將內部的CAN報文經(jīng)TTL信號隔離后發(fā)送到CAN收發(fā)器,交由收發(fā)器再發(fā)送到總線(xiàn)上;

6. CAN收發(fā)器收CAN總線(xiàn)數據,轉換為T(mén)TL信號,隔離后再發(fā)送的MCU 內部的CAN 控制器的FIFO 中;

7. MCU還控制著(zhù)硬件的輸入輸出IO狀態(tài);

1742272605412209.png

軟件流程圖概述:

1.系統上電后, Mspm0g3507 會(huì )進(jìn)行系統初始化;

2.系統初始化完畢后,會(huì )進(jìn)行外設的初始化(IO、CAN、Serial、Timer...);

3.在CAN外設正常初始化后,對CANopen協(xié)議棧進(jìn)行初始化,此時(shí)會(huì )分配N(xiāo)ode-Id,波特率、以及將對應的CANopen節點(diǎn)切為預操作狀態(tài);

4.MCU在主循環(huán)中會(huì )接收CANopen主節點(diǎn)的信息,會(huì )進(jìn)行以下處理:CANopen狀態(tài)機處理、PDO報文處理、SDO報文處理以及自身心跳報文的發(fā)送等;

5.MCU在主循環(huán)中遵循CIA401協(xié)議,根據主節點(diǎn)發(fā)送的對象信息和狀態(tài)機進(jìn)行相關(guān)的CIA401的處理;

6. MCU根據CIA401對輸入和輸出IO進(jìn)行狀態(tài)的更新和信號的輸出;

4   系統實(shí)物圖

image.png

image.png

輸出端子Y16十六通道,這里只有了8通道

image.png

image.png

CAN收發(fā)電路,RJ45連接

image.png

和主控制器連接在一起。

(本文來(lái)源于《EEPW》



關(guān)鍵詞: 202503 CANopen IO模塊

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>