你這個(gè)小板子和電腦通訊,做個(gè)上位機(jī),最常用的接口是什么?我想大家閉眼說(shuō)-串口!
串口是什么?
串行接口(Serial port),也稱串行接口或串行端口,串行通信接口,COM接口,簡(jiǎn)稱串口。
就字面意思,一根線就可以傳輸,也就是說(shuō),其實(shí)傳輸?shù)氖菐瑪?shù)據(jù),那不免得就要說(shuō)一幀里面有什么?
我在之前的文章里面說(shuō),一個(gè)協(xié)議最重要的就是抓住01到底是怎么傳輸?shù)?,以及我們?nèi)绾卧O(shè)計(jì)一些東西,可以找到這個(gè)幀數(shù)據(jù)的頭和尾如何把數(shù)據(jù)載荷取出來(lái)。
你看這個(gè)就是頭+尾+8bit數(shù)據(jù),不就是一個(gè)字節(jié),這就是包裝出來(lái)的一幀數(shù)據(jù)。
更加詳細(xì)的是這樣
當(dāng)兩個(gè)設(shè)備需要通過(guò)UART協(xié)議進(jìn)行通訊時(shí),它們需要同時(shí)約定好以下內(nèi)容:
每一位信號(hào)的時(shí)間長(zhǎng)度T(波特率 = 1/T)
幀結(jié)構(gòu)中每一項(xiàng)的具體位數(shù)
是否有校驗(yàn)位,以及校驗(yàn)位的機(jī)制(奇/偶/..)
有了這些約定,接收設(shè)備只需要等待起始位的到來(lái),再對(duì)之后的波形進(jìn)行固定間隔的采樣即可獲得傳輸?shù)木唧w信息。以字符‘D‘的波形為例:
取樣的波形
波特率是UART協(xié)議,或者說(shuō)所有異步串行協(xié)議,非常重要的一個(gè)概念,即單位時(shí)間內(nèi)(1秒)可表示的bit位個(gè)數(shù),或者也可以表述為bit位寬的倒數(shù)。例如一個(gè)波特率為115200的UART波形表示1秒可容納115200個(gè)bit位,也就是說(shuō)每一位bit數(shù)據(jù)占大約8.68uS的時(shí)長(zhǎng)。
UART等異步串行協(xié)議,為了簡(jiǎn)化信號(hào)物理連接,降低通訊成本,一般只有一根信號(hào)線,無(wú)法同時(shí)傳輸數(shù)據(jù)和時(shí)鐘信號(hào)。
收/發(fā)設(shè)備為了正確解析波形就需要在相同的波特率設(shè)置下。而相同的波形使用不同的波特率獲取的信息可能會(huì)完全不同。對(duì)于接收設(shè)備來(lái)講,只有起始位可以作為一幀數(shù)據(jù)的同步點(diǎn),其它數(shù)據(jù)都是通過(guò)波特率來(lái)確定具體的取樣位置。
波特率錯(cuò)誤
空閑時(shí)持續(xù)的高電平
UART接收端會(huì)一直檢測(cè)信號(hào)線上的電平變化,開(kāi)始傳輸數(shù)據(jù)時(shí),發(fā)送端將信號(hào)線從高電平拉到低電平結(jié)束空閑狀態(tài),并保持一個(gè)bit位的時(shí)長(zhǎng)。
接收器檢測(cè)到高低電平轉(zhuǎn)換時(shí),開(kāi)始接收信號(hào)。
而我們現(xiàn)代的協(xié)議其實(shí)是分層的
我們關(guān)心的是具體數(shù)據(jù)的意思,但是物理層走的確實(shí)高高低低的電平。物理層就是數(shù)據(jù)手冊(cè)里面的東西,這個(gè)電平范圍什么的,IO的速度什么的,因?yàn)橐环D(zhuǎn)就是一個(gè)01出來(lái)了。然后這么多的01,交給協(xié)議層,就是01如何分配,把里面的頭尾校驗(yàn)這些都分離出來(lái)。然后把我們感興趣的數(shù)據(jù)再傳一層,擁有著實(shí)際意義的應(yīng)用層。
為什么我這一次說(shuō)了這個(gè)協(xié)議分層?因?yàn)榇诘奈锢韺佑悬c(diǎn)多。
針對(duì)不同的通訊需求,便可以使用不同的物理層實(shí)現(xiàn)。例如簡(jiǎn)單的板內(nèi)通訊,或者常見(jiàn)的設(shè)備調(diào)試場(chǎng)景,使用簡(jiǎn)單的LVTTL/TTL電平即可在兩個(gè)設(shè)備間進(jìn)行UART協(xié)議通訊。
夢(mèng)源的圖
通用的串口則使用的是RS232電平,可以增加傳輸距離,并且抵抗一定程度的信號(hào)干擾。 付出的成本則是在物理層需要對(duì)應(yīng)的電平轉(zhuǎn)換芯片來(lái)實(shí)現(xiàn),發(fā)送端需要將內(nèi)部的高低電平信號(hào)轉(zhuǎn)換成電壓更高的+/-電壓信號(hào),接收端需要將+/-電壓信號(hào)轉(zhuǎn)換成內(nèi)部的高低電平信號(hào)。
這里使用這個(gè)芯片,就好像是一個(gè)外置的RF芯片,01還是哪個(gè)01,但是物理層做了一些更改。
電壓大了,這個(gè)傳輸?shù)臅r(shí)候,其實(shí)能量也強(qiáng)了
在工業(yè)通訊的場(chǎng)景下,為了進(jìn)一步提高傳輸距離,以及增強(qiáng)信號(hào)的可靠性,一般會(huì)采用RS485的電平標(biāo)準(zhǔn)。 在發(fā)送端將普通的高低電平信號(hào)轉(zhuǎn)換成一對(duì)差分信號(hào),在接收端將差分信號(hào)再轉(zhuǎn)換成普通的高低電平信號(hào)。另外,RS485允許總線上連接多達(dá)128收發(fā)器,而TTL或者RS232則是點(diǎn)對(duì)點(diǎn)的連接。
也就是說(shuō),工業(yè)設(shè)備要追求抗干擾和穩(wěn)定,一個(gè)節(jié)點(diǎn)數(shù)據(jù)量不大,但是又需要通訊,那這個(gè)RS485就大顯身手了。
可以看到,就是AB兩個(gè)線就可以傳輸了
甩來(lái)甩去
我們使用的最多的是TTL電平
還是夢(mèng)源的圖
我們看這些MCU的特性里面一定會(huì)有,這個(gè)支持的模式
同步通訊是有時(shí)鐘的,大家在一個(gè)線上面采集。
也就是要三個(gè)線
高級(jí)功能
還可以設(shè)置時(shí)鐘
串口同步通信:在約定的通信速率下,發(fā)送端和接收端的時(shí)鐘信號(hào)頻率和相位始終保持同步,以保證通信雙方在發(fā)送和接收數(shù)據(jù)時(shí)具有完全一樣的定時(shí)關(guān)系。
串口異步通信:也稱為起止式異步通信,是以字符為單位進(jìn)行傳輸?shù)?,字符之間沒(méi)有固定的時(shí)間間隔要求,每個(gè)字符中的各位則以固定的時(shí)間傳送。
后者也叫字符同步,大家一般都是選這個(gè)的多。 上面就是咱們的基礎(chǔ)知識(shí)了,來(lái)看看具體在MCU,SOC里面的樣子
我這里選了英偉達(dá) Jetson Nano:
可以看到,直接給了3個(gè)串口
不愧是說(shuō)SOC,性能就是好,時(shí)鐘200M,還有FIFO
三組
可以看到,再牛逼也得用串口調(diào)試
那其實(shí)我們的電腦只有USB和Type-C接口了,根本沒(méi)有串口?。?!那咋辦?
所以就需要一個(gè)USB轉(zhuǎn)串口的芯片!
CP2102,明星產(chǎn)品,也是貴族了
中規(guī)中矩的異步串口功能
這里
虛擬串口,全平臺(tái)適配
框圖也簡(jiǎn)單,如果異步通訊的話,就TX和RX就行了
這也簡(jiǎn)單,電源就是濾波,然后USB就是保護(hù),RST是上拉
還有一個(gè)2104
1. CP2104更便宜。
2. CP2104體積更小,占地面積不同。CP2104是QFN24(4x4mm); CP2102是QFN28(5x5mm)。
會(huì)小一點(diǎn)
3. CP2104具有 I/O 電源引腳,可通過(guò)外部電阻承受VDD至5V的電壓。
4. CP2104支持RS-485; CP2102沒(méi)有。
5. CP2104具有GPIO引腳; CP2102沒(méi)有。
6. CP2104具有一次性可編程存儲(chǔ)器(OTP); 只能自定義一次CP2104。CP2102具有可重新編程的閃存; 可以多次自定義CP2102。
一模一樣,無(wú)所謂
還有咱們的WCH
就是它的封裝不好看,有點(diǎn)大
微小型的 10 腳貼片-MSOP-10,這個(gè)好
這個(gè)是什么畫的?PADS?
就和我不出油的筆有一拼。
還有下載電路,數(shù)據(jù)手冊(cè)里面介紹了不少應(yīng)用例子,不錯(cuò)
反正就是這三個(gè)吧!
MCU還是要說(shuō)一下:
CW32還有個(gè)好玩的,就是TX和RX互換功能,再也不怕連錯(cuò)了
在CR2這個(gè)寄存器這里改
這個(gè)也值得一看,別的MCU也可以用的上
除了MCU有串口,需要一個(gè)USB橋以外,還有自己帶MCU USB IP的。
哈哈哈哈,沒(méi)想到吧?每次買東西湊單的貨,有這種好玩的東西。也就是說(shuō)可以不使用額外的芯片,就直接一個(gè)USB線就可以通訊了。
直接這樣就ok
推薦這本書
STM32F103 自帶的 USB 符合 USB2.0 規(guī)范,不過(guò) STM32F103 的 USB 都只能用來(lái)做設(shè)備,而不能用作主機(jī)。 標(biāo)準(zhǔn) USB 共四根線組成,除 VCC/GND 外,另外為 D+,D-; 這兩根數(shù)據(jù)線采用的是差分電壓的方式進(jìn)行數(shù)據(jù)傳輸?shù)摹?在 USB 主機(jī)上,D-和 D+都是接了 15K 的電阻到低的,所以在沒(méi)有設(shè)備接入的時(shí)候,D+、D-均是低電平。而在 USB 設(shè)備中,如果是高速設(shè)備,則會(huì)在 D+上接一個(gè) 1.5K 的電阻到 VCC,而如果是低速設(shè)備,則會(huì)在 D-上接一個(gè) 1.5K 的電阻到 VCC。這樣當(dāng)設(shè)備接入主機(jī)的時(shí)候,主機(jī)就可以判斷是否有設(shè)備接入,并能判斷設(shè)備是高速設(shè)備還是低速設(shè)備。 STM32F103 的 MCU 自帶 USB 從控制器,符合 USB 規(guī)范的通信連接;PC 主機(jī)和微控制器之間的數(shù)據(jù)傳輸是通過(guò)共享一專用的數(shù)據(jù)緩沖區(qū)來(lái)完成的,該數(shù)據(jù)緩沖區(qū)能被 USB 外設(shè)直接訪問(wèn)。 這塊專用數(shù)據(jù)緩沖區(qū)的大小由所使用的端點(diǎn)數(shù)目和每個(gè)端點(diǎn)最大的數(shù)據(jù)分組大小所決定,每個(gè)端點(diǎn)最大可使用 512 字節(jié)緩沖區(qū)(專用的 512 字節(jié),和 CAN 共用),最多可用于 16 個(gè)單向或 8 個(gè)雙向端點(diǎn)。USB 模塊同 PC 主機(jī)通信,根據(jù) USB 規(guī)范實(shí)現(xiàn)令牌分組的檢測(cè),數(shù)據(jù)發(fā)送/接收的處理,和握手分組的處理。整個(gè)傳輸?shù)母袷接捎布瓿桑渲邪?CRC 的生成和校驗(yàn)。
這個(gè)是設(shè)置頁(yè)面
Speed:Full Speed 12MBit/s(固定為全速)
Low Power:默認(rèn) Disabled(在任何不需要使用usb模塊的時(shí)候,通過(guò)寫控制寄存器總可以使USB模塊置于低功耗模式(low power mode ,suspend模式)。在這種模式下,不產(chǎn)生任何靜態(tài)電流消耗,同時(shí)USB時(shí)鐘也會(huì)減慢或停止。通過(guò)對(duì)USB線上數(shù)據(jù)傳輸?shù)臋z測(cè),可以在低功耗模式下喚醒USB模塊。也可以將一特定的中斷輸入源直接連接到喚醒引腳上,以使系統(tǒng)能立即恢復(fù)正常的時(shí)鐘系統(tǒng),并支持直接啟動(dòng)或停止時(shí)鐘系統(tǒng)。)
USB 的 DP 引腳必須上拉 1.5K 歐的電阻,電腦才能檢測(cè)到 USB,否則檢測(cè)不到。
如果USB端口出現(xiàn)感嘆號(hào)設(shè)備無(wú)法啟動(dòng)的問(wèn)題,可適當(dāng)將堆改大,如0x400。
就是這么多了。
IIC支持熱拔插嗎?(附有詳細(xì)CW32 IIC協(xié)議解讀)
SPI協(xié)議,這篇就夠了!
夢(mèng)源邏輯分析儀分析IIC,SPI協(xié)議
這樣看就低速協(xié)議全面了。
https://blog.csdn.net/qq_36347513/article/details/127404464https://blog.csdn.net/qq_36347513/article/details/127404464https://dreamsourcelab.cn/logic-analyzer/uart/https://zh.wikipedia.org/wiki/%E4%B8%B2%E8%A1%8C%E7%AB%AF%E5%8F%A3https://www.silabs.com/documents/public/data-sheets/CP2102-9.pdf
-
mcu
+關(guān)注
關(guān)注
146文章
17718瀏覽量
358404 -
電腦
+關(guān)注
關(guān)注
16文章
1761瀏覽量
69745 -
串口
+關(guān)注
關(guān)注
14文章
1580瀏覽量
78365
原文標(biāo)題:細(xì)嗦MCU與電腦的通訊方式-串口
文章出處:【微信號(hào):gkongbbs,微信公眾號(hào):工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用Labview做一個(gè)485串口電子秤程序
串口通訊隔離器的定義與作用
串口通訊異常處理方法 串口設(shè)備連接方式
一文解讀SPI

TPA3110D2和串口通訊有干擾怎么解決?
TPA3110D2接電腦音頻的同時(shí),同一塊電路板接max232進(jìn)行串口通訊時(shí),功放會(huì)有雜音怎么解決?
PLC多種通訊方式匯總學(xué)習(xí)~

plc與電腦無(wú)法通訊的3種可能原因
電腦與plc的連接與通訊設(shè)置方法
迪文串口屏如何與電腦連接
迪文串口屏ModBus開(kāi)發(fā)流程

評(píng)論