資料介紹
6.4.1 串口概述
常見的數(shù)據(jù)通信的基本方式可分為并行通信與串行通信兩種。
n 并行通信是指利用多條數(shù)據(jù)傳輸線將一個字?jǐn)?shù)據(jù)的各比特位同時傳送。它的特點是傳輸速度快,適用于傳輸距離短且傳輸速度較高的通信。
n 串行通信是指利用一條傳輸線將數(shù)據(jù)以比特位為單位順序傳送。特點是通信線路簡單,利用簡單的線纜就可實現(xiàn)通信,降低成本,適用于傳輸距離長且傳輸速度較慢的通信。
串口是計算機(jī)一種常用的接口,常用的串口有RS-232-C接口。它是于1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機(jī)終端生產(chǎn)廠家共同制定的用于串行通信的標(biāo)準(zhǔn),它的全稱是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。該標(biāo)準(zhǔn)規(guī)定采用一個DB25芯引腳的連接器或9芯引腳的連接器,其中25芯引腳的連接器如圖6.3所示。
![Linux串口應(yīng)用編程解析](/uploads/allimg/171018/2362486-1G01Q6451EN.png)
圖6.3 25引腳串行接口圖
S3C2410X內(nèi)部具有兩個獨立的UART控制器,每個控制器都可以工作在Interrupt(中斷)模式或者DMA(直接存儲訪問)模式。同時,每個UART均具有16字節(jié)的FIFO(先入先出寄存器),支持的最高波特率可達(dá)到230.4Kbps。UART的操作主要可分為以下幾個部分:數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、產(chǎn)生中斷、設(shè)置波特率、Loopback模式、紅外模式以及硬軟流控模式。
串口參數(shù)的配置讀者在配置超級終端和minicom時也已經(jīng)接觸過,一般包括波特率、起始位比特數(shù)、數(shù)據(jù)位比特數(shù)、停止位比特數(shù)和流控模式。在此,可以將其配置為波特率115200、起始位1b、數(shù)據(jù)位8b、停止位1b和無流控模式。
在Linux中,所有的設(shè)備文件一般都位于“/dev”下,其中串口1和串口2對應(yīng)的設(shè)備名依次為“/dev/ttyS0”和“/dev/ttyS1”,而且USB轉(zhuǎn)串口的設(shè)備名通常為“/dev/ttyUSB0”和“/dev/ttyUSB1”(因版本不同該設(shè)備名會有所不同),可以查看在“/dev”下的文件以確認(rèn)。在本章中已經(jīng)提到過,在Linux下對設(shè)備的操作方法與對文件的操作方法是一樣的,因此,對串口的讀寫就可以使用簡單的read()、write()函數(shù)來完成,所不同的只是需要對串口的其他參數(shù)另做配置,下面就來詳細(xì)講解串口應(yīng)用開發(fā)的步驟。
6.4.2 串口設(shè)置詳解
串口的設(shè)置主要是設(shè)置struct termios結(jié)構(gòu)體的各成員值,如下所示:
#include《termios.h》
struct termios
{
unsigned short c_iflag; /* 輸入模式標(biāo)志 */
unsigned short c_oflag; /* 輸出模式標(biāo)志 */
unsigned short c_cflag; /* 控制模式標(biāo)志*/
unsigned short c_lflag; /* 本地模式標(biāo)志 */
unsigned char c_line; /* 線路規(guī)程 */
unsigned char c_cc[NCC]; /* 控制特性 */
speed_t c_ispeed; /* 輸入速度 */
speed_t c_ospeed; /* 輸出速度 */
};
termios是在POSIX規(guī)范中定義的標(biāo)準(zhǔn)接口,表示終端設(shè)備(包括虛擬終端、串口等)。口是一種終端設(shè)備,一般通過終端編程接口對其進(jìn)行配置和控制。在具體講解串口相關(guān)編程之前,先了解一下終端相關(guān)知識。
終端有3種工作模式,分別為規(guī)范模式(canonical mode)、非規(guī)范模式(non-canonical mode)和原始模式(raw mode)。
通過在termios結(jié)構(gòu)的c_lflag中設(shè)置ICANNON標(biāo)志來定義終端是以規(guī)范模式(設(shè)置ICANNON標(biāo)志)還是以非規(guī)范模式(清除ICANNON標(biāo)志)工作,默認(rèn)情況為規(guī)范模式。
在規(guī)范模式下,所有的輸入是基于行進(jìn)行處理。在用戶輸入一個行結(jié)束符(回車符、EOF等)之前,系統(tǒng)調(diào)用read()函數(shù)讀不到用戶輸入的任何字符。除了EOF之外的行結(jié)束符(回車符等)與普通字符一樣會被read()函數(shù)讀取到緩沖區(qū)之中。在規(guī)范模式中,行編輯是可行的,而且一次調(diào)用read()函數(shù)最多只能讀取一行數(shù)據(jù)。如果在read()函數(shù)中被請求讀取的數(shù)據(jù)字節(jié)數(shù)小于當(dāng)前行可讀取的字節(jié)數(shù),則read()函數(shù)只會讀取被請求的字節(jié)數(shù),剩下的字節(jié)下次再被讀取。
常見的數(shù)據(jù)通信的基本方式可分為并行通信與串行通信兩種。
n 并行通信是指利用多條數(shù)據(jù)傳輸線將一個字?jǐn)?shù)據(jù)的各比特位同時傳送。它的特點是傳輸速度快,適用于傳輸距離短且傳輸速度較高的通信。
n 串行通信是指利用一條傳輸線將數(shù)據(jù)以比特位為單位順序傳送。特點是通信線路簡單,利用簡單的線纜就可實現(xiàn)通信,降低成本,適用于傳輸距離長且傳輸速度較慢的通信。
串口是計算機(jī)一種常用的接口,常用的串口有RS-232-C接口。它是于1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機(jī)終端生產(chǎn)廠家共同制定的用于串行通信的標(biāo)準(zhǔn),它的全稱是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。該標(biāo)準(zhǔn)規(guī)定采用一個DB25芯引腳的連接器或9芯引腳的連接器,其中25芯引腳的連接器如圖6.3所示。
![Linux串口應(yīng)用編程解析](/uploads/allimg/171018/2362486-1G01Q6451EN.png)
圖6.3 25引腳串行接口圖
S3C2410X內(nèi)部具有兩個獨立的UART控制器,每個控制器都可以工作在Interrupt(中斷)模式或者DMA(直接存儲訪問)模式。同時,每個UART均具有16字節(jié)的FIFO(先入先出寄存器),支持的最高波特率可達(dá)到230.4Kbps。UART的操作主要可分為以下幾個部分:數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、產(chǎn)生中斷、設(shè)置波特率、Loopback模式、紅外模式以及硬軟流控模式。
串口參數(shù)的配置讀者在配置超級終端和minicom時也已經(jīng)接觸過,一般包括波特率、起始位比特數(shù)、數(shù)據(jù)位比特數(shù)、停止位比特數(shù)和流控模式。在此,可以將其配置為波特率115200、起始位1b、數(shù)據(jù)位8b、停止位1b和無流控模式。
在Linux中,所有的設(shè)備文件一般都位于“/dev”下,其中串口1和串口2對應(yīng)的設(shè)備名依次為“/dev/ttyS0”和“/dev/ttyS1”,而且USB轉(zhuǎn)串口的設(shè)備名通常為“/dev/ttyUSB0”和“/dev/ttyUSB1”(因版本不同該設(shè)備名會有所不同),可以查看在“/dev”下的文件以確認(rèn)。在本章中已經(jīng)提到過,在Linux下對設(shè)備的操作方法與對文件的操作方法是一樣的,因此,對串口的讀寫就可以使用簡單的read()、write()函數(shù)來完成,所不同的只是需要對串口的其他參數(shù)另做配置,下面就來詳細(xì)講解串口應(yīng)用開發(fā)的步驟。
6.4.2 串口設(shè)置詳解
串口的設(shè)置主要是設(shè)置struct termios結(jié)構(gòu)體的各成員值,如下所示:
#include《termios.h》
struct termios
{
unsigned short c_iflag; /* 輸入模式標(biāo)志 */
unsigned short c_oflag; /* 輸出模式標(biāo)志 */
unsigned short c_cflag; /* 控制模式標(biāo)志*/
unsigned short c_lflag; /* 本地模式標(biāo)志 */
unsigned char c_line; /* 線路規(guī)程 */
unsigned char c_cc[NCC]; /* 控制特性 */
speed_t c_ispeed; /* 輸入速度 */
speed_t c_ospeed; /* 輸出速度 */
};
termios是在POSIX規(guī)范中定義的標(biāo)準(zhǔn)接口,表示終端設(shè)備(包括虛擬終端、串口等)。口是一種終端設(shè)備,一般通過終端編程接口對其進(jìn)行配置和控制。在具體講解串口相關(guān)編程之前,先了解一下終端相關(guān)知識。
終端有3種工作模式,分別為規(guī)范模式(canonical mode)、非規(guī)范模式(non-canonical mode)和原始模式(raw mode)。
通過在termios結(jié)構(gòu)的c_lflag中設(shè)置ICANNON標(biāo)志來定義終端是以規(guī)范模式(設(shè)置ICANNON標(biāo)志)還是以非規(guī)范模式(清除ICANNON標(biāo)志)工作,默認(rèn)情況為規(guī)范模式。
在規(guī)范模式下,所有的輸入是基于行進(jìn)行處理。在用戶輸入一個行結(jié)束符(回車符、EOF等)之前,系統(tǒng)調(diào)用read()函數(shù)讀不到用戶輸入的任何字符。除了EOF之外的行結(jié)束符(回車符等)與普通字符一樣會被read()函數(shù)讀取到緩沖區(qū)之中。在規(guī)范模式中,行編輯是可行的,而且一次調(diào)用read()函數(shù)最多只能讀取一行數(shù)據(jù)。如果在read()函數(shù)中被請求讀取的數(shù)據(jù)字節(jié)數(shù)小于當(dāng)前行可讀取的字節(jié)數(shù),則read()函數(shù)只會讀取被請求的字節(jié)數(shù),剩下的字節(jié)下次再被讀取。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 視頻教程-嵌入式Linux文件與串口編程-嵌入式
- 嵌入式linux串口編程
- 嵌入式Linux開發(fā)工具——shell編程
- Linux環(huán)境編程:從應(yīng)用到內(nèi)核 18次下載
- Visual C串口通信技術(shù)與編程實踐 28次下載
- Linux下C語言編程入門教程詳細(xì)說明 39次下載
- Linux教程之Linux命令、編程器、Shell編程、實例大全pdf免費下載 20次下載
- LINUX系統(tǒng)教程之如何在Linux系統(tǒng)下進(jìn)行編程 9次下載
- Linux操作系統(tǒng)實用教程之如何進(jìn)行Linux系統(tǒng)下的編程管理 5次下載
- Linux操作系統(tǒng)下C語言編程入門.pdf 96次下載
- 最詳盡的——解析串口通信數(shù)據(jù) 2次下載
- 串口編程參考資料 linux環(huán)境下的 8次下載
- Linux下串口編程入門 0次下載
- Linux下串口編程下載 108次下載
- 串口通訊編程實踐電子書 0次下載
- 串口屏支持哪些編程語言和開發(fā)環(huán)境? 290次閱讀
- Linux應(yīng)用編程的基本概念 265次閱讀
- 嵌入式開發(fā):映射表在串口數(shù)據(jù)解析中的應(yīng)用 472次閱讀
- C語言映射表在串口數(shù)據(jù)解析中的應(yīng)用 500次閱讀
- Linux系統(tǒng)編程有哪些優(yōu)勢 1279次閱讀
- 英創(chuàng)信息技術(shù)嵌入式Linux串口通訊的C++設(shè)計概述 2357次閱讀
- 51單片機(jī)串口通訊編程的方式解析 3412次閱讀
- 工業(yè)機(jī)器人主流離線編程軟件解析 3545次閱讀
- 基于嵌入式linux系統(tǒng)下的串口編程具體設(shè)置詳解 7021次閱讀
- 關(guān)于Linux下多線程編程技術(shù)學(xué)習(xí)總結(jié) 2217次閱讀
- linux串口通信編程 2580次閱讀
- labview串口數(shù)據(jù)解析 5.8w次閱讀
- python串口編程實例 4.6w次閱讀
- Linux下ARM 和單片機(jī)的串口通信設(shè)計 3486次閱讀
- 基于Linux的ARM/單片機(jī)串口通信設(shè)計 2827次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論