新聞中心
概述

站在用戶的角度思考問題,與客戶深入溝通,找到東區(qū)網(wǎng)站設(shè)計(jì)與東區(qū)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋東區(qū)地區(qū)。
UART(Universal Asynchronous Receiver-Tranitter)是一種串行通信接口,廣泛應(yīng)用于各種嵌入式系統(tǒng)和通信設(shè)備中。在Linux系統(tǒng)中,使用UART接口可以實(shí)現(xiàn)設(shè)備之間的串行通信,本文將深入探討UART接口在Linux系統(tǒng)中的應(yīng)用。
UART接口的物理層和協(xié)議層
UART接口具有兩個(gè)物理層和一個(gè)協(xié)議層。物理層包括傳輸線路和接口電路,傳輸線路中的數(shù)據(jù)通過電平的高低來傳遞信號(hào),接口電路則負(fù)責(zé)將接收到的信號(hào)轉(zhuǎn)換成數(shù)據(jù)。協(xié)議層是串行通信的邏輯層,包括數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等。UART接口需要在物理層和協(xié)議層都具備對(duì)應(yīng)的硬件支持才能正常工作。
Linux系統(tǒng)中的UART驅(qū)動(dòng)
Linux系統(tǒng)中的UART驅(qū)動(dòng)分為字符驅(qū)動(dòng)和RT驅(qū)動(dòng)兩種。字符驅(qū)動(dòng)在Linux的內(nèi)核中實(shí)現(xiàn),是最基礎(chǔ)的UART驅(qū)動(dòng),支持?jǐn)?shù)據(jù)的傳輸、接收、控制、查看狀態(tài)等操作;RT驅(qū)動(dòng)則是在字符驅(qū)動(dòng)的基礎(chǔ)上實(shí)現(xiàn)硬實(shí)時(shí)性和實(shí)時(shí)性能,可以滿足高性能和實(shí)時(shí)性要求的場(chǎng)景。
在Linux系統(tǒng)中,UART驅(qū)動(dòng)以模塊的形式存在,由內(nèi)核或者用戶程序加載。加載驅(qū)動(dòng)后,系統(tǒng)會(huì)將UART接口映射到系統(tǒng)資源中,并提供相應(yīng)的接口供上層應(yīng)用調(diào)用。在編寫應(yīng)用程序時(shí),可以使用Linux系統(tǒng)提供的文件操作函數(shù)(如open、read、write等)以及ioctl函數(shù)來控制和訪問UART接口。
使用UART接口進(jìn)行串行通信
在Linux系統(tǒng)中,用戶可以使用串口通信工具(如minicom、picocom、cu等)或自行編寫應(yīng)用程序利用UART接口進(jìn)行串行通信。串行通信主要包括數(shù)據(jù)的發(fā)送和接收兩個(gè)過程。
數(shù)據(jù)發(fā)送:
1.打開串口設(shè)備文件
打開設(shè)備文件時(shí)需要指定訪問串口的方式、串口設(shè)備名、權(quán)限等參數(shù)。方法如下:
fd = open(“/dev/ttyUSB0”, O_RDWR | O_NOCTTY | O_NDELAY);
2.配置串口參數(shù)
配置串口參數(shù)需設(shè)置波特率、數(shù)據(jù)位、停止位、校驗(yàn)位等,方法如下:
//新建串口配置結(jié)構(gòu)體
struct termios options;
//獲取當(dāng)前串口配置參數(shù)
tcgetattr(fd, &options);
//設(shè)置波特率
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
//設(shè)置數(shù)據(jù)位,8位數(shù)據(jù)
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
//設(shè)置校驗(yàn)位,無校驗(yàn)位
options.c_cflag &= ~PARENB;
options.c_iflag &= ~(INPCK | ISTRIP);
//設(shè)置停止位,1位停止位
options.c_cflag &= ~CSTOPB;
//設(shè)置為原始模式
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
//清空串口緩存
tcflush(fd, TCIFLUSH);
//應(yīng)用新的配置
tcsetattr(fd, TCSANOW, &options);
3.發(fā)送數(shù)據(jù)
調(diào)用write函數(shù)向串口發(fā)送數(shù)據(jù),方法如下:
char buffer[128] = {0};
sprintf(buffer, “Hello, I’m UART interface.\n”);
write(fd, buffer, strlen(buffer));
4.關(guān)閉串口設(shè)備
發(fā)送完數(shù)據(jù)后需要關(guān)閉串口設(shè)備,方法如下:
close(fd);
數(shù)據(jù)接收:
1.打開串口設(shè)備文件
打開設(shè)備文件時(shí)與發(fā)送數(shù)據(jù)時(shí)的方法相同。
2.配置串口參數(shù)
配置串口參數(shù)時(shí)需要與發(fā)送數(shù)據(jù)時(shí)一致。
3.接收數(shù)據(jù)
調(diào)用read函數(shù)從串口接收數(shù)據(jù),方法如下:
char buffer[128] = {0};
int len = read(fd, buffer, 128);
printf(“%s”, buffer);
4.關(guān)閉串口設(shè)備
與發(fā)送數(shù)據(jù)時(shí)的方法相同。
本文通過介紹UART接口的物理層和協(xié)議層、Linux系統(tǒng)中的UART驅(qū)動(dòng)、使用UART接口進(jìn)行串行通信等方面,深入探究了UART接口在Linux系統(tǒng)中的應(yīng)用。了解和掌握UART接口在Linux系統(tǒng)中的使用,對(duì)于嵌入式系統(tǒng)開發(fā)和通信設(shè)備開發(fā)是非常必要的。
相關(guān)問題拓展閱讀:
- linux查找串口
- 如何在Linux檢查并使用串口
linux查找串口
主板上的耐高乎你看看你是念友com幾?一般com1對(duì)昌悉應(yīng)的就是 /dev/ttyS0,com2對(duì)應(yīng)的就是/dev/ttyS1..依次類推。
1、設(shè)備入口
可以查/dev/ttyS* 、/dev/*uart*(主設(shè)備號(hào)4或者204),之一串口一般為ttyS0、*uart0等
USB轉(zhuǎn)串口設(shè)備一般為/dev/ttyUSB*(主設(shè)備號(hào)188),之一口一般為ttyUSB0
2、以上/dev下只是串口的入口,具體設(shè)備存在與否需要按關(guān)鍵字(ttyS、ttyUSB、uart)查詢/proc/devices以確定。
3、串口為通訊端口,有多個(gè)棚擾串口設(shè)備時(shí),要確定正銷如在被連接的串口是哪個(gè),需鏈斗旦要檢測(cè)一下,如:
cat /dev/ttyS0
用w命令就能看到。
如何在Linux檢查并使用串口
linux 提供了各種工具, Linux 使用 ttySx 作為一個(gè)串口設(shè)備的名稱。例源升如,COM1 (DOS/Windows 名字) 是 ttyS0, COM2 是 ttyS1 等等。
任務(wù): 顯示檢測(cè)到的系統(tǒng)串口支持
簡(jiǎn)單的運(yùn)行 dmesg 命令
$ dmesg | grep tty
輸出:
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A
setserial 命令
setserial 是一個(gè)程序用于設(shè)定并/或報(bào)告某個(gè)沖裂物串口關(guān)聯(lián)的配置信息。該信息包括串口用到的I/O 端口和中斷號(hào),以及Break鍵是否應(yīng)被解釋為Secure Attention Key 等等。 僅僅是輸出如下的命令:
$ setserial -g /dev/ttyS
輸出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
帶-g選項(xiàng)的setserial幫助找到你的Linux板子上的物理串口。
Linux 串口控制臺(tái)程序
一旦串口被確定了,你就能使用許多的工具來配置Linux板子:
minicom- 用于控制modem和連接到dump 設(shè)備的更好的串口通信程序。
wvidial or other GUI dial up networking program – 一個(gè)內(nèi)建智能PPP 撥號(hào)器。
getty / agetty – agetty 打開一個(gè)散液 tty 端口, 提示登錄名稱并調(diào)用 /bin/login 命令。
關(guān)于uart接口與linux的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
分享名稱:深入了解UART接口在Linux系統(tǒng)中的應(yīng)用(uart接口與linux)
分享路徑:http://www.5511xx.com/article/cohishh.html


咨詢
建站咨詢
