簡介
串口服務(wù)器,提供串口轉(zhuǎn)網(wǎng)絡(luò)的功能,將串口轉(zhuǎn)換成TCP/IP協(xié)議網(wǎng)絡(luò)接口,實(shí)現(xiàn)串口和網(wǎng)絡(luò)接口的數(shù)據(jù)雙向透明傳輸,擴(kuò)展串口設(shè)備的通訊距離。
赤菟V307是搭載沁恒自研RISC-V內(nèi)核青稞V4F的高性能互聯(lián)型MCU,主頻支持144MHz,支持硬件浮點(diǎn)運(yùn)算(FPU),提供八個(gè)UART接口、USB2.0高速接口(480Mbps)并內(nèi)置了PHY收發(fā)器、千兆以太網(wǎng)MAC并集成10M PHY、2個(gè)CAN接口等豐富的外設(shè)資源。
基于八個(gè)UART接口、10M以太網(wǎng)的強(qiáng)大外設(shè),通過單片赤菟V307即可實(shí)現(xiàn)八串口服務(wù)器,每個(gè)串口獨(dú)立工作。
源碼倉庫地址:https://github.com/openwch/ch32v307/tree/main/Application/8_uarts_server
網(wǎng)口端設(shè)計(jì)
網(wǎng)口端采用的是開源的輕量級TCP/IP協(xié)議棧LwIP,可以輕松實(shí)現(xiàn)赤菟V307網(wǎng)口端的TCP、UDP通信。
例程中默認(rèn)開啟的是TCP Client模式,采用單向循環(huán)鏈表的方式接收TCP Server發(fā)過來的數(shù)據(jù)。
當(dāng)串口端接收到數(shù)據(jù)時(shí),直接啟動TCP Client的發(fā)送函數(shù),并更新隊(duì)列的讀指針。
串口端設(shè)計(jì)
串口端為了加快數(shù)據(jù)的收發(fā),采用DMA循環(huán)隊(duì)列的方式接收數(shù)據(jù),通過查詢接收DMA 傳輸數(shù)據(jù)數(shù)目寄存器CNTR,與上一次該值進(jìn)行比較,有變化則說明串口接收到數(shù)據(jù),此時(shí)便更新隊(duì)列寫指針,并計(jì)算隊(duì)列中數(shù)據(jù)長度。
根據(jù)網(wǎng)口接收端的鏈表中的數(shù)據(jù)地址及長度,啟動串口端的發(fā)送DMA進(jìn)行數(shù)據(jù)發(fā)送。
多任務(wù)設(shè)計(jì)
通過RT-Thread操作系統(tǒng),創(chuàng)建兩個(gè)線程,分別為用于網(wǎng)口端接收數(shù)據(jù)的“eth_rev”線程和用于串口端接收數(shù)據(jù)的“uart_rev”線程。
采用時(shí)間片輪轉(zhuǎn)方式進(jìn)行這兩個(gè)線程的調(diào)度,當(dāng)“eth_rev”線程收到網(wǎng)口端的數(shù)據(jù)時(shí),啟動串口端的發(fā)送DMA將數(shù)據(jù)通過串口發(fā)送出去;當(dāng)“uart_rev”線程收到串口端的數(shù)據(jù)時(shí),啟動網(wǎng)口端的發(fā)送函數(shù)將數(shù)據(jù)通過網(wǎng)口發(fā)送出去,這樣就實(shí)現(xiàn)了串口和網(wǎng)絡(luò)接口的數(shù)據(jù)雙向透明傳輸。
驗(yàn)證
串口默認(rèn)波特率為115200,實(shí)測八個(gè)串口獨(dú)立工作,可以實(shí)現(xiàn)收發(fā)10+KB/s的速度。
該例程目前僅實(shí)現(xiàn)了TCP Client的收發(fā),還有TCP Server、UDP Server/Client等需要完善,希望各位開發(fā)者能夠積極提交pr,一起完善該項(xiàng)目??商砑游⑿?5950380583為好友,注明:赤菟V307,邀請您進(jìn)入沁恒RISC-V MCU開發(fā)者微信交流群,一起玩轉(zhuǎn)RISC-V MCU。
-
mcu
+關(guān)注
關(guān)注
146文章
17316瀏覽量
352254 -
網(wǎng)絡(luò)接口
+關(guān)注
關(guān)注
0文章
87瀏覽量
17263 -
串口
+關(guān)注
關(guān)注
14文章
1557瀏覽量
76875 -
串口服務(wù)器
+關(guān)注
關(guān)注
1文章
165瀏覽量
17391 -
RISC-V
+關(guān)注
關(guān)注
45文章
2322瀏覽量
46403
發(fā)布評論請先 登錄
相關(guān)推薦
評論