常見外設
UART
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發器)是一種異步、串行、全雙工的通信總線。
UART 有3根線,分別是:發送線(TX)、接收線(RX)和地線(GND),通信時必須將雙方的TX和RX交叉連接并且GND相連才可正常通信。
UART 中,發送和接收設備之間的時鐘頻率可以不同,但是它們需要約定相同的波特率(傳輸速率)來確保數據的正確傳輸。
UART的時序
起始位:1個字長,保持邏輯0電平;
數據位:數據可以是5,6,7,8位,構成一個字符,一般都是8位。先發送最低位LSB,再發送最高位MSB(小端模式)。
校驗位:可選;奇校驗(Odd Parity):如果數據位中1的數目是偶數,則校驗位為1才能滿足1的個數為奇數,如果1的數目是奇數,校驗位為0。即加上校驗位后,1的數目是奇數。
偶校驗(Even Parity):如果數據為中1的數目是偶數,則校驗位為0才能滿足1的個數為偶數,如果1的數目是奇數,校驗位為1。即加上校驗位后,1的數目是偶數。
停止位:長度一般為1、1.5、2個波特率周期,保持邏輯1電平。
RS485
RS485是串行通信標準,使用差分信號傳輸,抗干擾能力強,常用于工控領域。
RS485只需要兩根線,通常被稱為A線和B線,用于傳輸數據和接收數據。
A線和B線之間的電壓差用于表示數據的邏輯狀態。
當A線相對于B線的電壓為正時,表示邏輯“1”;
當A線相對于B線的電壓為負時,表示邏輯“0”。
兩線制通常使用雙絞線作為傳輸介質,具有較好的抗干擾能力和較長的傳輸距離。
RS485的特點
接口電平低:RS485的接口電平比RS232降低了,不易損壞接口電路的芯片。它的邏輯“1”以兩線間的電壓差為+(2~6)V表示,邏輯“0”以兩線間的電壓差為-2到-6V表示。這種低電平的接口設計使得RS485在傳輸數據時更加穩定,并且能夠減少電磁干擾的影響。
傳輸距離遠:RS485總線在傳輸速率較低時(例如100Kbps),其最遠傳輸距離可以達到1200米以上。這使得RS485非常適合于需要長距離傳輸的應用場景。
傳輸速率高:RS485的傳輸速率非常高,在短距離(如10米)傳輸時,其數據最高傳輸速率可以達到35Mbps。即使在長距離(如1200米)傳輸時,其傳輸速度也能達到100Kbps。這使得RS485能夠滿足高速數據傳輸的需求。
抗干擾能力強:RS485接口采用平衡驅動器和差分接收器的組合,這種設計增強了其抗共模干擾能力,使得RS485在電磁干擾較嚴重的環境下也能保持穩定的通信。
接口簡單:RS485接口采用差分信號傳輸,只需要兩根信號線(A+和B-)就可以進行正常的通信,連接簡單方便。
IIC
IIC(Inter-Integrated Circuit)是一種同步、串行、半雙工的通信協議,也被稱為I2C(Inter-Integrated Circuit)。
IIC使用兩根線(時鐘線SCL和數據線SDA)進行通信,同時支持多個設備共享這兩根線,因此適用于多主設備和多從設備的應用場景。
IIC總線結構圖
① 由時鐘線SCL和數據線SDA組成,并且都接上拉電阻,確保總線空閑狀態為高電平。
② 總線支持多設備連接,允許多主機存在,每個設備都有一個唯一的地址。
③ 連接到總線上的數目受總線的最大電容400pf限制。
④ 數據傳輸速率:標準模式100k bit/s?、快速模式400k bit/s 、高速模式3.4Mbit/s。
IIC協議時序
有效數據:在SCL為低電平時,準備數據,在SCL變為高電平之前準備好數據。SCL為高電平時,數據才是有效的。
起始信號(S):當SCL為高電平時,SDA從高電平變為低電平。
應答信號:因為發送完數據后,主機會釋放SDA,所以上拉電阻影響下SDA默認為高,而從機拉低SDA就是確認收到數據即ACK,否則NACK。
停止信號(P):當SCL為高電平時,SDA從低電平變為高電平。
SPI?
SPI是串行外設接口(Serial Peripheral Interface)的縮寫,是一種高速的,同步,全雙工的通信總線。常用于短距離通訊,主要是在嵌入式系統中。它使用主從架構進行通信。通常情況下,一個主設備控制一個或多個從設備。
一般使用4條線進行通信,分別是:
MOSI(Master Out Slave In):主設備輸出,從設備輸入。
MISO(Master In Slave Out):主設備輸入,從設備輸出。
SCLK(Serial Clock):時鐘信號,由主設備產生。
SS(Slave Select):從設備選擇信號,由主設備控制。
連接方式
常規SPI模式
在常規模式下,主機需要為每個從機提供單獨的片選信號。一旦主機使能(拉低)片選信號,MOSI/MISO線上的時鐘和數據便可用于所選的從機。如果使能多個片選信號,則MISO線上的數據會被破壞,因為主機無法識別哪個從機正在傳輸數據。
菊花鏈模式
在某些情況下,多個從設備可以通過串聯相連形成菊花鏈連接方式。主設備通過MOSI將數據連續發送到一個從設備,然后該從設備再將數據傳遞給下一個從設備,依此類推。
ADC
ADC(全稱 Analog-to-Digital Converter ),指模擬/數字轉換器。
首先,傳感器會采集物理量,并將這些物理量轉換為電壓。ADC可以采集這些電壓,并將這些電壓轉換為數字量,讓單片機進行處理。
ADC的特性
量程:能測量的電壓范圍 0 ~ 3.6V
分辨率:表示ADC能辨別的最小模擬量,用二進制位數表示,比如:8、10、12、16位等。位數越多,分辨率越高,一般來說分辨率越高,轉化時間越長。
轉化時間:表示完成一次A/D轉換所需要的時間,轉換時間越短,采樣率就可以越高。
精度:最小刻度基礎上疊加各種誤差的參數,精度受ADC性能、溫度和氣壓等影響。
量化誤差:用數字量近似表示模擬量,采用四舍五入原則,此過程產生的誤差為量化誤差。
轉換序列:
A/D轉換被組織為兩組:規則組(常規轉換組)和注入組(注入轉換組)。
在F1中,規則組最多可以有16個轉換,注入組最多有4個轉換。
注入組的優先級比規則組高,規則組的轉換可以被注入組打斷。比如說,當規則組正在轉換時,觸發了注入組的轉換,那么規則組正在進行的轉換結束后,會去進行注入組的轉換。執行完全部注入組的轉換后,才會回來繼續執行規則組的轉換。
中斷
ADC中斷事件有:規則通道轉換結束、注入通道轉換結束、設置了模擬看門狗狀態位、溢出(F1沒有)。
規則組每個通道轉換結束后,除了可以產生中斷外,還可以產生DMA請求,我們利用DMA及時把轉換好的數據傳輸到指定的內存里,防止數據被覆蓋。
ADC的工作模式
單次轉換、連續轉換、掃描模式、不掃描模式
不同模式組合的作用
單次轉換模式(不掃描):只轉換一個通道,而且是一次,需等待下一次觸發。
單次轉換模式(掃描):選中的所有通道都轉換一次。
連續轉換模式(不掃描):只會轉換一個通道,轉換完后會自動執行下一次轉換。
連續轉換模式(掃描):選中的所有通道都轉換一次,并自動進入下一輪轉換。
?在進行ADC通道轉換時,轉換模式決定通道轉換的次數;而掃描模式決定轉換的通道數。
單總線
單總線(1-Wire)是美國DALLAS公司推出的外圍串行擴展總線技術,它是一種簡單的信號傳輸電路,可通過一根共用的數據線實現主控制器與一個或一個以上從器件之間的半雙工雙向通信。這種總線技術與SPI、I2C串行數據通信方式不同,它采用單根信號線,既傳輸時鐘又傳輸數據,而且數據傳輸是雙向的。
單總線只有一根數據線系統中的數據交換、控制都在這根線上完成。設備(主機或從機)通過一個漏極開路或三態端口連至該數據線,這樣允許設備不發送數據時釋放總線,以便其他設備使用總線。
單總線時序控制
單總線是主從結構,只有主機呼叫從機時,從機才能答應。
主機訪問1-wire器件都必須嚴格遵循單總線命令序列: 初始化、ROM命令、功能命令 。如果出現序列混亂,1-wire器件不會響應主機(搜索ROM命令,報警搜索命令除外)。因此,器件需要要求遵循嚴格的通信協議,以保證數據的完整性。
該協議由通過一條線來傳送的四種信令組成:包括復位脈沖和在線應答脈沖的復位序列、寫0時隙、寫1時隙、讀時隙。除在線應答脈沖以外,所有其它信號都由總線主機發出,并且發送的所有數據和命令都是字節的低位在前。主機與從機的數據通信是通過時隙完成的,在每個時隙只能傳送一位數據。通過寫時隙可把數據從主
機傳送給從機,通過讀時隙可把數據由從器件傳送
給主機,將完成一位傳輸的時間稱為一個時隙。