新聞中心
隨著云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等技術(shù)的快速發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于交通、醫(yī)療、能源、航空等領(lǐng)域。而作為嵌入式系統(tǒng)的核心,Linux操作系統(tǒng)因其開源、免費(fèi)、可定制、可擴(kuò)展等優(yōu)勢,成為了業(yè)界最為流行的選擇之一。在Linux系統(tǒng)中,GPIO和串口被廣泛應(yīng)用于嵌入式系統(tǒng)的硬件控制中。然而,在使用Linux系統(tǒng)的過程中,我們會(huì)發(fā)現(xiàn),GPIO的使用會(huì)對串口的配置產(chǎn)生影響,本文將對此進(jìn)行探討。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、滴道網(wǎng)站維護(hù)、網(wǎng)站推廣。
一、GPIO和串口介紹
GPIO即通用輸入輸出,是一種用于電子系統(tǒng)中進(jìn)行數(shù)字輸入輸出的編程接口。在嵌入式系統(tǒng)中,GPIO常常被用于控制外設(shè)、時(shí)序等方面。不同的開發(fā)板或芯片,其GPIO的數(shù)量、位置、電氣特性都不相同。
串口(Serial Port)是指一種數(shù)據(jù)通訊接口,它通過幾根線將數(shù)據(jù)從一臺(tái)計(jì)算機(jī)傳輸?shù)搅硪慌_(tái)計(jì)算機(jī)。串口一般具有兩個(gè)方向:數(shù)據(jù)輸入和數(shù)據(jù)輸出。在Linux系統(tǒng)中,串口是通過字符設(shè)備進(jìn)行訪問的。
二、GPIO對串口的影響
在Linux系統(tǒng)中,GPIO和串口都是通過訪問/proc文件系統(tǒng)中的文件來進(jìn)行控制、配置、使用的。GPIO的使用會(huì)占用一些GPIO的資源,而這些GPIO的資源很可能會(huì)與串口的使用產(chǎn)生沖突,從而影響串口的使用。
具體來說,可通過下面幾個(gè)文件進(jìn)行GPIO操作:
1. /sys/class/gpio/export:將GPIO配置成Linux系統(tǒng)所使用的GPIO。
2. /sys/class/gpio/gpioxx/direction:GPIO的輸入輸出模式配置為輸入或輸出或輸入輸出模式。
3. /sys/class/gpio/gpioxx/value:GPIO的電平控制,只有當(dāng)GPIO配置為輸出模式時(shí)有效。
其中,xx代表GPIO編號,如GPIO0、GPIO1等。
下面,舉兩個(gè)例子說明GPIO與串口的關(guān)系:
例1:對ttyS0進(jìn)行GPIO配置
將GPIO0配置成輸入模式:
“`
echo 0 > /sys/class/gpio/export // 配置GPIO0為Linux系統(tǒng)所使用的GPIO
echo in > /sys/class/gpio/gpio0/direction // 配置GPIO0為輸入模式
“`
然后,查看ttyS0的端口號:
“`
cat /proc/tty/driver/serial // 查看串口的端口號,假設(shè)為ttyS0
“`
接下來,需要讓GPIO0的電平與串口ttyS0的RTS連在一起,并使其電平保持高電平(高電平時(shí),串口為接收狀態(tài)):
“`
echo 0 > /sys/class/gpio/gpio0/value // 使GPIO0的電平為低電平
stty -F /dev/ttyS0 115200 crtscts // 打開串口的硬件流控,并使用上一步設(shè)置的GPIO0和RTS進(jìn)行連接
echo 1 > /sys/class/gpio/gpio0/value // 使GPIO0的電平為高電平
“`
這里的RTS即Ready to Send,表示就緒發(fā)送信號,是串口數(shù)據(jù)傳輸?shù)囊环N控制信號。
例2:對ttyS0進(jìn)行GPIO操作(重新打開串口)
在這個(gè)例子中,首先需要關(guān)閉串口,然后才能進(jìn)行GPIO操作。
查看ttyS0的端口號:
“`
cat /proc/tty/driver/serial // 查看串口的端口號,假設(shè)為ttyS0
“`
接下來,關(guān)閉串口:
“`
stty -F /dev/ttyS0 0 // 關(guān)閉串口
“`
然后,將GPIO3配置成輸出模式,并使其電平保持高電平:
“`
echo 3 > /sys/class/gpio/export // 配置GPIO3為Linux系統(tǒng)所使用的GPIO
echo out > /sys/class/gpio/gpio3/direction // 配置GPIO3為輸出模式
echo 1 > /sys/class/gpio/gpio3/value // 使GPIO3的電平為高電平
“`
重新打開串口:
“`
stty -F /dev/ttyS0 115200 // 打開串口
“`
這個(gè)例子中,GPIO3被配置為輸出模式,并使其電平保持高電平,在重啟串口時(shí),由于Linux系統(tǒng)默認(rèn)的RTS參數(shù)是不打開的,因此沒有出現(xiàn)電平?jīng)_突的情況。
三、
在使用Linux系統(tǒng)時(shí),GPIO和串口是兩個(gè)非常重要的硬件控制接口。在進(jìn)行嵌入式系統(tǒng)開發(fā)時(shí),為了避免GPIO與串口資源沖突,需要仔細(xì)設(shè)計(jì)和管理。
尤其在嵌入式系統(tǒng)的復(fù)雜場景中,出現(xiàn)GPIO和串口沖突的情況并不罕見。因此,我們需要在實(shí)際的嵌入式開發(fā)中,深入理解GPIO和串口的概念和內(nèi)部原理,針對具體場景進(jìn)行配置、調(diào)試和優(yōu)化,以確保系統(tǒng)的穩(wěn)定性和可靠性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
GPIO接口是什么
GP就是通用的意思,大概意思就是這個(gè)接口,你可以作為輸入(input)使用,也可以作為(output)輸出使用,具體怎么用,就需橡蘆要自己旁判來設(shè)置就行梁啟帶啦
GPIO,通用I/O端口。
在
嵌入式系統(tǒng)
中,經(jīng)常需要控制許多結(jié)構(gòu)簡單的外部設(shè)絕段掘備或者電路,這些設(shè)備有的需要通過CPU控制,有的需要CPU提供輸入信號。
對設(shè)備的控制,使用傳統(tǒng)的串口或者
并口
就顯得比較復(fù)雜,所以,在嵌入式微處理器上通常提供并核了一種“通用可編程I/O端口”,也就是GPIO。
一個(gè)GPIO端口至少需要兩個(gè)
寄存器
,一個(gè)做控制用的“通用IO端口控制寄存器”,還有一個(gè)是存放數(shù)據(jù)的“通用I/O端口數(shù)據(jù)寄存器”。
數(shù)據(jù)寄存器的燃顫每一位是和GPIO的硬件引腳對應(yīng)的,而數(shù)據(jù)的傳遞方向是通過控制寄存器設(shè)置的,通過控制寄存器可以設(shè)置每一位引腳的數(shù)據(jù)流向。
擴(kuò)展資料
GPIO的優(yōu)點(diǎn)(端口擴(kuò)展器):
1、低功耗:GPIO具有更低的功率損耗(大約1μA,μC的工作電流則為100μA)。
2、集成IIC從機(jī)接口:GPIO內(nèi)置IIC從機(jī)接口,即使在待機(jī)模式下也能夠全速工作。
3、小封裝:GPIO器件提供最小的封裝尺寸 ― 3mm x 3mm QFN!
4、低成本:您不用為沒有使用的功能買單。
5、快速上市:不需要編寫額外的代碼、文檔,不需要任何維護(hù)工作。
6、靈活的燈光控制:內(nèi)置多路高分辨率的PWM輸出。
7、可預(yù)先確定響應(yīng)時(shí)間:縮短或確定外部事件與中斷之間的響應(yīng)時(shí)間。
8、更好的燈光效果:匹配的電流輸出確保均勻的顯示亮度。
9、布線簡單:僅需使用2條就可以組成IIC總線或3條組成SPI總線。
10、與ARM 的幾組GPIO引腳,功能相似,GPxCON 控制引腳功能,GPxDAT用于讀寫引腳數(shù)據(jù)。另外,GPxUP用于確定是否使用
上拉電阻
。 x為A,B,,H/J。
11、GPAUP 沒有上拉電阻。
參考資料
百度百科-gpio
GPIO的英文全稱General-Purpose Input /Output Ports,中文意思是通用I/O端口。
在嵌入式系統(tǒng)中,經(jīng)常需要控制許多結(jié)構(gòu)簡單的外部設(shè)備或者電路,這些設(shè)備有的需要通過CPU控制,有的需要CPU提供輸入信號。并且,許多設(shè)備或電路只要求有開/關(guān)兩種狀體就夠了,比如LED的亮與滅。對這些設(shè)備的控制,使用傳統(tǒng)的串口或者并口就顯得比較復(fù)雜,所以,在嵌入式微處理器上通常提供了一種“通用可編程I/O端口”,也就是GPIO。
一個(gè)GPIO端口至少需要兩個(gè)寄存器銷櫻耐,一個(gè)做控制用的“通用頌笑IO端口控制寄存器”,還有一個(gè)是存放數(shù)據(jù)的“通用I/O端口數(shù)據(jù)寄存器”。數(shù)據(jù)寄存器的每一位是和GPIO的硬件引腳對應(yīng)的,而數(shù)據(jù)的傳虧春遞方向是通過控制寄存器設(shè)置的,通過控制寄存器可以設(shè)置每一位引腳的數(shù)據(jù)流向。
(GPIO相關(guān)的寄存器有,IOPIN、IOSET、IOCLR、IODIR四個(gè)寄存器。)
1.GPIO即是GENERALPURPOSEINPUTOUTPUT的簡稱,稱為總線擴(kuò)展器,人們利用工業(yè)標(biāo)準(zhǔn)I2C,BUS或SPI接口簡化了IO口的擴(kuò)展。當(dāng)微控制器或芯片組沒有足夠的IO端口,或當(dāng)系統(tǒng)需要采用遠(yuǎn)端串行悉喚通信緩尺或控制時(shí),GPIO產(chǎn)品能夠提供額外的控制和監(jiān)視功能。
2.GPIO分類:硬件,嵌入開發(fā)驅(qū)動(dòng)開擾陸高發(fā),核心開發(fā)。
3.每個(gè)GPIO端口可通過軟件分別配置成輸入或輸出。MAXIM的GPIO產(chǎn)品線包括8端口至28端口的GPIO,提供推挽式輸出或漏極開路輸出。
LED的坦卜亮與友寬滅,或者繼電器之類好信亮的開和關(guān),設(shè)備串口里輸入 gpio -i 13 可以查看狀態(tài) 0表示斷開 1表示閉合 gpio -i 13 -o 0 關(guān)閉,gpio -i 13 -o 1 閉合
關(guān)于STM32串口2配置問題
同學(xué),你好!應(yīng)該是錯(cuò)在IO口配置那位置,因?yàn)閁SART2用的IO口不再是PA9和PA10。如果和我芯片一樣STM32F103ZET6,那就應(yīng)該是換成罩陸晌PA2和PA3了!自己仔細(xì)看下自己芯片是哪個(gè)IO口吧!
望采納!
完蛋,沒仔細(xì)悉咐看,你已經(jīng)改了IO口的,那問題可能就是:如果用的是開發(fā)板的物鋒話,可能是沒有把這個(gè)串口2引出來了。程序是沒錯(cuò)的!
需要幫你寫嗎
linux gpio影響串口配置的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux gpio影響串口配置,Linux下GPIO對串口配置的影響,GPIO接口是什么,關(guān)于STM32串口2配置問題的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
當(dāng)前文章:Linux下GPIO對串口配置的影響(linuxgpio影響串口配置)
文章地址:http://m.fisionsoft.com.cn/article/cophesh.html


咨詢
建站咨詢
