❶ stm32串口通訊是檢測邊沿還是電平
STM32串口通信正常來說兩項數據都需要檢測。
介紹串口通信
按照數據傳送方向分類
單工:數據傳輸只支持數據在一個方向上傳輸
半雙工:允許數據在兩個方向上傳輸。但是,在某一時刻,只允許數據在一個方向上傳輸,它實際上是一種切換方向的單工通信;它不需要獨立的接收端和發送端,兩者可以合並一起使用一個埠
全雙工:允許數據同時在兩個方向上傳輸。因此,全雙工通信是兩個單工通信方式的結合,需要獨立的接收端和發送端
分別如下圖中的a、b、c所示。
按照通信方式分類
同步通信:帶時鍾同步信號傳輸。比如:SPI,IIC通信介面
非同步通信:不帶時鍾同步慶納信號。譽碧沒比如:UART(通用非同步收發器),單匯流排
在同步通訊中,收發設備上方會使用一根信號線傳輸信號,在時鍾信號的驅動下雙方進行協調,同步數據。例如,通訊中通常雙方會統一規定在時鍾信號的上升沿或者下降沿對數據線進行采樣。
在非同步通訊中不使用時鍾信號進行數據同步,它們直接在數據信號中穿插一些用於同步的信號位,或者將主題數據進行打包,以數據幀的格式傳輸數據。通訊中還需要雙方規約好數據的傳輸速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。
在同步通訊中,數據信號所傳輸的內容絕大部分是有效數據,而非同步通訊中會則會包含數據幀的各種標識符,所以同步通訊效率高,但是同步通訊雙方的時鍾允許誤差小,稍稍時鍾出錯就可能導致數據錯亂,非同步通訊雙方的時鍾允許誤差較大。
STM32串口通信基礎
STM32的串口通信介面有兩種,分別是:UART(通用非同步收發器)、USART(通用同步非同步收發器)。而對於大容量STM32F10x系列晶元,分別有3個USART和2個UART。
UART引腳連接方法
RXD:數據輸入引腳,數據接收
TXD:數據發送引腳,數慧歲據發送
對於兩個晶元之間的連接,兩個晶元GND共地,同時TXD和RXD交叉連接。這里的交叉連接的意思就是,晶元1的RxD連接晶元2的TXD,晶元2的RXD連接晶元1的TXD。這樣,兩個晶元之間就可以進行TTL電平通信了。
若是晶元與PC機(或上位機)相連,除了共地之外,就不能這樣直接交叉連接了。盡管PC機和晶元都有TXD和RXD引腳,但是通常PC機(或上位機)通常使用的都是RS232介面(通常為DB9封裝),因此不能直接交叉連接。RS232介面是9針(或引腳),通常是TxD和RxD經過電平轉換得到的。故,要想使得晶元與PC機的RS232介面直接通信,需要也將晶元的輸入輸出埠也電平轉換成RS232類型,再交叉連接。
經過電平轉換後,晶元串口和RS232的電平標準是不一樣的:
單片機是TTL電平:+5V表示1,0V表示0
RS232是負邏輯電平,-3~-15V為1,+3~+15V為0
RS-232通訊協議標准串口的設備間通訊結構圖如下:
所以單片機串口與PC串口通信就應該遵循下面的連接方式:在單片機串口與上位機給出的RS232口之間,通過電平轉換電路(如下面圖中的Max232晶元) 實現TTL電平與RS232電平之間的轉換。下圖中的P10,也就是上文中提到的DB9。
STM32的UART特點
全雙工非同步通信;
分數波特率發生器系統,提供精確的波特率。發送和接受共用的可編程波特率,最高可達4.5Mbits/s;
可編程的數據字長度(8位或者9位);
可配置的停止位(支持1或者2位停止位);
可配置的使用DMA多緩沖器通信;
單獨的發送器和接收器使能位;
檢測標志:① 接受緩沖器 ②發送緩沖器空 ③傳輸結束標志;
多個帶標志的中斷源,觸發中斷;
其他:校驗控制,四個錯誤檢測標志。
串口通信過程
STM32中UART參數
串口通訊的數據包由發送設備通過自身的TXD介面傳輸到接收設備的RXD介面,通訊雙方的數據包格式要規約一致才能正常收發數據。STM32中串口非同步通信需要定義的參數:起始位、數據位(8位或者9位)、奇偶校驗位(第9位)、停止位(1,15,2位)、波特率設置。
UART串口通信的數據包以幀為單位,常用的幀結構為:1位起始位+8位數據位+1位奇偶校驗位(可選)+1位停止位。如下圖所示:
奇偶校驗位分為奇校驗和偶校驗兩種,是一種簡單的數據誤碼校驗方法。奇校驗是指每幀數據中,包括數據位和奇偶校驗位的全部9個位中1的個數必須為奇數;偶校驗是指每幀數據中,包括數據位和奇偶校驗位的全部9個位中1的個數必須為偶數。
校驗方法除了奇校驗(odd)、偶校驗(even)之外,還可以有:0 校驗(space)、1 校驗(mark)以及無校驗(noparity)。0/1校驗:不管有效數據中的內容是什麼,校驗位總為0或者1。
UART框圖
這個框圖分成上、中、下三個部分,具體的可以看《STM32中文參考手冊》中的描述。
框圖的上部分,數據從RX進入到接收移位寄存器,後進入到接收數據寄存器,最終供CPU或者DMA來進行讀取;數據從CPU或者DMA傳遞過來,進入發送數據寄存器,後進入發送移位寄存器,最終通過TX發送出去。
然而,UART的發送和接收都需要波特率來進行控制的,波特率是怎樣控制的呢?
這就到了框圖的下部分,在接收移位寄存器、發送移位寄存器都還有一個進入的箭頭,分別連接到接收器控制、發送器控制。而這兩者連接的又是接收器時鍾、發送器時鍾。也就是說,非同步通信盡管沒有時鍾同步信號,但是在串口內部,是提供了時鍾信號來進行控制的。而接收器時鍾和發送器時鍾又是由什麼控制的呢?
可以看到,接收器時鍾和發送器時鍾又被連接到同一個控制單元,也就是說它們共用一個波特率發生器。同時也可以看到接收器時鍾(發生器時鍾)的計算方法、USRRTDIV的計算方法。
這里需要知道一個知識點:
UART1時鍾:PCLK2(高速)
UART2、UART3、UART4時鍾:PCLK1(低速)
❷ 51單片機的串列口是單工對嗎
51單片機的叢握陵串列口是單工不對。只能接受或只能發送的稱為單工串列;既可接收又可發送,皮兄但不能同時進行的稱為半雙工;能同時接收和發送的串列口稱為全雙工串列口。串列通信是指數據一位一位地按順序傳送滲戚的通信方式,其突出優點是只需一根。
❸ 兩個51單片機,進行串口單工通訊,要連多少條線電源和地是共用的。
地線+一個MCU的TXD和另一個MCU的RXD,共兩根線
❹ MCS-51單片機什麼是全雙工,半雙工,單工串列通信
單工只有一根數據線,信息只能單向傳送。半雙工也只有一根數據線,但信息可以分時雙向傳送。全雙工有兩根數據線,可以同時雙向傳送。
決定程序執行順序的寄存器是(PC),它的最大定址范圍是(64K)。PC的值是(程序運行當前)的地址。P0口當不作系統擴展時,可作(IO)使用。當作系統擴展時,P0口擔任分時復用的匯流排口。在這種情況下,應在外部加(鎖存器)將地址數據鎖存,地址鎖存信號用(ALE)。
根據串列通信數據傳輸的方向,可將串列通信系統傳輸方式分為(單工)方式,(半雙工)方式和(全雙工)方式。
MCS-51單片機
採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的計算機系統。
(1)51子系列:晶元型號的最末位數字以1作為標志,是基本型產品。
(2)52子系列:晶元型號的最末位數字以2作為標志,是增強型產品。
以上內容參考:網路-MCS-51單片機
❺ 單片機串列口與並行口的不同
單片機串列通訊與並行通訊區別
一條信息的各位數據被逐位按順序傳送的通訊方式稱為串列通訊。串列通訊的特點是:數據位傳送,傳按位順序進行,最少只需一根傳輸線即可完成,成本低但送速度慢。串列通訊的距離可以從幾米到幾千米。 根據信息的傳送方向,串列通訊可以進一步分為單工、半雙工和全雙工三種。信息只能單向傳送為單工;信息能雙向傳送但不能同時雙向傳送稱為半雙工;信息能夠同時雙向傳送則稱為全雙工。 串列通訊又分為非同步通訊和同步通訊兩種方式。在單片機改彎段中,主要使用非同步通訊方式。
串列通訊中,兩個設備之間通過一對信號線進行通訊,其中一根為信號線,另外一根為信號地線,信號電流通過信號線到達目標設備,再經過信號地線返回,構成一個信號迴路。
初級讀者會產生疑問:為何不讓信號電流從電源地線返回?答案:公共地線上存在各種雜亂的電流,可以輕而易舉地把信鬧檔號淹沒。因此所有的信號線都使用信號地線而不是電源地線,以避免干擾。
這一對信號線每次只傳送1bit(比特)的信號,比如1Byte(位元組)的信號需要8次才能發完。傳輸的信號可以是數據、指令或者控制信號,這取決於採用的是何種通訊協議以及傳輸狀態。串列信號本身也可以帶有時鍾信息,並且可以通過演算法校正時鍾。因此不需要額外的時鍾信號進行控制。
並行通訊中,基本原理與串列通訊沒有區別。只不過使用了成倍的信號線路,從而一次可以傳送更多bit的信號。
並行通訊通常可以一次傳送8bit、16bit、32bit甚至更高的位數,相應地就需要8根、16根、32根信號線,同時需要加入更多的信號地線。比如傳統的PATA線路有40根線,其中有16根信號線和7根信號地線,其他為各種控制線,一次可以傳送2Byte的數據。並行通訊中,數據信號中無法攜帶時鍾信息,為了保證各對信號線上的信號時序一致,並行設備需要嚴格同步時鍾信號,或者採用額外的時鍾信號線。
通過串列通訊與並行通訊的對比,可以看出:串列通訊很簡單,但是相對速度低;並行通訊比較復雜,但是相對速度高。更重要的是,串列線路僅使用一對信號線,線路成本低並且抗干擾能力強,因此可以用在長距離通訊上;而並行線路使用多對信號線(還不包括額外的控制線路),線路成本高並且抗干擾能力差,因此對通訊距離有非常嚴核譽格的限制。
❻ MCS-51單片機什麼是全雙工,半雙工,單工串列通信
單工只有一根數據線,信息只鬧枯純能單向傳送。半雙工也只有一根數據線,但信息可以分時雙向傳送。全雙工有兩根數據線,可以同時雙向傳送。
半雙工可以在一個信號載體的兩個方向上傳輸,但是不能同時傳輸。例如,在一個區域網上使用具有半液咐雙工傳輸的技術,一個工作站可以在線上發送數據,然後立即在線上接收數據,這些數據來自數據剛剛傳輸的方向。
(6)單片機串口單工擴展閱讀:
全雙工方式在發送設備的發送方和接收設備的接收方之間採取點到點的連接,這意味著在全雙工的傳送方式下,可以得到更高的數據傳輸速度。
全雙工方式無需進行方向的切換,因此,沒有切換操作所產生的時間延遲,這對那些不能有時間延誤的互動式應用(例如遠程監測和控制系統)十分有利。這種方式要求通訊雙方均有發送器和接收器,同時敗基,需要2根數據線傳送數據信號。
❼ 簡述單片機串列口的工作方式
89系列單片機的串列通信有4種工作方式:
1、方式0是同步移位寄存器方式,幀格式8位,波特率固定為fosc/12。
2、方式1是8位非同步通信方式,幀格式10位,波特率可變:T溢出率/n(n= :32或16)。
3、方式2是9位非同步通信方式,幀格式11位,波特率固定: fosc/n(n=32 或16)。
4、方式3是9位非同步通信方式,幀格式11位,波特率可變:T溢出率(m=32或16)。
方式1、2、3的區別主要表現在幀格式及波特率兩個方面。
單片機應用范圍:
單片機滲透到我們生活的各個領域。導彈的導航裝置,飛機上各種儀表的控制,計算機的網路通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制等等。
還有自動控制領域的機器人、智能儀表、醫療器械以及各種智能機械。因此,單片機的學習、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。
❽ 單片機串口通信原理
1.RS232介面
RS232-C介面連接器一般使用型號為DB-9的9芯插頭座,只需3條介面線,即"發送數據"、"接收數據"和"信號地"即可傳輸數據,其9個引腳的定義如圖11-3所示。
圖11-3 RS232-C介面連接器定義
在RS232的規范中,電壓值在+3V~+15V(一般使用+6V)稱為"0"或"ON"。電壓在-3V~-15V(一般使用-6V)稱為"1"或"OFF";計算機上的RS232"高電位"約為9V,而"低電位"則約為-9V。
RS232為全雙工工作模式,其信號的電壓是參考地線而得到的,可以同時進行數據的傳送和接收。在實際應用中採用RS232介面,信號的傳輸距離可以達到15m。不過RS232隻具有單站功能,即一對一通信。
2.RS485介面
RS485採用正負兩根信號線作為傳輸線路。兩線間的電壓差為+2V~6V表示邏輯"1":兩線間的電壓差為-2V~6V表示邏輯"0"。
RS485為半雙工工作模式,其信號由正負兩條線路信號准位相減而得,是差分輸入方式,抗共模干擾能力強,即抗雜訊干擾性好;實際應用中其傳輸距離可達1200米。RS485具有多站能力,即一對多的主從通信。
在串列通信中,數據通常是在兩個站之間傳送,按照數據在通信線路上的傳送方向可分為3種基本的傳送方式:單工、半雙工和全雙工,如圖11-4所示。
(點擊查看大圖)圖11-4 單工、半雙工和全雙工通信
單工通信使用一根導線,信號的傳送方和接收方有明確的方向性。也就是說,通信只在一個方向上進行。
若使用同一根傳輸線既作為接收線路又作為發送線路,雖然數據可以在兩個方向上傳送,但通信雙方不能同時收發數據,這樣的傳送方式稱為半雙工。採用半雙工方式時,通信系統每一端的發送器和接收器,通過收發開關分時轉接到通信線上,進行方向的切換。
當數據的發送和接收,分別由兩根不同的傳輸線傳送時,通信雙方都能在同一時刻進行發送和接收操作,這樣的傳送方式就是全雙工。在全雙工方式下,通信系統的每一端都設置了發送器和接收器,因此,能控制數據同時在兩個方向上傳輸。全雙工方式無須進行方向的切換。
串列通信可分為兩種類型,一種是同步通信,另一種是非同步通信。採用同步通信時,將所有字元組成一個組,這樣,字元可以一個接一個地傳輸,但是,在每組信息的開始要加上同步字元,在沒有信息要傳輸時,填上空字元,因為同步傳輸不允許有空隙。採用非同步通信時,兩個字元之間的傳輸間隔是任意的,所以,每個字元的前後都要用一些數據位來作為分隔位。比較起來,在傳輸率相同時,同步通信方式下的信息有效率要比非同步方式高,因為同步方式的非數據信息比例比較小。但是,從另一方面看,同步方式要求進行信息傳輸的雙方必須用同一個時鍾進行協調,正是這個時鍾確定了同步串列傳輸過程中每一個信息位的位置。這樣一來,如果採用同步方式,那麼,在傳輸數據的同時,還必須傳輸時鍾信號。而在非同步方式下,接收方的時鍾頻率和發送方的時鍾頻率不必完全一樣,而只要比較相近,即不超過一定的允許范圍就行了。在數據傳輸中,較為廣泛採用的是非同步通信,非同步通信的標准數據格式如圖11-5所示。
(點擊查看大圖)圖11-5 非同步通信數據格式
從圖11-5所列格式可以看出,非同步通信的特點是一個字元一個字元地傳輸,並且每個字元的傳送總是以起始位開始,以停止位結束,字元之間沒有固定的時間間隔要求。每一次有一個起始位,緊接著是5~8個的數據位,再後為校驗位,可以是奇檢驗,也可以是偶校驗,也可不設置,最後是1比特,或1比特半,或2比特的停止位,停止位後面是不定長度的空閑位。停止位和空閑位都規定為高電平,這樣就保證起始位開始處一定有一個下降沿,以此標識開始傳送數據。
❾ 單片機的幾種傳輸方式的總結
學習了51單片機以及STM32後總結下單片機與外設或者上位機通訊的幾種傳輸方式
串口、COM口是指的物理介面形式(硬體)。而TTL、RS-232、RS-485是指的電平標准(電信號)
串列通信:指數據一位一位順序傳送
串列介面:簡稱串口(COM口)
並行通信:一組數據的各數據位在多線上同時被傳輸
並行介面:一種介面,各數據位同時被傳輸,傳輸速度快,效率高,一般用於MCU
串列通信分為:
單工:數據單項傳送
半雙工:數據能雙向傳送但不能同時
全雙工:數據能同時雙向傳送
通用的、及支持同步也支持非同步的接收、發送「模塊」,在晶元內部,與SPI、I2C一起構成單片機的匯流排「枝幹」,對於串口,串口通信指串口按位(bit)發送和接收位元組,盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。
串列通信技術標准EIA-232/485也就是以前所稱的RS-232/485。
232是PC機與通信工業中應用最廣泛的一種串列介面,RS232單端通信,傳輸距離可達15米,最高速率20Kbps。
RS485傳輸速率為10Mbps,最大傳輸距離1219米,,採用二線制時可實現真正的多點雙向通信,而采
用四線連接時只能實現點對多點通信,無論四線還是二線連接方式匯流排上可接多達 32 個設備。
串列通信傳輸速率用於說明傳輸的快慢。在串列通信中,數據是按位進
行傳送的,因此傳輸速率用每秒鍾傳送格式位的數目來表示,稱之波特率
(band rate)。每秒傳送一個格式位就是 1 波特。常用的波特率有:4800、
9600、19200、115200 波特。
串口三個腳:TX、RX、GND
IIC匯流排是一種兩線式串列匯流排,支持多主控,其中任何能夠進行發送和接收的設備都可以成為主匯流排,一個主控能夠控制信號的傳輸和時鍾頻率,當然在任何時間點上只能有一個主控。IIC匯流排是由數據線SDA和時鍾SCl構成的串列匯流排,可發送和接收數據,在CPU與被控IC之間,IC與IC之間進行雙向傳送,最高傳送速率100Kbps,各種被控制電路均並聯在這條匯流排上,每個設備模塊都有唯一的地址,IIC匯流排上的每一個設備模塊既是主控器或被控器,又是發送器或接收器,這取決於你要實現的功能是怎樣的。
CPU發出的控制信號分為地址碼和控制量兩部分
IIC匯流排傳輸過程中有三種信號:起始信號,終止信號,應答信號。
起始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數據;
終止信號:SCL 為低電平時,SDA 由低電平向高電平跳變,結束傳送數據;
應答信號:接收數據的 IC 在接收到 8bit 數據後,向發送數據的 IC 發出
特定的低電平脈沖,表示已收到數據。CPU 向受控單元發出一個信號後,
等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情
況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單
元出現故障。
SPI允許單片機和外圍設備或者單片機之間高速同步數據傳輸,SPI可以有主機和從機模式之選,通信的主從機之間通過移位寄存器同時交換數據。目前自己用的以主機模式居多。SPI需要四線:SS,MISO,MOSI,SCK。
通信過程:在設置好SPI的工作模式:包括SCK頻率(數據傳輸速率),工作速度,主從模式,以及數據接收發送對應的時鍾極性。在主模式下,將SS拉低表示通信的開始,然後通過向SPI數據寄存器中寫入一位元組的數據後自動啟動時鍾SCK開始進行一次通信,通信完成後會產生相應的中斷標志,標志一個位元組數據的傳送完成。通信完成後將SS腳拉高,表示通信過程已經結束。
注意SS引腳的設置:當設置為從機模式時,SS引腳應設置為輸入,拉低的時候SPI才能起作用,拉高的話是消極的SPI模式;在主機模式下,SS引腳可以設置,一般應設置為輸出,如果設置為輸入的話應保持為高,否則將不能進行正常的主機模式操作。
單片機通訊方式
❿ mcs—51單片機的串列口有哪幾種工作方式
1、立即定址:操作數就寫在指令中,和操作碼一起放在程序存貯器中。把「#」號放在立即數前面,以表示該定址方式為立即定址,如movA,#20H。
2、寄存器定址:操作數放在寄存器中,在指令中直接以寄存器的名來表示操作數地址。如MOVA,R0就屬於寄存器定址,即R0寄存器的內容送到累加器A中。
3、直接定址:操作數放在單片機的內部RAM某單元中,在指令中直接寫出該單元的地址。如前例的ADDA,70H中的70H。
4、寄存器間接定址:操作數放在RAM某個單元中,該單元的地址又放在寄存器R0或R1中。如果RAM的地址大於256,則該地址存放在16位寄存器DPTR(數據指針)中,此時在寄存器名前加@符號來表示這種間接定址。如MOVA,@R0。
5、變址定址:指定的變址寄存器的內容與指令中給出的偏移量相加,所得的結果作為操作數的地址。如MOVCA,@A+DPTR。
6、相對定址:由程序計數器中的基地址與指令中提供的偏移量相加,得到的為操作數的地址。如SJMPrel。
7、位定址:操作數是二進制中的某一位,其位地址出現在指令中。如SETBbit。
(10)單片機串口單工擴展閱讀:
單片機的硬體特性:
1、主流單片機包括CPU、4KB容量的RAM、128 KB容量的ROM、 2個16位定時/計數器、4個8位並行口、全雙工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。
2、系統結構簡單,使用方便,實現模塊化。
3、單片機可靠性高,可工作到10^6 ~10^7小時無故障。
4、處理功能強,速度快。
5、低電壓,低功耗,便於生產攜帶型產品。
6、控制功能強。
7、環境適應能力強。