请问可以提供2M sps 速率运行的内置ADC的例子吗?
-
- Posts: 17
- Joined: Wed Jul 25, 2018 8:11 am
请问可以提供2M sps 速率运行的内置ADC的例子吗?
Datasheet中提到,内置ADC最高的采样速率为2Msps(通过dig控制器),但我无论如何也无法达到这个速率。将配置修改超过1M将导致一系列问题,包括
dma输出全0
ADC采样结果为0,但dma的数据中,指示通道的位非全0(是正常的)
dma输出数据顺序与配置表(如SYSCON.saradc_sar1_patt_tab)中配置的不一致(但配置的每个通道都被采集了)
一段时间内,个别通道的采样次数样式表中的次数(相对于其它通道)多一倍(例如样式表配置0123456701234567按顺序采样16次(与采样位数无关),结果一段时间内,某些通道(例如1通道)的采样次数比其它通道的次数多一倍,其它通道的次数都差不多。)
等问题(详情可以参考
viewtopic.php?t=6537 )
所以希望乐鑫可以提供一个,能够实现ESP32 Datasheet中提到的,ADC最大以2M sps 采样的例子。
dma输出全0
ADC采样结果为0,但dma的数据中,指示通道的位非全0(是正常的)
dma输出数据顺序与配置表(如SYSCON.saradc_sar1_patt_tab)中配置的不一致(但配置的每个通道都被采集了)
一段时间内,个别通道的采样次数样式表中的次数(相对于其它通道)多一倍(例如样式表配置0123456701234567按顺序采样16次(与采样位数无关),结果一段时间内,某些通道(例如1通道)的采样次数比其它通道的次数多一倍,其它通道的次数都差不多。)
等问题(详情可以参考
viewtopic.php?t=6537 )
所以希望乐鑫可以提供一个,能够实现ESP32 Datasheet中提到的,ADC最大以2M sps 采样的例子。
Last edited by q515949148 on Sun Dec 09, 2018 9:10 pm, edited 2 times in total.
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
您好,我们准备一下示例代码。
-
- Posts: 17
- Joined: Wed Jul 25, 2018 8:11 am
-
- Posts: 118
- Joined: Tue Jun 26, 2018 3:09 am
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
Hi, 附件是 ADC 2M AD 采样的示例配置. 2M 是采样率, 4通道平均下来是500K. 采样频率可以降低, 计算公式是 rate = 4M/clkm, 必须是整除, 不然时钟不稳可能会有问题. 由于有些 API 在 IDF 还没有更新, 所以需要手动替换一下
components/driver/rtc_module.c 文件.
- Attachments
-
- i2s_adc_scale.tar.gz
- (21.56 KiB) Downloaded 2058 times
wookooho
-
- Posts: 17
- Joined: Wed Jul 25, 2018 8:11 am
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
感谢,我正在查看。顺带吐槽一句,为啥会有goto。。。ESP_houwenxiang wrote: ↑Sat Dec 15, 2018 5:20 amHi, 附件是 ADC 2M AD 采样的示例配置. 2M 是采样率, 4通道平均下来是500K. 采样频率可以降低, 计算公式是 rate = 4M/clkm, 必须是整除, 不然时钟不稳可能会有问题. 由于有些 API 在 IDF 还没有更新, 所以需要手动替换一下
components/driver/rtc_module.c 文件.
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
你好:我也想尝试 DIG ADC 2Msps,但mingw32 make 未通过
E:/project/mingw_esp32/i2s_adc_scale/main/app_main.c:47: undefined reference `adc_i2s_scale_mode_init'
collect2.exe: error: ld returned 1 exit status
盼提示!!
E:/project/mingw_esp32/i2s_adc_scale/main/app_main.c:47: undefined reference `adc_i2s_scale_mode_init'
collect2.exe: error: ld returned 1 exit status
盼提示!!
i2s_adc_scale 编译错误 undefined:adc_i2s_scale_mode_init
ESP_houwenxiang你好:我也想尝试 DIG ADC 2Msps,已下载i2s_adc_scale测试程序,但win10系统下 mingw32 make 未通过,
E:/project/mingw_esp32/i2s_adc_scale/main/app_main.c:47: undefined reference `adc_i2s_scale_mode_init'
collect2.exe: error: ld returned 1 exit status
其他例程编译下载正常,急盼提示!!
E:/project/mingw_esp32/i2s_adc_scale/main/app_main.c:47: undefined reference `adc_i2s_scale_mode_init'
collect2.exe: error: ld returned 1 exit status
其他例程编译下载正常,急盼提示!!
-
- Posts: 118
- Joined: Tue Jun 26, 2018 3:09 am
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
请查看 .h 文件. 将 adc_i2s_scale_mode_init 函数复制到 rtc_module.c 文件中
wookooho
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
ESP_houwenxiang你好:我原先图方便在arduino ide 内编译esp32,因无法搞定DIG ADC昨日才转移至wingw32, 已按您的指点.h 文件. 将 adc_i2s_scale_mode_init 函数复制到 rtc_module.c 文件中,make后依然有一大堆错误:
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c: In function 'adc_i2s_scale_mode_init':
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1351:11: error: implicit declaration of function 'adc_set_i2s_data_len' [-Werror=implicit-function-declaration]
ret = adc_set_i2s_data_len(adc_unit, table_len);
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1356:16: error: implicit declaration of function 'adc_set_i2s_data_pattern' [-Werror=implicit-function-declaration]
ret = adc_set_i2s_data_pattern(adc_unit, i, channel, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_11);
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c: At top level:
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1381:18: error: static declaration of 'adc_set_i2s_data_len' follows non-static declaration
static esp_err_t adc_set_i2s_data_len(adc_unit_t adc_unit, int patt_len)
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1351:11: note: previous implicit declaration of 'adc_set_i2s_data_len' was here
ret = adc_set_i2s_data_len(adc_unit, table_len);
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1396:18: error: static declaration of 'adc_set_i2s_data_pattern' follows non-static declaration
static esp_err_t adc_set_i2s_data_pattern(adc_unit_t adc_unit, int seq_num, adc_channel_t channel, adc_bits_width_t bits, adc_atten_t atten)
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1356:16: note: previous implicit declaration of 'adc_set_i2s_data_pattern' was here
ret = adc_set_i2s_data_pattern(adc_unit, i, channel, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_11);
^
cc1.exe: some warnings being treated as errors
make[1]: *** [/esp-idf/make/component_wrapper.mk:286:rtc_module.o] 错误 1
make: *** [D:/ESP32/msys32/esp-idf/make/project.mk:468:component-driver-build] 错误 2
恳请赐教,多谢!
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c: In function 'adc_i2s_scale_mode_init':
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1351:11: error: implicit declaration of function 'adc_set_i2s_data_len' [-Werror=implicit-function-declaration]
ret = adc_set_i2s_data_len(adc_unit, table_len);
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1356:16: error: implicit declaration of function 'adc_set_i2s_data_pattern' [-Werror=implicit-function-declaration]
ret = adc_set_i2s_data_pattern(adc_unit, i, channel, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_11);
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c: At top level:
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1381:18: error: static declaration of 'adc_set_i2s_data_len' follows non-static declaration
static esp_err_t adc_set_i2s_data_len(adc_unit_t adc_unit, int patt_len)
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1351:11: note: previous implicit declaration of 'adc_set_i2s_data_len' was here
ret = adc_set_i2s_data_len(adc_unit, table_len);
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1396:18: error: static declaration of 'adc_set_i2s_data_pattern' follows non-static declaration
static esp_err_t adc_set_i2s_data_pattern(adc_unit_t adc_unit, int seq_num, adc_channel_t channel, adc_bits_width_t bits, adc_atten_t atten)
^
D:/ESP32/msys32/esp-idf/components/driver/rtc_module.c:1356:16: note: previous implicit declaration of 'adc_set_i2s_data_pattern' was here
ret = adc_set_i2s_data_pattern(adc_unit, i, channel, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_11);
^
cc1.exe: some warnings being treated as errors
make[1]: *** [/esp-idf/make/component_wrapper.mk:286:rtc_module.o] 错误 1
make: *** [D:/ESP32/msys32/esp-idf/make/project.mk:468:component-driver-build] 错误 2
恳请赐教,多谢!
Re: 请问可以提供2M sps 速率运行的内置ADC的例子吗?
大家好:终于搞定了i2s_adc_scale 的mingw32 make! 要点是adc_i2s_scale_mode_init 函数复制到 rtc_module.c 文件中adc_set_i2s_data_len,adc_set_i2s_data_pattern函数之后!多谢ESP_houwenxiang提供的例程!
Who is online
Users browsing this forum: No registered users and 27 guests