前言
基于cw32實現(xiàn)的多機(jī)通信
針對于復(fù)雜的通信環(huán)境,設(shè)計一款用于多機(jī)互聯(lián)的通信系統(tǒng)。
本系統(tǒng)采用CW32F030C8T6作為主控芯片
小板獨立引出了IIC,SPI,另外接了一個USB轉(zhuǎn)串口的CH340模塊,以及一個RS485通信模塊。
一個好看的最小系統(tǒng)板
整體的電路設(shè)計
該小板主要用于通信課程的課程設(shè)計,因此對所有管腳做了引出,對于幾種常用的通信功能引腳都將該腳的接口按照習(xí)慣的順序單獨排列在了板子的周圍
對于oled
對于板子上方的 IIC 接口可用于通信測試,也可用 OLED 屏幕的接口,該接口共有8ping ,順序按照商家銷售的小屏幕進(jìn)行了排列
(4接口與8接口)
需要注意的是在使用八接口時需要將板子背面的控制線焊接 ,在使用4線就能完成時,其他端口均可以當(dāng)成正常端口輸出
對于RS485
本次設(shè)計采用的MAX1348通信芯片,該款芯片擁有兩個版本對于 E 版可實現(xiàn)500kb/s的無差錯通信,并且使用這種差分通信方式,在多機(jī)互接時只需要兩個根線就可以實現(xiàn)消息的收發(fā),更多關(guān)于RS485
同樣對于該接口,在不使用時可不對連接處進(jìn)行焊接 t1與t2
對于該接口焊接時,溫度200最為合適
通信方案
基于modbus的思想,將一段信息分為了 起始,地址區(qū),指令區(qū),數(shù)據(jù)區(qū),校驗區(qū),停止符
該段信息表示:起始符為 @,地址是 001,指令為 110,需要接收到的數(shù)據(jù)位65533,crc校驗碼 3CFC,并且附帶了一個回車符但他是隱藏的,在這段數(shù)據(jù)中我為每段區(qū)域添加了一個 # 用于區(qū)分,在實際應(yīng)用時去掉 # 判斷,改為數(shù)據(jù)位判斷一樣可以實現(xiàn)
代碼實現(xiàn)
數(shù)據(jù)處理
在使用串口發(fā)送文本數(shù)據(jù)時,發(fā)出的是ascll編碼表的十進(jìn)制數(shù),進(jìn)入單片機(jī)后會存儲為十六進(jìn)制數(shù),我們需要根據(jù)各區(qū)域數(shù)據(jù)的用途,在提取數(shù)據(jù)時做出不同存儲類型,如在提取編號時將編號存儲為字符型可為我們提供更豐富編號選擇 :A001;
crc校驗
這是一個用于crc校驗的計算器用于驗證:crc校驗計算機(jī)
這個是部分的通信協(xié)議參考的crc模型,其中:
WIDTH:寬度,即生成的CRC數(shù)據(jù)位寬(0000/0000 0000/0000 0...)
POLY:十六進(jìn)制多項式(可以看到在各各模型中均有對應(yīng)的多項式;如modbus模型,數(shù)據(jù)第16 15 2 1 這幾個位為‘1’,再轉(zhuǎn)換為十六進(jìn)制),要注意的是省略了最高位
INIT:CRC初始值,和WIDTH位寬一致
XOROUT:計算結(jié)果與此參數(shù)進(jìn)行異或運算后得到最終的CRC值
REFIN:true或false,在進(jìn)行計算之前,原始數(shù)據(jù)是否翻轉(zhuǎn)(要注意的是翻轉(zhuǎn)是是按位翻轉(zhuǎn)的,如:0011 == 1100)
REFOUT:true或false,運算完成之后,得到的CRC值是否進(jìn)行翻轉(zhuǎn)(同上)
CW32f030自帶了crc校驗以及相應(yīng)的模型,因此我們無須具體的去寫完一個校驗,學(xué)會調(diào)用即可,且硬件自帶的crc校驗運行速度是要快于軟件實現(xiàn)的,調(diào)用方法參考:cw32官方程序移植參考
調(diào)試
點擊這個地方可以進(jìn)入調(diào)試模式
在這里可以添加一個變量觀察窗口
將變量復(fù)制進(jìn)串口,就可實時看到crc校驗后的結(jié)果了
串口默認(rèn)配置
需要注意的是在我寫的代碼里,數(shù)據(jù)停止位是換行 ,即需要在最后一個 # 后面按一次 enter 鍵
我在cw32里移植了一個RTOS,不使用可以直接刪除,只用在了main.c函數(shù)中,移植過程:cw32的RTOS移植
PCB板上方空余了兩角空間可放置自己需要的通信模塊
背面焊接點按鍵示意
4.14驗證不同電源之間通信
4.15 發(fā)送搶占
導(dǎo)圖
代碼實現(xiàn)
更多功能還在完善中
預(yù)計完善 發(fā)送搶占 碰撞檢測
原理圖
PCB
下載鏈接:正在審核
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635297 -
半導(dǎo)體
+關(guān)注
關(guān)注
334文章
27363瀏覽量
218707 -
通信
+關(guān)注
關(guān)注
18文章
6032瀏覽量
135992 -
RX480
+關(guān)注
關(guān)注
0文章
4瀏覽量
4072 -
CW32
+關(guān)注
關(guān)注
1文章
203瀏覽量
641 -
武漢芯源
+關(guān)注
關(guān)注
1文章
66瀏覽量
255
發(fā)布評論請先 登錄
相關(guān)推薦
評論