進階篇
接續(xù)如何快速從Arduino過渡到ESP32的新手指南-基礎(chǔ)篇,繼續(xù)了解ESP32的各種引腳接口吧!
內(nèi)容介紹
1.SPI引腳
2.I2C引腳
3.UART引腳
4.RTC引腳
5.Strapping引腳
6.EN引腳
SPI引腳
引腳名稱 | 對應(yīng)腳位 |
VSPI_MOSI | 23 |
VSPI_MISO | 19 |
VSPI_CLK | 18 |
VSPI_CS | 5 |
HSPI_MOSI | 13 |
HSPI_MISO | 12 |
HSPI_CLK | 14 |
HSPI_CS | 15 |
CS | 2 |
SPI是什么
SPI(串行外設(shè)接口)是一種用于設(shè)備之間連接的技術(shù)。通過SPI,ESP32可以與其他同樣使用SPI連接的傳感器相互傳輸數(shù)據(jù)。
SPI的傳輸采用同步的時間線,也稱為共享時鐘信號,這有助于確保傳輸?shù)臄?shù)據(jù)準確一致。
SPI主要應(yīng)用于需要短距離、高速串行通信的場景,例如需要快速同步數(shù)據(jù)的顯示屏、SD卡讀取器、加速度傳感器等。
可以將SPI想象成一種精密的對話方式,其中主設(shè)備(ESP32)和 從設(shè)備(傳感器、顯示屏等)在共同的時鐘引導下,按照特定的規(guī)則交流信息。
在SPI通信中,通常有四個信號線:
1. MOSI(Master Out Slave In):主設(shè)備向從設(shè)備發(fā)送數(shù)據(jù)的線路。
2. MISO(Master In Slave Out):從設(shè)備向主設(shè)備發(fā)送數(shù)據(jù)的線路。
3. SCLK(Serial Clock):時鐘信號,用于同步主設(shè)備和從設(shè)備之間的數(shù)據(jù)傳輸。
4. SS/CS(Slave Select/Chip Select):選擇從設(shè)備的線路,用于告訴從設(shè)備何時準備好接收或發(fā)送數(shù)據(jù)。
SPI使用注意
避免沖突
當我們涉及到使用引腳時,尤其是在處理不是SPI接口的設(shè)備時,建議盡量避免直接使用SPI接口。這主要是因為在引入庫的過程中,通常會默認使用SPI接口的一些關(guān)鍵引腳,比如SCLK、MOSI、MISO,這些引腳通常會被預(yù)設(shè)為SPI功能,可能導致沖突。
可自定義SPI引腳
在ESP32中,你可以通過代碼調(diào)整SPI接口的配置,包括更改SCLK、MOSI、MISO等引腳。這為你提供了更大的靈活性,以適應(yīng)不同的硬件連接需求。
可共用引腳
如果你需要同時連接多個SPI接口的設(shè)備,可以共用SCLK、MOSI、MISO這些引腳,然后通過單獨的CS引腳來區(qū)分不同的設(shè)備。
VSPI和HSPI的選擇
在ESP32中,VSPI和HSPI是兩個可用的SPI接口,它們的功能是相同的。一些庫可能默認使用其中一個,多數(shù)是VSPI。
I2C引腳
I2C是什么
I2C(Inter-Integrated Circuit)與SPI類似,也用于跟各種設(shè)備進行溝通。
設(shè)備彼此溝通的規(guī)則,我們通常會稱呼為串行通信協(xié)議。
I2C使用注意
I2C引腳
I2C只需要兩個引腳,不管連接幾個I2C設(shè)備都是使用SDA和SCL。這使得它在連接多個設(shè)備時非常方便,因為它占用的引腳相對較少。
I2C 與 SPI 的 SDA 不一樣
? SPI的SDA:在SPI通信中,SDA通常指的是MOSI(Master Out Slave In),全稱是"Master Out Slave In",表示主設(shè)備輸出數(shù)據(jù)給從設(shè)備。
? I2C的SDA:在I2C通信中,SDA表示Serial Data Line,全稱是"Serial Data Line",表示是用于雙向傳輸數(shù)據(jù)的串行數(shù)據(jù)線。
I2C 與 SPI 的 SCL 不一樣
? SPI的SCL:在SPI通信中,時鐘線通常稱為SCLK(Serial Clock),全稱是"Serial Clock"。SCLK用于同步數(shù)據(jù)的傳輸,主設(shè)備通過SCLK向從設(shè)備發(fā)送時鐘脈沖,以確保數(shù)據(jù)的有效傳輸。
? I2C的SCL:在I2C通信中,SCL表示Serial Clock Line,全稱是"Serial Clock Line"。I2C總線上的SCL同樣用于同步數(shù)據(jù)傳輸,主設(shè)備通過SCL向從設(shè)備發(fā)送時鐘信號。
如果一個設(shè)備使用I2C協(xié)議進行通信,那么它的SCL和SDA線就應(yīng)該連接到I2C總線上。同樣,如果一個設(shè)備使用SPI協(xié)議進行通信,那么它的SCLK、MISO、MOSI等線就應(yīng)該連接到SPI總線上。這兩者的線不能直接互連,否則通信將無法正常進行。
UART引腳
UART是什么
UART代表通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter)。與SPI、I2C一樣,是一種串行通信協(xié)議。
然而,與它們不同的是,UART沒有共享的時鐘信號。在UART通信中,發(fā)送和接收設(shè)備之間通過起始位、數(shù)據(jù)位、校驗位和停止位來協(xié)調(diào)數(shù)據(jù)的傳輸。
可以理解為,
? UART:通過相對的時間來同步信息
? SPI、I2C:通過絕對的時鐘信號來確保通信的同步。
在UART中,設(shè)備之間通過約定好的位序列來解釋和同步數(shù)據(jù)。這種異步的方式使得UART更加靈活,適用于一些不需要嚴格時鐘同步的場景。
UART使用注意
簡單來說,只用UART2,UART0不能用
UART0
與USB連接,通常用于燒錄(flashing)和調(diào)試。
UART2
UART2可以連接到外部設(shè)備,如GPS、指紋傳感器、距離傳感器等,而不會影響燒錄和調(diào)試功能。
RTC引腳
RTC是什么
當我們使用 RTC(Real-Time Clock,實時時鐘)時,它實際上是一個獨立的時鐘系統(tǒng)。無論主電源是否關(guān)閉,RTC 都能夠持續(xù)供電,確保設(shè)備能夠在斷電狀態(tài)下仍然維持準確的時間。
在ESP32,我們通過RTC來喚醒待機狀態(tài)的設(shè)備來達到省電的功能。
在ESP32等設(shè)備上,利用RTC來喚醒待機狀態(tài)是一種常見的省電策略。待機狀態(tài)(或深度睡眠)是一種極低功耗的模式,其中主處理器被關(guān)閉,但RTC仍在運行,以確保設(shè)備能夠在預(yù)定的時間喚醒。這對于周期性地執(zhí)行任務(wù)、定時采集數(shù)據(jù)或在特定事件發(fā)生時喚醒設(shè)備都是非常有用的。
一些常見的應(yīng)用場景包括:
?定時喚醒:在預(yù)定的時間喚醒設(shè)備以執(zhí)行特定的任務(wù),例如數(shù)據(jù)采集、通信等。
?事件觸發(fā)喚醒:當某些特定事件發(fā)生時,通過RTC喚醒設(shè)備,以便立即響應(yīng)該事件。
?電池供電設(shè)備的省電模式:在電池供電的設(shè)備中,RTC的使用可以幫助最小化功耗,延長電池壽命。
Strapping 引腳
在ESP32中,存在兩種重要的模式,分別是BOOT模式和FLASH模式。BOOT模式用于運行ESP32上的程序,而FLASH模式用于上傳程序到ESP32。Strapping pins(引腳配置開關(guān))用于配置ESP32的工作模式。通常情況下,帶有內(nèi)置USB/Serial的開發(fā)板會自動將這些引腳配置到正確的狀態(tài),以支持燒錄或啟動。然而,如果其他設(shè)備使用這些引腳,可能會導致ESP32進入錯誤的模式。
具體而言,Strapping pins是一組用于配置啟動模式的引腳。在帶有內(nèi)置USB/Serial的開發(fā)板上,系統(tǒng)會根據(jù)需要自動配置這些引腳。但是,當其他設(shè)備使用相同的引腳時,可能會影響ESP32的啟動模式,因此在設(shè)計硬件連接時需要特別注意。
EN引腳
對于ESP32,EN(Enable)引腳是用于控制芯片的啟用和禁用的關(guān)鍵引腳。以下是關(guān)于EN引腳的一些基本信息:
?默認狀態(tài):EN引腳默認是拉高的(pulled high),表示芯片處于啟用狀態(tài)。當EN引腳被拉高時,ESP32可以正常運行。
?拉低禁用:當EN引腳被拉低時,芯片被禁用,即停止工作。拉低EN引腳通常會導致芯片斷電或進入低功耗模式,具體取決于系統(tǒng)的設(shè)計。
?復(fù)位功能:EN引腳還連接到一個按鈕開關(guān),通過按下按鈕將EN引腳拉低,可以觸發(fā)芯片的復(fù)位(reset)操作。這個按鈕提供了一種手動重置芯片的方式。
拉高:給引腳高電位,拉低:給引腳低電位
總體而言,EN引腳提供了對ESP32芯片的啟用和禁用控制,同時允許通過按鈕觸發(fā)復(fù)位。這是在開發(fā)和測試過程中非常有用的功能,因為它允許用戶手動重置芯片,或者在需要時禁用芯片以減小功耗。
錯誤更正說明
ESP32 WROOM-32上傳選擇
當使用Arduino IDE上傳程序到ESP32開發(fā)板時,對于常見的ESP32開發(fā)板,例如ESP32 WROOM-32,你可以在Arduino IDE中選擇"ESP32 Dev Module"進行上傳。這個開發(fā)板型通常是Arduino IDE默認支持的。
在先前的文章中使用的"ESP32 WROOM DA"選項是針對另一種ESP32模塊的開發(fā)板。
雖然使用"ESP32 WROOM-32"開發(fā)板也能成功選擇"ESP32 WROOM DA"上傳,這可能是因為在Arduino IDE的"esp32"支持包中,"ESP32 WROOM-32"也有相應(yīng)的支持。
因此,最終建議在使用ESP32 WROOM-32開發(fā)板時,選擇"ESP32 Dev Module",以確保在Arduino IDE中有更全面的支持和兼容性。這樣能夠更方便地進行開發(fā)和調(diào)試,確保代碼能夠正確地燒錄到ESP32開發(fā)板上。
后續(xù)我會繼續(xù)分享零基礎(chǔ)入門ESP32的教學文章,
也歡迎關(guān)注我的視頻號與B站:伊娃老師來了。
審核編輯 黃宇
-
接口
+關(guān)注
關(guān)注
33文章
8611瀏覽量
151251 -
Arduino
+關(guān)注
關(guān)注
188文章
6470瀏覽量
187180 -
ESP32
+關(guān)注
關(guān)注
18文章
971瀏覽量
17302
發(fā)布評論請先 登錄
相關(guān)推薦
評論