1. Uart介紹
1.1 串口資源介紹
EASY EAI Orin-Nano開發板的串口資源被劃分為兩類。一類是已被特定功能所占用的【不可用串口】,另外一個類可由用戶自由使用的【可用串口】。
【不可直接使用的串口】分布情況如下所示。
串口號 | 設備節點 | 描述 |
串口0 | /dev/ttyFIQ0 | 調試串口占用,不作為普通串口使用 |
串口1~3 | 無 | 串口所關聯的引腳,已被復用成其他功能 |
串口5~7 | 無 | 串口所關聯的引腳,已被復用成其他功能 |
串口9 | 無 | 串口所關聯的引腳,已被復用成其他功能 |
串口11 | 無 | 串口所關聯的引腳,已被復用成其他功能 |
硬件分布情況如下所示。
【可用串口】分布情況如下所示。
串口號 | 設備節點 | 描述 |
串口4 | /dev/ttyS4 | TTL電平。 |
串口8 | /dev/ttyS8 | TTL電平。 |
串口10 | /dev/ttyS10 | TTL電平。 |
硬件分布情況如下所示。
1.2 硬件接線
常規接線,設備與設備進行通信:
本單例測試接線,利用跳線帽把Rxd引腳與Txd引腳短接,進行自發自收。
2. 快速上手
2.1 例程源碼下載
到【百度網盤】上下載相關的單例程序:
鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234
提取碼: 1234
比如在windows環境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規定,用戶可自主選擇),如下圖所示。
然后把例程【復制粘貼】到nfs掛載目錄中。(不清楚目錄如何構建的,可以參考《入門指南/開發環境準備/nfs服務搭建與掛載》)
2.2 例程編譯&運行
通過adb shell進入開發板環境(不清楚如何通過adb進行調試,可以參考《入門指南/開發板調試方式介紹/adb調試》),執行下方命令定位到demo目錄,并且執行編譯操作。
cd /home/orin-nano/Desktop/nfs/06_Uart/ ./build.sh

編譯成功后,相關的demo會生成2個可執行程序在Release目錄下。它們分別是發送端demo:test-Send,接收端demo:test-Recv。
先執行下方命令以運行接收端demo,如下所示。
sudo ./Release/test-Recv /dev/ttyS10
執行效果如下所示,此時接收端會等待發送端發來數據。
再用【Ctrl+Shift+T】打開新終端,然后進入adbshell,定位到demo目錄,如何所示:
最后執行下方命令以運行發送端demo,如下所示。
sudo ./Release/test-Send /dev/ttyS10

此時切換回來剛才的終端,就會發現接收端demo已經收到了發送端demo發過來的數據了。
3. C語言使用案例
串口的C語言使用案例,接收端代碼地址為06_UART/test-uart/Recv.c,供用戶編碼參考。以下代碼展示了對串口接收端操作流程:
int main(int argc, char **argv) { if(2 != argc){ printf("Usage:n"); printf(" sudo %s %sn", argv[0], "/dev/ttyS4/8/10?>"); return -1; } int fd = UART_Open(argv[1]); if(fd < 0){ printf("33[33m【Open ERROR!】%sn", DEBUG_COLOR_TAIL); return -1; } if(false == UART_Set(fd, 115200, 0, 8, 1, 'N')){ printf("33[33m【Init ERROR!】%sn", DEBUG_COLOR_TAIL); return -1; } const char *strReceiver = "I am uart Receiver"; printf("33[36m【Init OK "%s"】%sn", strReceiver, DEBUG_COLOR_TAIL); char recvBuf[128]={0}; while(1){ if(UART_Recv(fd, recvBuf, sizeof(recvBuf)) <= 0){ continue; }else{ printf("33[36m【Recv Msg from Sender】:%s", DEBUG_COLOR_TAIL); printf(" %sn", recvBuf); break; } } UART_Close(fd); printf("33[42m【Recv date OK. BYE BYE!】%sn", DEBUG_COLOR_TAIL); return 0; }
發送端代碼地址為06_UART/test-uart/Send.c,供用戶編碼參考。以下代碼展示了對串口發送端操作流程:
int main(int argc, char **argv) { if(2 != argc){ printf("Usage:n"); printf(" sudo %s %sn", argv[0], "/dev/ttyACM4/8/10?>"); return -1; } int fd = UART_Open(argv[1]); if(fd < 0){ printf("33[33m【Open ERROR!】%sn", DEBUG_COLOR_TAIL); return -1; } if(false == UART_Set(fd, 115200, 0, 8, 1, 'N')){ printf("33[33m【Init ERROR!】%sn", DEBUG_COLOR_TAIL); return -1; } char *strSender = "I am uart Sender"; printf("33[36m【Init OK "%s"】%sn", strSender, DEBUG_COLOR_TAIL); int len = UART_Send(fd, strSender, strlen(strSender)); if(len <= 0){ printf("33[41m【Send data ERROR!】%sn", DEBUG_COLOR_TAIL); return -1; } UART_Close(fd); printf("33[42m【Send date OK. BYE BYE!】%sn", DEBUG_COLOR_TAIL); return 0; }
其中UART_Open(),UART_Set(),UART_Send(),UART_Recv()是對系統調用的易用化封裝。具體實現于06_UART/commonApi/uart.c
審核編輯 黃宇
-
uart
+關注
關注
22文章
1264瀏覽量
103227 -
開發板
+關注
關注
25文章
5499瀏覽量
102165 -
rk3576
+關注
關注
1文章
145瀏覽量
552
發布評論請先 登錄
基于RK3576開發板的MIPI-DSI使用

評論