单片机通信方式
USART,RS232,RS485,IIC,SPI
基本概念:
串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的電平標準(電信號)
TTL:TTL電平信號之所以被廣泛使用,原因是:通常我們采用二進制來表示數據。而且規定,+5V等價于邏輯“1”,0V等價于邏輯“0”。這樣的數據通信及電平規定方式,被稱做TTL(晶體管-晶體管邏輯電平)信號系統。
UART,是通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),既然是“器”,顯然,它就是個設備而已,要完成一個特定的功能的硬件,它本身并不是協議。那么它要完成什么功能呢?它的最基本功能,是串行數據和并行數據之間的轉換。我們知道,計算機中的數據以Byte為基本單位,對一個Byte的存取是并行的,即,同時取得/寫入8個bit。而串行通信,需要把這個Byte“打碎”,按照時間順序來收發以實現串行。?
RS232/RS485,是兩種不同的電氣協議,也就是說,是對電氣特性以及物理特性的規定,作用于數據的傳輸通路上,它并不內含對數據的處理方式。比如,最顯著的特征是:RS232使用3-15v有效電平,而UART,因為對電氣特性并沒有規定,所以直接使用CPU使用的電平,就是所謂的TTL電平(可能在0~3.3V之間)。更具體的,電氣的特性也決定了線路的連接方式,比如RS232,規定用電平表示數據,因此線路就是單線路的,用兩根線才能達到全雙工的目的;而RS485,?使用差分電平表示數據,因此,必須用兩根線才能達到傳輸數據的基本要求,要實現全雙工,必需用4根線。但是,無論使用RS232還是RS485,它們與UART是相對獨立的,但是由于電氣特性的差別,必須要有專用的器件和UART接駁,才能完成數據在線路和UART之間的正常流動。RS232、RS-485最終結果都是轉換為TTL電平方式與單片機通信(CAN收發器把差分信號轉化為TTL-->CAN控制器(MCU))。其目的都是提高通信質量,提高抗干擾能力。
RS232,全雙工(邏輯1:-15V--5V ?邏輯0:+3V--+15V)。232是三線制非差分信號,收發各使用一根信號線,通過這幾根信號線與地線的電壓差,來判斷傳輸的數據。所以232是全雙工的。但傳輸距離很近,一般不超過十米。
RS485,半雙工、(邏輯1:+2V--+6V ?邏輯0: -6V---2V)這里的電平指AB 兩線間的電壓差。485是二線制差分信號,也就是實際傳輸的數據是通過判斷這兩條信號線上的電壓差來實現的,正因如此,485半雙工的,也就是發送和接收不能同時進行,也因如此,485的通訊距離,可以達到幾千米。
CAN總線:邏輯1:-1.5V--0V ?邏輯0:+1.5V--+3V)這里的電平指CAN_High、CAN_Low 兩線間的電壓差。
IIC、I2C 協議在 SCL 高電平時對 SDA 信號采樣, SCL 低電平時 SDA準備下一個數據
SPI、SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基于SPI的設備共有的,它們是SDI(數據輸入)、SDO(數據輸出)、SCLK(時鐘)、CS(片選)。
(1)SDI –?SerialData?In,串行數據輸入; (2)SDO –?SerialDataOut,串行數據輸出; (3)SCLK – Serial Clock,時鐘信號,由主設備產生; (4)CS – Chip Select,從設備使能信號,由主設備控制。 其中,CS是從芯片是否被主芯片選中的控制信號,也就是說只有片選信號為預先規定的使能信號時(高電位或低電位),主芯片對此從芯片的操作才有效。這就使在同一條總線上連接多個SPI設備成為可能。總結
- 上一篇: poj2069求最小外接球半径 模拟退火
- 下一篇: GeneXus荣获2021年中国产品研发