Esp32系列資料
esp32芯片型號
[參考資料](esp32和stm32性能哪個好 - 雲+社區 - 騰訊雲 (tencent.com))
rom和flash
狹義的EEPROM:
這種rom的特點是可以隨機訪問和修改任何一個字節,可以往每個bit中寫入0或者1。這是最傳統的一種EEPROM,掉電后數據不丟失,可以保存100年,可以擦寫100w次。具有較高的可靠性,但是電路復雜/成本也高。因此目前的EEPROM都是幾十千字節到幾百千字節的,絕少有超過512K的。
flash:
flash屬於廣義的EEPROM,因為它也是電擦除的rom。但是為了區別於一般的按字節為單位的擦寫的EEPROM,我們都叫它flash。
flash做的改進就是擦除時不再以字節為單位,而是以塊為單位,一次簡化了電路,數據密度更高,降低了成本。上M的rom一般都是flash。
esp32模塊外置了4Mflash芯片。
ch340和cp2102
- Ch340、cp2102都是將USB信號轉TTL的芯片
- CP2102工業上用的比較多些。 CH340消費電子比較常用。 兩者都差不多。 CH340芯片價格便宜,帶USB轉TTL、232串口電平,也可以實現TTL和232電平的轉化,而CP2102不帶232電平轉化,相對而言就不如CH340好用了。
- 一般待cp2102芯片的單片機比CH340的單片機貴10~20元。
計算機和MCU通信的方法:
- 只有串口接口的台式機(很老)
交叉串口線>>>MAX232芯片>>>MCU(單片機) - 既有串口接口又有USB接口的電腦(台式機)
(1)電腦串口接口>>>交叉串口線>>>MAX232芯片>>>MCU(單片機)
(2)電腦USB接口>>>USB轉串口線>>>MAX232芯片>>>MCU(單片機)
(3)電腦USB接口>>>USB2.0數據線>>>PL2303或CH340>>>MCU(單片機) - 只有USB接口的電腦(筆記本)
(1)電腦USB接口>>>USB轉串口線>>>MAX232芯片>>>MCU(單片機)
(2)電腦USB接口>>>USB2.0數據線>>>PL2303或CH340>>>MCU(單片機)
計算機和MCU通信的原理:
(1)交叉串口線原理:信號線交叉,導線作用
(2)USB轉串口線原理:USB接口>>>PL2303或CH340>>>MAX232>>>9針接口
(3)USB2.0數據線原理:信號線直連,導線作用
[參考資料]((132條消息) MAX232和PL2303、CH340的區別_hailongwang2412的博客-CSDN博客_pl2303和ch340的區別)
esp32的引腳參考和引腳接口功能介紹
引腳參考
ESP32外圍設備
ESP32外圍設備包括:[參考](ESP32引腳參考 - lnsane-G - 博客園 (cnblogs.com))
-
18個模數轉換器(ADC)通道
-
3個SPI接口
-
3個UART接口
-
2個I2C接口
-
16個脈沖寬度調制輸出通道
-
2個數模轉換器(DAC)
-
2個I2S接口
-
10個電容傳感GPIO
下表顯示了哪些管腳最適合用作輸入和輸出,哪些管腳需要小心。綠色突出顯示的管腳可以使用。黃色突出顯示的可以使用,但您需要注意,因為它們可能在啟動時有意外行為。不建議將紅色突出顯示的管腳用作輸入或輸出。
[參考網址](ESP32引腳參考 - lnsane-G - 博客園 (cnblogs.com))
接口總線的功能介紹:
ADC:(analog digital converter),AD轉換,模數轉換(也就是模擬轉數字):
ESP32有18 x 12位ADC輸入通道(而ESP8266只有1 x 10位ADC)。這些是可用作ADC和相應通道的GPIO:
ADC1_CH0 (GPIO 36)
ADC1_CH1 (GPIO 37)
ADC1_CH2 (GPIO 38)
ADC1_CH3 (GPIO 39)
ADC1_CH4 (GPIO 32)
ADC1_CH5 (GPIO 33)
ADC1_CH6 (GPIO 34)
ADC1_CH7 (GPIO 35)
ADC2_CH0 (GPIO 4)
ADC2_CH1 (GPIO 0)
ADC2_CH2 (GPIO 2)
ADC2_CH3 (GPIO 15)
ADC2_CH4 (GPIO 13)
ADC2_CH5 (GPIO 12)
ADC2_CH6 (GPIO 14)
ADC2_CH7 (GPIO 27)
ADC2_CH8 (GPIO 25)
ADC2_CH9 (GPIO 26)
注意:使用Wi-Fi時不能使用ADC2管腳。因此,如果您使用Wi-Fi,並且無法從ADC2 GPIO獲取值,則可以考慮改用ADC1 GPIO,這應該可以解決您的問題。
ADC輸入通道具有12位分辨率。這意味着您可以獲得0到4095之間的模擬讀數,其中0對應於0V,4095對應於3.3V。您還可以在代碼上設置通道的分辨率以及ADC范圍。
ESP32 ADC引腳沒有線性行為。您可能無法區分0和0.1V,或3.2和3.3V。在使用ADC引腳時,您需要記住這一點。
數模轉換器(DAC)
ESP32上有2 x 8位DAC通道,用於將數字信號轉換為模擬電壓信號輸出。這些是DAC通道:
DAC1 (GPIO25)
DAC2 (GPIO26)
SPI接口是什么:[參考]((131條消息) SPI接口掃盲 SPI定義/SPI時序(CPHA CPOL)_douqingl的博客-CSDN博客_spi接口)
SPI ( Serial Peripheral Interface,串行外設接口)是一種同步、串行通訊接口規格,常用於短距離通訊,主要是在嵌入式系統中。
SPI接口是一種典型的全雙工接口,通過同步時鍾SCLK的脈沖將數據一位位地傳送。所以在開始通訊前,master首先要配置接口時鍾(確定其通訊頻率是SLAVE可以支持的,通常為數兆赫茲)。
當MASTER片選一個SLAVE時,每向SLAVE發送一個周期的SCLK信號,都會有1bit的數據從MOSI發送至slave,與此同時,slave每收到一個周期的SCLK信號,都會從MISO向master發送1bit的數據。這種全雙工通訊,是由硬件保證的(MASTER與HOST中各有一個移位寄存器作為收發數據的緩存)。
UART接口 :[參考]((131條消息) UART接口簡介_ztnhnr的博客-CSDN博客_uart接口)
UART有4個pin(VCC, GND, RX, TX), 用的TTL電平, 低電平為0(0V),高電平為1(3.3V或以上)。
UART即通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),它是一種串行通信的物理接口形式。它將要傳輸的資料在串行通信與並行通信之間加以轉換。作為把並行輸入信號轉成串行輸出信號的芯片,UART通常被集成於其他通訊接口的連結上。
- VCC:供電pin,一般是3.3v,在我們的板子上沒有過電保護,這個pin一般不接更安全
- GND:接地pin,有的時候rx接受數據有問題,就要接上這個pin,一般也可不接
- RX:接收數據pin
- TX:發送數據pin
UART最好的一點是它只使用兩根線就可以在設備之間傳輸數據。在UART通信中,兩個UART直接相互通信。發送UART將來自CPU等控制設備的並行數據轉換為串行形式,並將其串行發送到接收UART,接收UART然后將串行數據轉換回接收設備的並行數據。在兩個UART之間傳輸數據只需要兩根線。數據從發送UART的Tx引腳流向接收UART的Rx引腳:
uart | tx | rx |
---|---|---|
0 | GPIO1 | GPIO17 |
2 | GPIO3 | GPIO16 |
I2C接口 [參考]((131條消息) I2C接口簡介和時序_re_call的博客-CSDN博客_iic接口時序)
I2C,Inter-Integrated Circuit,是兩根線,SDA(數據)和SCL(時鍾),也是一種同步傳輸協議。主機在發送開始信號之后,先發送7個比特的地址位和1個比特的讀寫位,每個從機有自己的I2C地址,當發現該條指令是發給自己的時候,拉低SDA線(即回復ACK信號),然后主機發送或接收數據,完成傳輸。傳輸完成之后,主機發送停止位,完成該次傳輸。
ESP32有兩個I2C通道,任何管腳都可以設置為SDA或SCL。將ESP32與Arduino IDE一起使用時,默認I2C引腳為:
GPIO 21(SDA)
GPIO 22(SCL)
如果要使用其他管腳,在使用導線庫時,只需調用:
Wire.begin(SDA, SCL);
脈沖寬度調制(PWM)
ESP32 LED PWM控制器有16個獨立通道,可以配置為生成具有不同特性的PWM信號。所有可以作為輸出的管腳都可以用作PWM管腳(GPIOs 34到39不能產生PWM)。
要設置脈沖寬度調制信號,需要在代碼中定義這些參數:
-
信號頻率:單位(Hz),led的頻率和電機的頻率相差很大
-
占空比:輸出時一個周期內低壓所占比例(esp32是12位數字模擬0~2^12)
-
脈寬調制通道: ESP32 的 LEDC 總共有16個路通道(0 ~ 15),分為高低速兩組,高速通道(0 ~ 7)由80MHz時鍾驅動,低速通道(8 ~ 15)由 1MHz 時鍾驅動。
-
要輸出信號的GPIO:接口
I2S接口介紹 [參考]((131條消息) I2S接口介紹_weixin_33801856的博客-CSDN博客)
I2S協議作為音頻數據傳輸協議,由Philips制定。該協議由三條數據線組成:
1、SCLK:串行時鍾,頻率= 2 * 采樣頻率 * 采樣位數。
2、WS:字段(聲道)選擇,用來切換左右聲道數據。WS = 采樣頻率(fs)。
a、1(左聲道)
b、0(右聲道)
3、SD:串行數據(二進制補碼)(MSB--->LSB:數據由最高位到最低位依次傳輸)
電容式觸摸接口
ESP32有10個內部電容式觸摸傳感器。它們能感應到任何帶電物質的變化,比如人類皮膚。因此,他們可以檢測到當用手指觸摸gpio時引起的變化。這些引腳可以很容易地集成到電容墊,並取代機械按鈕。電容式觸針也可以用來喚醒ESP32的深度睡眠。
這些內部觸摸傳感器連接到這些GPIO:
T0 (GPIO 4)
T1 (GPIO 0)
T2 (GPIO 2)
T3 (GPIO 15)
T4 (GPIO 13)
T5 (GPIO 12)
T6 (GPIO 14)
T7 (GPIO 27)
T8 (GPIO 33)
T9 (GPIO 32)
使用esp32引腳時應注意:
Strapping pins
ESP32芯片具有以下Strapping pins:
GPIO 0
GPIO 2
GPIO 4
GPIO 5(啟動期間必須為高)
GPIO 12(啟動期間必須低)
GPIO 15(啟動期間必須為高)
這些用於將ESP32置於引導加載程序或燒錄模式。在大多數內置USB/Serial的開發板上,您不需要擔心這些管腳的狀態。電路板使引腳處於正確的燒錄或啟動模式。有關ESP32引導模式選擇的更多信息,請參見此處。
但是,如果你有外設連接到這些引腳,你可能會有困難,試圖上傳新的代碼,用新固件燒錄ESP32或重置板。如果您有一些外設連接到Strapping pins,並且您在上載代碼或燒錄ESP32時遇到問題,可能是因為這些外設阻止ESP32進入正確的模式。請閱讀引導模式選擇文檔以指導您朝正確的方向前進。復位、燒錄或啟動后,這些引腳按預期工作。
Pins HIGH at Boot
一些GPIO在啟動或重置時將其狀態更改為高或輸出PWM信號。這意味着,如果輸出連接到這些gpio,則在ESP32重置或引導時可能會得到意外的結果。
GPIO 1
GPIO 3
GPIO 5
GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).
GPIO 14
GPIO 15