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