--UART介紹
? ? UART(Universal Asynchonous Receiver and Transmitter)通用異步接收器,是一種通用串行數據總線,用于異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用來與PC進行通信,包括與監控調試器和其他器件,UART我們可以認為它是集成在SOC內部的一個控制器,它可以按照串口通信協議格式收發數據
? ? (由倆部分組成:一個將串行比特流轉換成微處理器可以使用的并行數據接收器(Rx)和一個將來自微處理器的并行數據轉換為串行形式發送的發送器(Tx)
)
? ? 同步通信:在數據傳輸的過程中,需要一根時鐘線同步,例如IIC,SPI總線,通過他們進行數據傳輸的時候,必須有一根時鐘線,用來同步。
? ? 異步通信:數據傳輸的過程中,不需要時鐘線,直接發送數據就可以了,例如串口通信采用的就是異步通信的方式,發送方和接收方之間是沒有時鐘信號線的,他們各自使用各自的時鐘。
? ? (在STM32芯片中除了有UART外,還有個叫做USART,USART的全稱是Universal Synchronous/Asynchronous Receiver/Transmitter,也就是同步/異步串行收發器。相比UART多了一個同步的功能,在硬件上體現出來的就是多了一條時鐘線)
--IMX6ULL UART介紹
? ? 通用異步收發設備(UART)通過電平轉換器和RS-232電纜提供與外部設備的串行通信能力,或通過使用外部電路將紅外信號轉換位電信號(用于接收)或將電信號轉換位驅動信號LED(用于傳輸)的信號,以提供低速IrDA兼容性
? ? 通用異步收發設備支持NRZ編碼格式、RS485兼容的9位數據格式和IrDA兼容的紅外慢速數據速率(SIR)格式
-NRZ編碼
? ??NRZ編碼(Non-return-to-zero Code),也叫不歸零編碼,信號電平的一次反轉代表1,電平不變化表示0;并且在表示完一個碼元后,電壓不需回到0
-RZ編碼
? ? RZ編碼(Return-to-zero Code)歸零編碼;在RZ編碼中,正電平代表邏輯1,負電平代表邏輯0,每傳輸完一位數據,信號返回零電平
? ??信號線上會出現3種電平:正電平、負電平、零電平:?
? ??
? ? 從圖上就可以看出來,因為每位傳輸之后都要歸零,所以接受者只要在信號歸零后采樣即可,這樣就不再需要單獨的時鐘信號。實際上,RZ編碼就是相當于把時鐘信號用歸零編碼再了數據之內。這樣的信號也叫做自同步(self-clocking)信號;在RZ編碼種,大部分的數據變寬,都用來傳輸“歸零”而浪費了;去掉這個歸零步驟,NRZ編碼(Non-return-to-zero Code)就出現了,和RZ的區別就是NRZ是不需要歸零的:
?
? ? 如圖所示,浪費的帶寬又回來了,不過又喪失了自同步性。
-NRZI編碼
NRZI編碼(Non-Return-to-Zero Inverted Code)和NRZ的區別就是NRZI用信號的翻轉代表一個邏輯,信號保持不變代表另外一個邏輯。(USB傳輸的編碼就是NRZI格式,在USB中,電平翻轉代表邏輯0,電平不變代表邏輯1)
?翻轉的信號本身可以作為一種通知機制,可以看到,即使把NRZI的波形完全翻轉,所代表的數據序列還是一樣的,對于USB這種通過差分線來傳輸的信號方便