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

原來ESP32竟可《一“芯”兩用》既做人體檢測(cè)傳感器也做Wi-Fi數(shù)據(jù)傳輸

ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書
esp32上使用chatGPT做一些有意思的事情
ESP32 微控制器系列指南

簡述三種esp32的開發(fā)方式是什么
esp32和esp8266代碼共用嗎
esp8266和esp32區(qū)別是什么
esp32用什么軟件編程
ESP32-WROOM-32E、ESP32-WROOM-32D、ESP32-WROOM-32U 有什么區(qū)別?ESP32-WROOM-32 后綴字母代表的意思是?

ESP32能取代STM32嗎?哪個(gè)更好?

評(píng)論