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

為什么要設計一款RS485串口服務器ZLAN5143I?
moxa串口服務器通訊設置參數(shù)
串口服務器調(diào)試方法_口服務器怎么設置

什么是串口服務器,串口服務器的作用是什么
工業(yè)級485串口服務器
RS485串口服務器
4串口服務器
串口服務器的類型及作用
串口服務器的作用?
基于沁恒CH32V307的8串口服務器設計方案
利用沁恒赤菟V307實現(xiàn)八串口服務器

工業(yè)串口設備通訊神器:串口服務器CS64J

評論