21ic问答首页 - esp8266想以40KHz的速度采样,怎么就不行呢?
esp8266想以40KHz的速度采样,怎么就不行呢?
糖21002023-03-07
ESP8266 ADC求助,目标采样率40kHz,用system_adc_read_fast(a,1,8); 结果发现1次ad转换就要花175us,这不对呀,按手册的说明这应该是80M的8分频就是10M的采样速度才对呀。然后又发现wifi_set_opmode(NULL_MODE);这句无论写不写结果都一样,速度还是这么慢,这是怎么回事呢?
赞0
评论
2023-03-09
赞0
手册里没说具体采样率。
【摘录手册相关章节】
快速⾼精度的 ADC 采样。
- 本接⼝必须在关闭 Wi-Fi 的状态下使⽤。
- 如需进⾏连续测量 ADC,则还需要在关闭所有中断的状态下使⽤。
- 因此,调⽤ system_adc_read_fast 时,不能使⽤ PWM 或者 NMI 类型的硬件定时器。
函数定义
void system_adc_read_fast(uint16 *adc_addr, uint16 adc_num, uint8 adc_clk_div)
参数
• uint16 *adc_addr: ADC 连续采样输出的地址指针。
• uint16 adc_num: ADC 连续采样的点数,输⼊范围 [1, 65535]。
• uint8 adc_clk_div: ADC ⼯作时钟 = 80M/adc_clk_div,输⼊范围 [8, 32],推荐值为 8。
范例
wifi_set_opmode(NULL_MODE);
ets_intr_lock(); //close interrupt
uint16 adc_addr[10];
uint16 adc_num = 10;
uint8 adc_clk_div = 8;
uint32 i;
system_adc_read_fast(adc_addr, adc_num, adc_clk_div);
for(i=0; i<adc_num; i++)
os_printf("i=%d, adc_v=%d\n", i, adc_addr);
ets_intr_unlock(); //open interrup
手册里就这些,还有一个普通采样,更慢了。
评论
2023-03-08
赞0
纯c做的,用的官方手册里的范例代码
评论
2023-03-08
赞0
评论
2023-03-08
赞0
评论
2023-03-08
您需要登录后才可以回复 登录 | 注册