ESP32 在 IDF 內加入了 ADC(模擬數碼轉換器 / Analog to Digital Converter) / DAC(數碼模擬轉換器 / Digital to Analog Converter) API 函數模塊和範例程式,ESP32 集成了兩個 12位 SAR(逐次逼近寄存器 / Successive Approximation Register)ADC,支持總共 18個測量通道(模擬使能引腳)。ADC 驅動程序 API 支持 ADC1(8個通道,連接到 GPIO 32-39)和 ADC2(10個通道,連接到 GPIO 0、2、4、12-15 和 25-27)。
ESP32 SOC 內部框圖 |
- 採用 2 個 SAR ADC,可支援同時採樣與轉換
- 採用 5 個專用 ADC 控制器,可支援不同應用場景(比如,高性能、低功耗,或功率檢測和峰值檢測)
- 支援 18 個模擬輸入管腳
- 1 個內部電壓 vdd33 通道、2 個 pa_pkdet 通道(部分控制器支援)
- 可配置 12 位元、11 位、10 位、9 位多種解析度
- 支援 DMA(1 個控制器支援)
- 支援多通道掃描模式(2 個控制器支援)
- 支援 Deep-sleep 模式運行(1 個控制器支援)
- 支援 ULP 輔助處理器控制(2 個控制器支援)
ESP32 SAR ADC 的功能概況 |
以下官方開發套件就是這種情況:
ESP32 DevKitC:由於外部自動編程電路,GPIO 0 無法使用。
ESP-WROVER-KIT:由於外部連接用於不同目的,GPIO 0、2、4 和 15 無法使用。
配置和讀取 ADC:
在讀取之前應配置 ADC。
對於 ADC1,通過調用函數 adc1_config_width()和 adc1_config_channel_atten()來配置所需的精度和衰減。
對於 ADC2,通過 adc2_config_channel_atten()配置衰減。 每次讀取時都會配置 ADC2 的讀取寬度。
每個通道完成衰減配置,請參見 adc1_channel_t 和 adc2_channel_t,設置為上述功能的參數。
然後可以使用 adc1_get_raw()和 adc2_get_raw()讀取 ADC 轉換結果。 應將 ADC2 的讀取寬度設置為 adc2_get_raw()的參數,而不是配置函數中的參數。
注意:
由於 ADC2 與具有更高優先級的 WIFI 模塊共享,因此在 esp_wifi_start()和 esp_wifi_stop()之間,adc2_get_raw()的讀取操作將失敗。 使用返回代碼查看讀數是否成功。
也可以通過調用專用功能 hall_sensor_read()通過 ADC1 讀取內部霍爾效應傳感器。 請注意,即使霍爾傳感器在 ESP32 內部,讀取它也使用 ADC1 的通道 0 和 3(GPIO 36和39)。 請勿將其他任何東西連接到這些引腳,也不要更改其配置。 否則可能會影響傳感器的低值信號的測量。
此 API 提供了配置 ADC1 以便從 ULP 讀取的便捷方法。 為此,請調用函數 adc1_ulp_enable(),然後如上所述設置精度和衰減。
還有另一個特定功能 adc2_vref_to_gpio()用於將內部參考電壓路由到 GPIO 引腳。 它可以方便地校準 ADC 讀數,這將在最小化噪聲部分中討論。
相關網址:
※ DIY - ESP32:ESP32 ADC / DAC 模擬數碼轉換器電路 (四十四)
※ DIY - ESP32:ESP32 ADC / DAC 模擬數碼轉換器程式 (四十五)
※ DIY - ESP32:ESP32 ADC 模擬數碼轉換器 API 函數(四十六)
※ DIY - ESP32:ESP32 ADC 模擬數碼轉換器 API 函數巨集及其它(四十七)
※ DIY - ESP32:ESP32 DAC 數位類比轉換器 API 函數(四十八)
※ DIY - ESP32:ESP32 DAC 數位類比轉換器 API 函數巨集及其它(四十九)
※ DIY - ESP32:ESP32 ADC 類比數位轉換器測試(五十)
※ DIY - ESP32:ESP32 ADC DVM 數字電壓錶電路(五十一)
※ DIY - ESP32:ESP32 ADC DVM 數字電壓錶程式 (五十二)
2018年 12月 3日 天氣報告
氣溫:22.5度 @ 21:10
相對濕度:百分之 80%
天氣:大致多雲
沒有留言:
張貼留言