mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-09-01 02:09:06 +00:00
machine/esp32: add ADC driver (#5595)
* machine/esp32: add ADC driver Implements ADC1 on the Xtensa ESP32: InitADC, Configure and Get for GPIO36, GPIO37, GPIO38, GPIO39, GPIO32, GPIO33, GPIO34 and GPIO35 (channels 0-7). The ADC pins are not contiguous on this chip, so the pin to channel mapping is a lookup rather than arithmetic as on the ESP32-S3. Conversions are driven by the RTC controller under software control, and Get returns the 12-bit sample scaled to 0..65520 to match the other ESP ADC drivers. The analog pads are spread over three unrelated RTC_IO registers (SENSOR_PADS, XTAL_32K_PAD and ADC_PAD), so pad setup is kept local to this file rather than adding a PinAnalog mode to machine_esp32.go. That keeps the change to a single file. Values are raw and uncalibrated. Unlike the ESP32-C3, S3 and C6 drivers there is no eFuse or self-calibration step; accurate voltage mapping should be done with a two-point calibration in user code. ADC2 is not implemented. On the ESP32 it is shared with the Wi-Fi radio and cannot be used reliably while the radio is active. Tested on an ESP32 Coreboard V2 with a photoresistor divider on GPIO36. Readings swept 5056..59824 over the light range, all eight channels returned independent values, and an invalid pin returned an error from Configure and 0 from Get. Signed-off-by: zombieleet <osikwemhev@gmail.com> * fix: use package level err definiition and return (uint32, bool) from adcRTCGPIO --------- Signed-off-by: zombieleet <osikwemhev@gmail.com>
This commit is contained in:
@@ -989,6 +989,8 @@ endif
|
||||
ifneq ($(XTENSA), 0)
|
||||
$(TINYGO) build -size short -o test.bin -target=esp32-generic examples/machinetest
|
||||
@$(MD5SUM) test.bin
|
||||
$(TINYGO) build -size short -o test.bin -target=esp32-coreboard-v2 examples/adc
|
||||
@$(MD5SUM) test.bin
|
||||
$(TINYGO) build -size short -o test.bin -target=esp32c3-generic examples/machinetest
|
||||
@$(MD5SUM) test.bin
|
||||
$(TINYGO) build -size short -o test.bin -target=esp32s3-generic examples/machinetest
|
||||
|
||||
Reference in New Issue
Block a user