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