
發布
注冊
/
登錄串口的案例
學習STM32單片機,繞不開的串口
51單片機可以用串口來調試,STM32可以用串口來調試,Linux開發板也是使用串口來調試。
當你學會串口通信時,你可以開始玩WIFI模塊、GSM模塊、藍牙模塊、GPS模塊、以及各種使用串口通信的傳感器等等。有能力你還可以編寫上位機軟件通過串口通信來控制設備。
串口通信需要什么
如果你只有STM32核心板,那么你還需要一個串口轉USB模塊和一個串口數據接收軟件還有幾根杜邦線就可以了。
如果你的是比較完整的一款開發板的話,一般都已經帶有串口轉USB模塊,這樣使用起來就更簡單了。聰明的你是不是發現還缺少了點什么,對。沒錯因為還缺少了最重要的程序。想要使用串口通信當然還需要寫串口通信的程序。
下文就教你如何去用,而不是寫。
串口實驗
關于串口的實驗,之前錄過一個基于HAL庫來實現的視頻,可以點擊查看。
??STM32打印數據到串口助手
而下文中的實驗基于標準庫實現的,與HAL相比思路是一樣的。
在做一個實驗時,最好把這個實驗分割成幾個關鍵的步驟,這樣做的好處就是可以清晰的知道自己需要做什么,以及做完了哪些。還有哪些還沒做。
下面把串口實驗分成幾個關鍵的步驟:
1)串口通信使用到的GPIO引腳配置
STM32F103系列的芯片一般都有三個串口以上,用來調試使用的串口一般都是使用USART1。其他的串口配置都是一樣的。
展開 單片機串口最底層的本質!
嵌入式開發中,UART串口是最常見的一種通信接口,你知道為啥串口這么常見嗎?本文就帶你深入了解串口最底層的本質內容。
一、什么是串口通訊?
串行通訊是指僅用一根接收線和一根發送線就能將數據以位進行傳輸的一種通訊方式。盡管串行通訊的比按字節傳輸的并行通信慢,但是串口可以在僅僅使用兩根線的情況下就能實現數據的傳輸。
典型的串口通信使用3根線完成,分別是地線、發送、接收。由于串口通信是異步的,所以端口能夠在一根線上發送數據同時在另一根線上接收數據。串口通信最重要的參數是波特率、數據位、停止位和奇偶的校驗。對于兩個需要進行串口通信的端口,這些參數必須匹配,這也是能夠實現串口通訊的前提。
圖1:串行通訊示數據傳輸意圖
二、串口通訊的通訊協議?
最初數據是模擬信號輸出簡單過程量,后來儀表接口出現了RS232接口,這種接口可以實現點對點的通信方式,但這種方式不能實現聯網功能,這就促生了RS485。
我們知道串口通信的數據傳輸都是0和1,在單總線、I2C、UART中都是通過一根線的高低電平來判斷邏輯1或者邏輯0,但這種信號線的GND再與其他設備形成共地模式的通信,這種共地模式傳輸容易產生干擾,并且抗干擾性能也比較弱。所以差分通信、支持多機通信、抗干擾強的RS485就被廣泛的使用了。
RS485通信最大特點就是傳輸速度可以達到10Mb/s以上,傳輸距離可以達到3000米左右。
展開 PLC串口通訊的基本知識!
電氣作業人員在使用PLC的時候會接觸到很多的通訊協議以及通訊接口,最基本的PLC串口通訊和基本的通訊接口你都了解嗎?
1,什么是串口通訊?
串口是計算機上一種非常通用設備通信的協議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數計算機包含兩個基于RS232的串口。
串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS- 232口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。
2,串口通訊的使用
串口通訊使用3根線完成:(1)地線,(2)發送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但是不是必須的。
串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數必須匹配:
a,波特率:這是一個衡量通信速度的參數。它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘發送300個bit。當我們提到時鐘周期時,我們就是指波特率例如如果協議需要4800波特率,那么時鐘是4800Hz。
這意味著串口通信在數據線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通訊。
b,數據位:這是衡量通信中實際數據位的參數。當計算機發送一個信息包,實際的數據不會是8位的,標準的值是5、7和8位。如何設置取決于你想傳送的信息。
比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。
展開 看完這篇,不要說不懂串口通信!
一、什么是串口通訊?
串行通訊是指僅用一根接收線和一根發送線就能將數據以位進行傳輸的一種通訊方式。盡管串行通訊的比按字節傳輸的并行通信慢,但是串口可以在僅僅使用兩根線的情況下就能實現數據的傳輸。
典型的串口通信使用3根線完成,分別是地線、發送、接收。由于串口通信是異步的,所以端口能夠在一根線上發送數據同時在另一根線上接收數據。串口通信最重要的參數是波特率、數據位、停止位和奇偶的校驗。對于兩個需要進行串口通信的端口,這些參數必須匹配,這也是能夠實現串口通訊的前提。
圖1:串行通訊示數據傳輸意圖
二、串口通訊的通訊協議?
最初數據是模擬信號輸出簡單過程量,后來儀表接口出現了RS232接口,這種接口可以實現點對點的通信方式,但這種方式不能實現聯網功能,這就促生了RS485。
我們知道串口通信的數據傳輸都是0和1,在單總線、I2C、UART中都是通過一根線的高低電平來判斷邏輯1或者邏輯0,但這種信號線的GND再與其他設備形成共地模式的通信,這種共地模式傳輸容易產生干擾,并且抗干擾性能也比較弱。所以差分通信、支持多機通信、抗干擾強的RS485就被廣泛的使用了。
RS485通信最大特點就是傳輸速度可以達到10Mb/s以上,傳輸距離可以達到3000米左右。大家需要注意的是雖然485最大速度和最大傳輸距離都很大,但是傳輸的速度是會隨距離的增加而變慢的,所以兩者是不可以兼得的。
三、串口通訊的物理層
串口通訊的物理層有很多標準,例如上面提到的,我們主要講解RS-232標準,RS-232標準主要規定了信號的用途、通訊接口以及信號的電平標準。
在上面的通訊方式中,兩個通訊設備的"DB9接口"之間通過串口信號線建立起連接,串口信號線中使用"RS-232標準"傳輸數據信號。
展開 
串口通信常見問題淺析
什么是串口通信
串口通信,就是傳數據只有一根線傳輸,一次只能傳一個位,要傳一個字節就需要傳8次。串口通信就是把數據串在一根線上傳輸,所以就叫串口吧。
在對速率要求不高的情況,使用一根線發送數據是帶來大大的方便和實用價值的。
為了能正常發送和接收正確的數據,那異步串口通信就需要如下圖的格式。
在串口的通信參數上,就有了波特率、起始位、數據位、校驗位、停止位這幾個參數。
232\485\422的區別
串口通信主要為分232、485、422三種通信方式,這三種有什么區別呢?
01
232通信
232通信主要是由RX、TX、GND三根線組成。RX接TX,TX接RX,GND接GND。這里發送和接收分別是由不同的線處理的,也就是能同時發送數據和接收數據,這就是所謂的全雙工通信。
在這里擴展一下,串口通信還有一個功能叫做全功能串口通信,也叫標準串口。因為在兩個設備間進行數據傳輸,有些設備處理速度比較快,有些數據比較慢。為了保證數據能正常傳輸,在RX、TX的基礎上,還增加了幾個控制引腳,最后成了9個引腳,也就是常見的DB9這個東西,如下圖所示。
但是,如今很多控制器、人機界面、PLC等使用串口通信中一般不使用標準串口,而是直接使用RX、TX、GND三根線來通信的。
02
485通信
485的出現,是為了解決232通信距離受限的問題。
展開 工業級串口服務器和交換機有什么不同?各有什么作用?
工業級串口服務器和交換機的使用方法也有區別:
工業級串口服務器設備連接串口服務器RS232/485/422對應的串口進行通訊,將數據信息傳輸到遠程服務器上。
交換機與路由器相似,總網口接入LAN口,其他網口接入對應的其他終端設備。
工業級串口服務器和交換機也是可以組合起來使用的,串口終端設備通過串口服務器實現聯網之后,多臺串口服務器可以連接到以太網交換機上面,將多處終端數據傳輸到遠程服務器上面。
干貨|串口通訊你真的懂了嗎?
平時使用串口打印出現亂碼的絕大部分原因是串口波特率沒對。
那么我們怎么測量實際的波特率呢?
在這之前,順便一起回顧一下波特率的概念。
什么是波特率、比特率?
比特率(Bitrate)表示每秒鐘傳輸的
二進制位數,單位為比特每秒(bit/s)。
波特率(Baudrate)表示每秒鐘傳送的
碼元符號的個數,是衡量數據傳送速率的指標。
碼元是通訊信號調制的概念,通訊中常用時間間隔相同的符號來表示一個二進制數字,這樣的信號稱為碼元。
常見的通訊傳輸中,用 0V 表示數字 0, 5V 表示數字 1,那么一個碼元可以表示兩種狀態 0 和 1,所以一個碼元等于一個二進制比特位,此時波特率的大小與比特率一致。
如果在通訊傳輸中,有 0V、2V、 4V 以及 6V 分別表示二進制數 00、 01、 10、 11,那么每個碼元可以表示四種狀態,即兩個二進制比特位,所以碼元數是二進制比特位數的一半,這個時候的波特率為比特率的一半。
因為很多常見的通訊(
比如串口通訊
)中一個碼元都是表示兩種狀態,所以大家常常直接以波特率來表示比特率 。
串口通訊協議
在串口通訊的協議層中,規定了數據包的內容,它由啟始位、主體數據、校驗位以及停止位組成,通訊雙方的數據包格式要約定一致才能正常收發數據,其數據幀組成如下:
下面我們來實際驗證一下其數據幀是不是真的是這樣的。
編寫如下代碼:
代碼很簡單,就是使用串口不斷地往外發數據
0xAA
(當然發送其它數據也是可以的) 。
展開 PLC串口通訊的知識!讓你輕松自學PLC通訊
電力作業人員在使用PLC的時候會接觸到很多的通訊協議以及通訊接口,最基本的PLC串口通訊和基本的通訊接口你都了解嗎?
1,什么是串口通訊?
串口是計算機上一種非常通用設備通信的協議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS- 232口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。
2,串口通訊的使用
串口通訊使用3根線完成:(1)地線,(2)發送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但是不是必須的。
串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數必須匹配:
a,波特率:這是一個衡量通信速度的參數。它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘發送300個bit。當我們提到時鐘周期時,我們就是指波特率例如如果協議需要4800波特率,那么時鐘是4800Hz。這意味著串口通信在數據線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通訊。
b,數據位:這是衡量通信中實際數據位的參數。當計算機發送一個信息包,實際的數據不會是8位的,標準的值是5、
7和8位。如何設置取決于你想傳送的信息。比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數據使用簡單的文本(標準ASCII碼),那么每個數據包使用7位數據。每個包是指一個字節,包括開始/停止位,數據位和奇偶校驗位。
展開 電工進階PLC大神:必備PLC串口通訊的基本知識~
電氣作業人員在使用PLC的時候會接觸到很多的通訊協議以及通訊接口,最基本的PLC串口通訊和基本的通訊接口你都了解嗎?
01
什么是串口通訊?
串口是計算機上一種非常通用設備通信的協議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數計算機包含兩個基于RS232的串口。
串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS- 232口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。
02
串口通訊的使用
串口通訊使用3根線完成:(1)地線,(2)發送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但是不是必須的。
串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數必須匹配:
a.波特率:這是一個衡量通信速度的參數。它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘發送300個bit。當我們提到時鐘周期時,我們就是指波特率例如如果協議需要4800波特率,那么時鐘是4800Hz。
這意味著串口通信在數據線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。
展開 串口環形隊列
2.編寫串口相關的底層硬件bsp代碼,也就是初始化GPIO和串口相關的配置,這個就很簡單,大家應該都會。在串口初始化代碼中記得要手動將串口的非空中斷和空閑中斷打開。
串口環形隊列
2.編寫串口相關的底層硬件bsp代碼,也就是初始化GPIO和串口相關的配置,這個就很簡單,大家應該都會。在串口初始化代碼中記得要手動將串口的非空中斷和空閑中斷打開。

誰說零基礎不能學PLC串口通訊?電工學PLC優勢太大,估計電工自己都不知道
電氣作業人員在使用PLC的時候會接觸到很多的通訊協議以及通訊接口,最基本的PLC串口通訊和基本的通訊接口你都了解嗎?
1,什么是串口通訊?
串口是計算機上一種非常通用設備通信的協議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數計算機包含兩個基于RS232的串口。
串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS- 232口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。
2,串口通訊的使用
串口通訊使用3根線完成:(1)地線,(2)發送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但是不是必須的。
串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數必須匹配:
a,波特率:這是一個衡量通信速度的參數。它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘發送300個bit。當我們提到時鐘周期時,我們就是指波特率例如如果協議需要4800波特率,那么時鐘是4800Hz。
這意味著串口通信在數據線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通訊。
b,數據位:這是衡量通信中實際數據位的參數。當計算機發送一個信息包,實際的數據不會是8位的,標準的值是5、7和8位。如何設置取決于你想傳送的信息。
比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。
展開 串口的坑你踩過嗎?
出差去產線支持是硬件工程師的家常便飯,一次我出差,解決了自己項目組的問題后在客戶辦公室偷得浮生半日閑,突然刷到產線大群,有兄弟項目組的哥們喊人借用串口線,好像是串口出問題了,恰好我手里有一根,走,過去瞅瞅。
過去后看到哥們愁眉苦臉坐在車間角落小桌子旁,激起他們喜悅的不是我的到來,而是我手里的串口線,看來線比人值錢。
換了我手里的串口線后,問題依然沒有改變,哥們又恢復愁眉苦臉的神情。旁邊有一軟件的兄弟,一臉淡定,我看懂他的意思:和軟件無關,是硬件問題。
我了解下經過,是產品modem模塊出現異常導致機器無法開機,如果想要分析modem的問題根因,需要通過串口輸出的log進行分析,但是破船又遇打頭風,偏偏串口出現異常,無法正常吐log,試產首批驗證的板子100% failed,沒有鎖定問題根因,后面幾千片試產板子就不能SMT貼片,一直卡在產線,每耽誤的一分鐘都是白花花的銀子。
也難怪哥們愁眉苦臉,我問有確定是硬件問題還是軟件問題嗎?軟件同事先開口:不是軟件問題,相同的軟件版本在家里的機器就沒問題。看他一臉自信,我心想別得意的太早,誰笑道最后還不一定呢。
當前的主要問題是解決串口異常。
哥們是位非常有經驗的硬件工程師,我也記得串口線路上的線路非常簡單,如下圖,串口TX線路上一般只有一個硬件開關,然后直連到type c接口上,這么簡單的線路怎么會出問題呢?
哥們把TX線路上所有的東西全拆了,可是UART還是異常,我也納悶了,交叉驗證換了電腦,換了串口線,問題沒有任何進展。
你確定線路上所有東西都拆了嗎?
展開 串口通信基礎知識
1.3幾個概念
為了更好的理解串口通信,我們還需要了解幾個串口通信當中的基本概念。
(1)發送時鐘:發送數據時,首先將要發送的數據送入移位寄存器,然后在發送時鐘的控制下,將該并行數據逐位移位輸出。
(2)接收時鐘:在接收串行數據時,接收時鐘的上升沿對接收數據采樣,進行數據位檢測,并將其移入接收器的移位寄存器中,最后組成并行數據輸出。
(3)波特率因子:波特率因子是指發送或接收1個數據位所需要的時鐘脈沖個數。
2.串口接頭
常用的串口接頭有兩種,一種是9針串口(簡稱DB-9),一種是25針串口(簡稱DB-25)。每種接頭都有公頭和母頭之分,其中帶針狀的接頭是公頭,而帶孔狀的接頭是母頭。
3.RS-232C標準
常用的串行通信接口標準有RS-232C、RS-422、RS-423和RS-485。其中,RS-232C作為串行通信接口的電氣標準定義了數據終端設備(DTE:data terminal equipment)和數據通信設備(DCE:data communication equipment)間按位串行傳輸的接口信息,合理安排了接口的電氣信號和機械要求,在世界范圍內得到了廣泛的應用。
展開 【電氣控制】大神是這樣理解 串口通訊與MODBUS協議的
例如:從串口讀到的數據為0000 00 01 表示 1。
2143:表示雙字元件高低字不顛倒,但字內高低字節顛倒。
例如:從串口讀到的數據為0000 00 01 表示 0x00000100 (即256)。
3412:表示雙字元件高低字顛倒,但字內高低字節不顛倒。
例如:從串口讀到的數據為0000 00 01 表示 0x00010000 (即65536)。
4321:表示雙字元件內4個字節全部顛倒。
例如:從串口讀到的數據為00 00 00 01 表示 0x0100 0000 (即1677 721
10.