📢:如果你也對機器人、人工智能感興趣,看來我們志同道合?
📢:不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸對你有幫助,可點贊 👍 收藏 ?不迷路🙉
📢:內容若有錯誤,敬請留言 📝指正!原創文,轉載注明出處
文章目錄
- 單片機常見外設接口有哪些?
- UART
- 基礎概念
- 通信協議
- 硬件結構
- 工作原理
- 電平標準
- 特點
- GPIO
- 基本概念
- 寄存器相關
- 工作模式
- 基本操作
- 優點
- 常見應用場景
- SPI
- 基本概念
- 物理連接
- 通信協議
- 工作原理
- 優缺點
- 軟件編程要點
- I2C
- 基礎概念
- 物理連接
- 通信協議
- 工作模式
- 通信速率
- 優缺點
- 軟件編程要點
單片機常見外設接口有哪些?
接口類型 | 特點 |
---|---|
GPIO(通用輸入/輸出) | 引腳功能靈活,可配置為輸入、輸出、復用功能或模擬模式;支持上拉、下拉電阻設置以及電平觸發中斷;常用于連接按鍵、LED、繼電器等簡單數字設備 ,進行數字信號的輸入輸出控制 |
UART(通用異步收發器) | 支持異步通信,可自定義波特率進行數據傳輸;硬件連接簡單,一般只需RX(接收)和TX(發送)兩根線;傳輸距離較短,速率相對不高;常用于單片機與電腦間調試、與藍牙模塊等通信 |
SPI(串行外設接口) | 高速同步串行通信,支持全雙工;通常由時鐘線SCLK、主機輸出從機輸入線MOSI、主機輸入從機輸出線MISO和從機選擇線SS組成;主從模式,一個主機可連接多個從機;適合連接高速外部設備,如ADC、FLASH存儲器、顯示屏等 |
I2C(雙線接口) | 低速同步串行總線,僅需數據線SDA和時鐘線SCL;支持多主多從架構;通過設備地址進行尋址,占用引腳少;通信速率通常在100kHz到1MHz之間;常用于連接低功耗外設,如溫濕度傳感器、EEPROM、實時鐘(RTC) 等 |
CAN(控制器局域網) | 支持多主設備串行通信,具有高可靠性和強抗干擾能力;能實現較長距離的數據傳輸(最遠可達數公里),且傳輸速率較高(最高可達1Mbps);主要應用于工業自動化控制、汽車電子系統等領域 |
ADC(模數轉換器) | 將模擬信號轉換為數字信號,便于單片機處理;有不同的分辨率和采樣速率可選;廣泛應用于溫度、壓力、電壓等模擬量測量場景,如各類傳感器數據采集 |
DAC(數模轉換器) | 把數字信號轉換為模擬信號;可用于生成模擬控制信號,如音頻信號生成、模擬信號驅動等 |
PWM(脈沖寬度調制) | 通過調節脈沖信號的占空比來控制信號的平均值;可用于電機調速、LED亮度調節、電源電壓調節等場景 ,實現對外部設備的模擬量控制 |
USB(通用串行總線) | 支持高速數據傳輸,同時可為設備供電;具備即插即用功能,支持多種設備類型,如存儲設備、通信設備、音頻設備等;接口標準統一,兼容性好 |
UART
UART(通用異步收發傳輸器)的知識點主要涵蓋以下方面:
基礎概念
- 定義:一種通用串行數據總線,用于異步通信,能實現雙向全雙工傳輸和接收。
- 歷史:可追溯到1960年,最初用于連接微型計算機與電傳打字機 。
- 用途:在嵌入式設計中,用于主機與輔助設備通信,如汽車音響與外接AP通信、與PC機及其他器件(像EEPROM)通信等;在手機設計和測試階段控制CPU與其余部分的訊息傳送。
通信協議
- 數據傳輸方式:將傳輸數據的每個字符一位接一位地傳輸。
- 數據幀結構:
- 起始位:邏輯“0”,表示傳輸字符開始。
- 數據位:可以是4、5、6、7、8位等,常采用ASCII碼,從最低位開始傳送。
- 奇偶校驗位:用于校驗資料傳送的正確性,使“1”的位數為偶數(偶校驗)或奇數(奇校驗) ,也可無校驗位。
- 停止位:是字符數據的結束標志,可為1位、1.5位或2位高電平,還可提供時鐘同步校正機會。
- 空閑位:邏輯“1”,表示當前線路無資料傳送。
- 波特率:衡量資料傳送速率的指標,指每秒鐘傳送的符號數。通信雙方需設置相同波特率以確保數據正確傳輸,常見的有9600、115200等。
硬件結構
- 輸出緩沖寄存器:接收CPU從數據總線上送來的并行數據并保存。
- 輸出移位寄存器:接收輸出緩沖器的并行數據,以發送時鐘速率逐位移出,實現并行到串行數據的轉換。
- 輸入移位寄存器:以接收時鐘速率逐位移入串行數據,裝滿后轉換為并行數據送往輸入緩沖寄存器。
- 輸入緩沖寄存器:接收輸入移位寄存器的并行數據,供CPU取走。
- 控制寄存器:接收CPU送來的控制字,決定通信的傳輸方式(異步或同步)、數據格式(數據位個數、有無奇偶校驗、停止位位數等)。
- 狀態寄存器:存放接口各種狀態信息,如輸出緩沖區是否空、輸入字符是否準備好等,便于CPU查詢。
工作原理
- 發送接收:發送邏輯將從發送FIFO讀取的數據進行“并→串”轉換,按配置輸出起始位、數據位、奇偶校驗位和停止位;接收邏輯在檢測到有效起始脈沖后,對接收位流執行“串→并”轉換,并檢測各類錯誤 。
- 波特率產生:波特率除數由16位整數和6位小數組成,波特率發生器用其決定位周期,在足夠高系統時鐘速率下,可產生標準波特率且誤差小。
- 數據收發:發送時數據寫入發送FIFO,按預設參數發送,發送FIFO非空時忙標志位有效;接收時,若檢測到起始位,接收計數器運行,按規則采樣數據,接收到完整字符存于接收FIFO。
- 中斷控制:FIFO溢出、線中止、奇偶校驗錯誤、幀錯誤、接收超時、發送、接收等情況可使UART產生中斷,通過查詢中斷狀態函數,軟件可在同個中斷服務函數處理多個中斷事件。
- FIFO操作:包含發送和接收FIFO,可配置不同深度觸發中斷,解決UART收發中斷頻繁導致CPU效率不高的問題,按先進先出原則操作。
- 回環操作:可進入內部回環模式,用于診斷或調試,發送的數據被自身接收。
電平標準
- TTL:使用標準TTL邏輯電平(常見5V、3.3V、1.8V ),設備共地,單向通信一根信號線,雙向全雙工需兩根,適用于短距離通信,如電子DIY項目、嵌入式系統等。
- RS - 232:美國電子工業聯盟指定的串行數據通信接口標準,電平范圍-15V至+15V,典型±12V,用于計算機串行接口和外部設備通信,如調制解調器、打印機等,適用于短距離通信,抗干擾性較好。
- RS - 485:基于RS - 422標準制定,多點、差分信號串行通信標準,以正負差分電平表示數據,支持多個設備在同一通信線傳輸,通信距離可達1200米,適用于遠距離和噪聲環境下的通信 。
特點
- 優點:布線簡單,只需兩根線(TX和RX);不需要時鐘信號;可通過奇偶校驗位執行錯誤檢查;數據包結構可更改;應用廣泛。
- 限制:數據幀最多9位;無法設置多個從站或主站系統;波特率偏差需在10%以內 。
此外,UART與USART(通用同步/異步收發器)有所關聯,USART在UART基礎上增加了同步功能,多了僅支持輸出的時鐘,可兼容別的協議或用于特殊用途,但不支持兩個USART之間同步通信 。
GPIO
GPIO(General - purpose input/output,通用型輸入輸出)的知識點主要包含以下方面:
基本概念
- 定義:是一種通用的輸入輸出接口,像微控制器的“手腳”,通過芯片引腳與外部設備連接,實現單片機等與外部世界的交互,幾乎所有微控制器都具備該功能。
- 功能選擇:一個引腳可作通用輸入(GPI)、通用輸出(GPO) 或通用輸入與輸出(GPIO),如clk generator(時鐘發生器)、chip select(片選)等功能。其功能由寄存器配置選擇。
寄存器相關
- GPxCON寄存器:用于配置引腳功能。不同端口在功能選擇上有差異,如GPACON中每一位對應一根引腳;PORT B - PORT H/J的GPxCON中每兩位控制一根引腳,通過設置不同數值確定引腳為輸入、輸出、特殊功能或保留狀態。
- GPxDAT寄存器:用于讀寫引腳。當引腳設為輸入,讀取此寄存器可知引腳電平狀態;設為輸出時,寫入相應位可控制引腳輸出電平 。
- GPxUP寄存器:用于確定是否使用內部上拉電阻。某位為1時,相應管腳無內部上拉電阻;為0時相應管腳有內部上拉電阻。上拉電阻在引腳處于高阻態時,決定引腳電平狀態 。
工作模式
- 輸入模式 :
- 浮空輸入:電平由外部輸入決定,引腳懸空時電平不確定、易受干擾,常用于外部按鍵輸入、IIC和USART等標準通訊協議,是STM32復位后的默認模式。
- 上拉輸入:通過上拉電阻將輸入信號鉗在高電平,外部無信號輸入時引腳讀高電平,可避免電平浮動導致信號不穩定。
- 下拉輸入:借助下拉電阻使引腳在無外部輸入時為低電平。
- 模擬輸入:信號不經過上拉或下拉電阻,關閉施密特觸發器,直接傳送到片上外設模塊,用于ADC采集電壓等場景,獲取原始模擬信號 。
- 輸出模式 :
- 推挽輸出:使用兩個MOS管,輸出寄存器為’0’時激活NMOS,為’1’時激活PMOS,具備輸出高低電平能力,可直接驅動一些負載 。
- 開漏輸出:僅使用NMOS,輸出寄存器為’1’時端口處于高阻狀態,無法真正輸出高電平,需外部上拉電阻,可改變上拉電源電壓提高驅動能力,還能實現線與功能,常用于IIC等總線協議 。
基本操作
- 配置:使用前需進行配置,步驟包括使能GPIO時鐘,設置GPIO方向(輸入/輸出) 以及配置工作模式。例如在STM32中,通過操作相關寄存器完成這些配置。
- 輸出操作:配置為輸出模式后,可通過設置輸出電平控制外部設備,如控制LED亮滅。操作相關寄存器實現電平設置,部分寄存器支持原子操作,避免多線程沖突 。
- 輸入操作:配置為輸入模式后,可讀取引腳電平狀態,如讀取按鍵狀態 。
優點
- 低功耗:功率損耗低,如約1μA,遠低于微控制器(μC)工作電流(約100μA)。
- 集成接口:內置IIC從機接口,待機模式也能全速工作。
- 封裝小成本低:提供小尺寸封裝如3mm x 3mm QFN,且只需為使用的功能付費。
- 開發便捷:無需編寫額外代碼、文檔和維護,可預先確定響應時間,還能實現靈活的燈光控制,布線簡單,僅需2條線組成IIC總線或3條組成SPI總線 。
常見應用場景
- 簡單設備控制:控制LED燈亮滅、蜂鳴器發聲、繼電器開關等。
- 輸入信號讀取:讀取按鍵狀態、檢測外部開關狀態;連接傳感器(如溫度、濕度傳感器)讀取數據;用于觸摸屏輸入,檢測觸摸操作和獲取坐標 。
- 通信接口:復用為串行通信接口(如SPI、I2C、UART)、定時器輸入/輸出等 。
- 電機驅動:控制電機正反轉、速度等 。
SPI
SPI(Serial Peripheral Interface,串行外設接口)的知識點主要有以下這些:
基本概念
- 定義:SPI 是一種高速、全雙工、同步的通信總線,由摩托羅拉首先在其處理器上定義。采用主從模式工作,通常一個主設備可與一個或多個從設備通信。
- 應用場景:常用于芯片間的數據傳輸,廣泛應用于EEPROM、FLASH、實時時鐘、AD轉換器、數字信號處理器和數字信號解碼器等設備之間 。
物理連接
SPI接口一般使用4條線進行通信:
- SCLK(Serial Clock,串行時鐘線) :由主設備產生,用于同步主從設備間的數據傳輸,控制數據交換的時機和速率。
- MOSI(Master Output Slave Input,主出從入數據線) :主設備通過這條線向從設備發送數據。
- MISO(Master Input Slave Output,主入從出數據線) :從設備通過該線向主設備發送數據。
- SS/CS(Slave Select/Chip select,從機選擇線/片選線) :由主設備控制,低電平有效。當某從設備的SS線被拉低時,主設備才能與該從設備進行通信,可允許多個從設備連接到同一SPI總線上 。
通信協議
- 數據傳輸 :SPI以串行方式一位一位傳輸數據,在時鐘信號SCLK的作用下,主從設備的移位寄存器進行數據交換。主設備發起讀寫操作,且在每個時鐘周期,主從設備都會同時發送和接收一位數據,完成一次數據交換。若只需寫操作,主機忽略接收的數據;若要讀數據,主機需發送一個空字節來觸發從機傳輸 。
- 傳輸模式:根據時鐘極性(CPOL)和時鐘相位(CPHA)的不同組合,SPI有4種傳輸模式:
- 模式0:CPOL = 0(時鐘空閑時為低電平),CPHA = 0(在時鐘的第一個上升沿采樣數據,下降沿切換數據)。
- 模式1:CPOL = 0,CPHA = 1(在時鐘的第一個下降沿采樣數據,上升沿切換數據) 。
- 模式2:CPOL = 1(時鐘空閑時為高電平),CPHA = 0(在時鐘的第一個下降沿采樣數據,上升沿切換數據) 。
- 模式3:CPOL = 1,CPHA = 1(在時鐘的第一個上升沿采樣數據,下降沿切換數據) 。
主從設備必須工作在相同模式下才能正常通信。
- 傳輸速率:沒有固定的傳輸速率限制,可自定義,一般在400KHz - 10MHz,實際速率受硬件特性和應用場景制約 。
工作原理
主設備和從設備內部都有串行移位寄存器。通信時,主設備先拉低對應從設備的SS線,選中該從設備,然后通過SCLK發送時鐘信號,同時將要發送的數據寫入發送數據緩存區,經移位寄存器從MOSI逐位發送給從設備;從設備在SCLK作用下,將自身移位寄存器中的數據從MISO返回給主設備,并通過MOSI接收主設備發送的數據,從而實現數據交換 。
優缺點
- 優點:
- 高速高效:全雙工同步通信,能實現高速數據傳輸,數據傳輸效率高。
- 硬件簡單:只需4根線,節省芯片引腳和PCB布局空間,硬件設計簡單。
- 易于擴展:支持一主多從拓撲結構,主設備可方便地與多個從設備通信 。
- 缺點:
- 缺乏流控和應答:沒有指定的流控制機制,也無應答機制確認數據是否被接收,需在應用層自行處理相關問題 。
- 從設備選擇復雜:多個從設備時,每個從設備需獨立片選信號,硬件復雜度比I2C等總線高 。
- 無統一標準:未規定電氣特性、最大傳輸速率、地址方案等,不同設備的SPI接口可能存在差異 。
軟件編程要點
編程時需初始化SPI相關寄存器,配置工作模式(主/從模式)、傳輸模式(上述4種模式之一)、時鐘頻率等參數;數據發送和接收操作通常通過讀寫SPI數據寄存器實現 。 此外,若使用GPIO模擬SPI通信,需按照SPI的時序要求,手動控制GPIO引腳的電平變化來模擬時鐘信號和數據傳輸 。
I2C
I2C(Inter - Integrated Circuit)即集成電路總線,是一種串行通信協議,由飛利浦公司在1980年代初開發。以下是關于它的詳細知識點:
基礎概念
- 定義:I2C是一種同步、半雙工、多主多從的串行通信總線,用于連接微控制器和外圍設備,能在不同集成電路之間實現高效、可靠的數據傳輸。
- 應用場景:廣泛應用于傳感器(如溫度傳感器、加速度計)、EEPROM、實時時鐘(RTC)、LCD驅動器等設備與主控芯片之間的通信。
物理連接
- 信號線:I2C總線僅需兩根信號線,即串行數據線(SDA)和串行時鐘線(SCL)。所有連接到總線上的設備都通過這兩根線進行通信。
- 上拉電阻:SDA和SCL線上通常需要接上拉電阻到電源,以確保在空閑狀態下兩條線都保持高電平。當有設備驅動它們為低電平時,才能實現數據的傳輸。
通信協議
- 數據傳輸:數據以字節為單位進行傳輸,每個字節后面都跟隨一個應答位(ACK)。發送方在發送完一個字節后,會釋放SDA線,等待接收方拉低SDA線以表示成功接收該字節。
- 起始和停止條件:
- 起始條件:當SCL線為高電平時,SDA線由高電平變為低電平,表示數據傳輸的開始。
- 停止條件:當SCL線為高電平時,SDA線由低電平變為高電平,表示數據傳輸的結束。
- 數據有效性:在SCL線為高電平期間,SDA線上的數據必須保持穩定,此時數據有效;只有在SCL線為低電平時,SDA線上的數據才允許改變。
- 地址和讀寫位:通信開始時,主設備會發送一個7位或10位的從設備地址,后面跟隨一個讀寫位(0表示寫操作,1表示讀操作)。總線上的所有從設備都會接收這個地址,并與自己的地址進行比較,如果匹配則響應主設備。
工作模式
- 主發送模式:主設備向從設備發送數據。主設備發起起始條件,發送從設備地址和寫位,然后依次發送數據字節,每發送一個字節等待從設備的應答。最后,主設備發送停止條件結束通信。
- 主接收模式:主設備從從設備接收數據。主設備發起起始條件,發送從設備地址和讀位,從設備應答后開始發送數據字節,主設備每接收一個字節需要發送一個應答位。當主設備不想再接收數據時,發送一個非應答位(NACK),然后發送停止條件結束通信。
- 從發送模式:從設備在接收到主設備的讀請求后,向主設備發送數據。
- 從接收模式:從設備接收主設備發送的數據。
通信速率
- 標準模式:最高通信速率為100kbps。
- 快速模式:最高通信速率可達400kbps。
- 快速模式+:最高通信速率為1Mbps。
- 高速模式:最高通信速率可達3.4Mbps。
優缺點
- 優點:
- 引腳少:僅需兩根信號線,大大節省了微控制器的引腳資源。
- 多主多從:支持多個主設備和多個從設備同時連接到總線上,方便構建復雜的系統。
- 簡單易用:通信協議相對簡單,硬件實現成本低。
- 缺點:
- 傳輸速率有限:雖然有多種速率模式可供選擇,但相比一些高速總線(如SPI),其傳輸速率仍然較低。
- 傳輸距離短:由于信號線上存在上拉電阻和分布電容等因素,導致傳輸距離受到一定限制。
- 數據傳輸量小:每次傳輸的數據量通常較小,不適用于大數據量的快速傳輸。
軟件編程要點
- 初始化:配置微控制器的I2C接口,設置通信速率、工作模式等參數。
- 起始和停止條件的生成:通過控制SDA和SCL線的電平變化,生成起始和停止條件。
- 數據發送和接收:按照I2C協議的規定,發送和接收數據字節,并處理應答位。
- 錯誤處理:處理可能出現的錯誤情況,如應答失敗、超時等。