新聞中心
隨著物聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)和單片機(jī)的應(yīng)用越來越廣泛,串口通信作為一種基本通信手段,也變得越來越重要。在Linux系統(tǒng)中,通過配置串口啟動參數(shù),可以實(shí)現(xiàn)串口的初始化和配置,使串口能夠正常工作。本文將介紹Linux串口啟動的配置過程及常見問題。

為福綿等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及福綿網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、福綿網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
一、串口的基本概念
串口是一種基于異步通信方式的通信接口,主要用于數(shù)據(jù)的傳輸。串口通信的原理是通過串行數(shù)據(jù)傳輸?shù)姆绞剑瑢?shù)據(jù)串行發(fā)送到接收端,接收端再按照原來的順序?qū)?shù)據(jù)組裝成完整的數(shù)據(jù)。串口通信主要有以下幾個參數(shù):
1.波特率:波特率表示每秒鐘傳輸?shù)奈粩?shù),最常見的波特率為9600、19200、38400、57600和115200。
2.數(shù)據(jù)位:數(shù)據(jù)位表示每個字符包含的二進(jìn)制位數(shù),通常為7或8位。
3.校驗(yàn)位:校驗(yàn)位用于檢測數(shù)據(jù)傳輸過程中的錯誤,常見的校驗(yàn)位有奇偶校驗(yàn)和無校驗(yàn)。
4.停止位:停止位表示數(shù)據(jù)傳輸?shù)慕Y(jié)束,常見的停止位為1或2位。
二、串口的初始化過程
Linux系統(tǒng)中,通過配置串口啟動參數(shù),可以實(shí)現(xiàn)串口的初始化和配置,使串口能夠正常工作。Linux系統(tǒng)中的串口初始化過程主要分為以下幾個步驟:
1.配置串口硬件:通過串口的硬件配置,設(shè)置串口的端口地址、中斷號、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等參數(shù)。
2.初始化串口:通過調(diào)用串口驅(qū)動程序的ioctl()函數(shù),設(shè)置串口相關(guān)的參數(shù)及工作模式,完成串口的初始化。
3.打開串口:通過調(diào)用open()函數(shù),打開串口并設(shè)置串口的訪問權(quán)限。
4.讀寫數(shù)據(jù):通過調(diào)用read()和write()函數(shù),來實(shí)現(xiàn)串口數(shù)據(jù)的讀取和發(fā)送。
5.關(guān)閉串口:當(dāng)串口不再使用時,需要通過調(diào)用close()函數(shù)來關(guān)閉串口。
三、串口的配置流程
Linux系統(tǒng)中,串口的配置流程比較復(fù)雜,主要包含硬件配置和軟件配置兩個部分。具體流程如下:
1. 硬件配置
硬件配置主要包括設(shè)置串口的端口地址、中斷號、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等參數(shù)。下面以UART1串口為例,介紹硬件配置的過程。
需要修改dts文件,即改變硬件配置。
打開dts文件,找到UART1節(jié)點(diǎn),修改如下:
uart1: serial@44e09000 {
compatible = “ti,omap3-uart”;
ti,hwmods = “uart1”;
gpio-rs485-enable = ;
pinctrl-names = “default”;
pinctrl-0 = ;
status = “okay”;
};
在這段代碼中,ti,hwmods = “uart1″指定了串口的設(shè)備標(biāo)識符,gpio-rs485-enable = 指定了控制RS485模式的GPIO管腳,pinctrl-0 = 指定了串口對應(yīng)的引腳。
接下來,需要在設(shè)備樹中添加節(jié)點(diǎn)。找到設(shè)備樹的源代碼,添加如下節(jié)點(diǎn):
lbs_uart2: serial@40e06000 {
compatible = “ti,omap3-uart”;
ti,hwmods = “uart2”;
pinctrl-names = “default”;
pinctrl-0 = ;
clock-frequency = ;
reg = ;
status = “okay”;
};
在這段代碼中,ti,hwmods = “uart2″指定了串口的設(shè)備標(biāo)識符,pinctrl-0 = 指定了串口對應(yīng)的引腳。
2. 軟件配置
軟件配置主要包括設(shè)置串口的波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等參數(shù)。下面以UART1串口為例,介紹軟件配置的過程。
需要加載串口驅(qū)動程序。在終端中輸入以下命令:
$ modprobe omap-serial
然后,需要通過stty工具來配置串口的參數(shù)。在終端中輸入以下命令:
$ stty -F /dev/ttyS1 115200 raw -echo
在這個命令中,-F參數(shù)指定了串口的設(shè)備文件名,115200表示波特率,raw表示不進(jìn)行數(shù)據(jù)處理,-echo表示關(guān)閉回顯功能。
需要通過echo命令來測試串口是否設(shè)置成功。在終端中輸入以下命令:
$ echo “hello” > /dev/ttyS1
如果串口設(shè)置成功,則終端中將會輸出“hello”。
四、常見問題
1.串口無法工作
通常是由于以下原因?qū)е麓跓o法工作:
(1)串口硬件配置錯誤;
(2)串口驅(qū)動程序未加載或加載失?。?/p>
(3)串口參數(shù)配置錯誤。
解決方法:
(1)檢查串口配置參數(shù)是否正確;
(2)重新加載串口驅(qū)動程序;
(3)檢查串口參數(shù)是否正確。
2.串口數(shù)據(jù)發(fā)送異常
通常是由于以下原因?qū)е麓跀?shù)據(jù)發(fā)送異常:
(1)串口配置參數(shù)錯誤;
(2)數(shù)據(jù)格式錯誤;
(3)發(fā)送數(shù)據(jù)過程中出現(xiàn)異常。
解決方法:
(1)檢查串口配置參數(shù)是否正確;
(2)檢查數(shù)據(jù)格式是否正確;
(3)檢查發(fā)送數(shù)據(jù)過程是否異常。
3.串口數(shù)據(jù)接收異常
通常是由于以下原因?qū)е麓跀?shù)據(jù)接收異常:
(1)串口配置參數(shù)錯誤;
(2)數(shù)據(jù)格式錯誤;
(3)接收數(shù)據(jù)過程中出現(xiàn)異常。
解決方法:
(1)檢查串口配置參數(shù)是否正確;
(2)檢查數(shù)據(jù)格式是否正確;
(3)檢查接收數(shù)據(jù)過程是否異常。
五、
相關(guān)問題拓展閱讀:
- Linux下如何測試及使用USB轉(zhuǎn)串口線
Linux下如何測試及使用USB轉(zhuǎn)串口線
1、將設(shè)備u口插入pc 2、輸入#lod 先看看能否檢測到這個設(shè)備,就看有沒有pl2303字眼可以了。如果有,則不需要再裝驅(qū)動。另外如果有的話更好再用dmesg | grep u查找如果看到: “drivers/u/serial/u-serial.c: USB Serial support registered for Generic” 就說明設(shè)備已被識別,然后往下看 drivers/u/serial/u-serial.c: USB Serial support registered for PL-2303 u 2-2: PL-2303 converter now attached to ttyUSB0 (or u/tts/0 for devfs)如果沒有則需要驅(qū)動程序,一般硬件廠商都會提供,如果真的沒有的話就只有到網(wǎng)上下載了,一般2.6內(nèi)核以上的都支持。 安裝完畢后再輸入這個命令瞧瞧,是否安裝成功。說明我的u轉(zhuǎn)串口芯片是PL-2303,對應(yīng)系統(tǒng)設(shè)備是 dev/u/ttUSB0,最后只需在minicom配置文件里將端口改成/dev/u/ttyUSB0就可以使用了:) 3、檢測步驟,檢測步驟如下,只是需要主意的是設(shè)置串口設(shè)備的時候可能不是ttyS2了,有可能是ttyUSB0或者ttyUSB1等之類的,我這里就是ttyUSB0(我用的是Fedora Core 8)。 因此,更好請您先看一下/dev下面的文件。 USB轉(zhuǎn)串口安裝 型號PL2303h 1、插入USB轉(zhuǎn)串口到主機(jī), 2、啟動 Linux,打開終端,檢查是否存在設(shè)備/dev/ttyUSB0,如果沒有就建立一個: mknod /dev/ttyUSB0 c如果有多個USB口,可以類推,建立/dev/ttyUSB,注意從設(shè)備號要累加, 如:mknod /dev/ttyUSB c 188 3、輸入命令:#setserial /dev/ttyS0 -aP (COM-1) 顯示內(nèi)容:/dev/ttyS0, Line 0, UART: 16550A, Port: 0x3f8, irq: 4 Baud_base:, clos_delay: 50, divisor: 0 closing_wait: 3000, closing_wait2: infinite Flags: spd_normal skip_test 4、輸入命令:#setserial /dev/ttyS2 -a (COM-3) 顯示內(nèi)容:/dev/ttyS2, Line 2, UART: unknown, Port: 0x3e8, irq: 4 Baud_base:, clos_delay: 50, divisor: 0 closing_wait: 3000, closing_wait2: infinite Flags: spd_normal skip_test 第3、4步操作的目的主要是對主機(jī)自帶串口及PCI擴(kuò)展串口的區(qū)帶指別。區(qū)別在褲殲于4顯示的內(nèi)容中UART:未知unknow。不過若您檢測這一步的時候 UART為16550A而不是unknow,證明你的系統(tǒng)已經(jīng)認(rèn)識了擴(kuò)展的串口,不需要進(jìn)一步設(shè)置,直接跳入第8步測試就可以了。 5、設(shè)置好了后是不是需要測試一下是否能夠通訊呢?更好的辦法是兩臺pc相連。如果pc為windows操作系統(tǒng)就用超級終端,是linux呢就用minicom吧 6、裝有l(wèi)inux的機(jī)器,首先需要設(shè)置一下監(jiān)聽的串口參數(shù),輸入命令 #minicom -s 進(jìn)入界面后有個框彈出來,如果你學(xué)過英文的話,就會知道選擇哪個的。應(yīng)該是第三個吧,串口參數(shù)設(shè)置。 將之一行更改為 /dev/ttyUSB0 波特率也更改您所需要的。 更改完后保存,蠢純配保存的那個菜單應(yīng)該是 save … df1 最后exit 7.重啟minicom, 復(fù)位目標(biāo)板,看是否有打印信息?如果沒有請確認(rèn):a)USB/串口線沒問題,b)確認(rèn)你使用的USB口是之一個(一個個的試吧,一般電腦不會標(biāo)示出來) 在另外一臺機(jī)器發(fā)送數(shù)據(jù),這臺機(jī)器minicom界面就能夠收到信息了。另外不要把兩個COM順序弄翻了,如果弄錯了哪個是COM3 COM4測試可就不靈便咯。
測試環(huán)境:redhat linux fedora core 4
總結(jié)如下:
1. 檢查是否存在設(shè)備/dev/ttyUSB0,如果沒有就建立一個:
mknod /dev/ttyUSB0 c 188 0
以下推理未測試:
如果有多個USB口,可以類推,建者余空立/dev/ttyUSB,注意從設(shè)備號要累加,如:mknod /dev/ttyUSB c 188
2. 啟動minicom, 設(shè)置串毀渣口設(shè)備為 /dev/ttyUSB0, 再設(shè)置波特率/數(shù)據(jù)位/停止位,保存為缺省配置df1
3. 重啟minicom, 復(fù)首瞎位目標(biāo)板,看是否有打印信息?
linux啟動配置 串口的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux啟動配置 串口,Linux串口啟動配置全解析,Linux下如何測試及使用USB轉(zhuǎn)串口線的信息別忘了在本站進(jì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ī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站標(biāo)題:Linux串口啟動配置全解析(linux啟動配置串口)
URL地址:http://www.dlmjj.cn/article/dppedgd.html


咨詢
建站咨詢
