打印

esp8266想以40KHz的速度采样,怎么就不行呢?

[复制链接]
1151|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
糖2100|  楼主 | 2023-3-7 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ESP8266 ADC求助,目标采样率40kHz,用system_adc_read_fast(a,1,8); 结果发现1次ad转换就要花175us,这不对呀,按手册的说明这应该是80M的8分频就是10M的采样速度才对呀。然后又发现wifi_set_opmode(NULL_MODE);这句无论写不写结果都一样,速度还是这么慢,这是怎么回事呢?

使用特权

评论回复

相关帖子

沙发
fxyc87| | 2023-3-8 08:53 | 只看该作者
MicroPython本身就很慢的啊,你得用C语言开发,AD采集本身需要耗时,解释脚本本身也有大量耗时。

使用特权

评论回复
板凳
m564522634| | 2023-3-8 13:47 | 只看该作者
10M 估计是数据总线速度,不是AD转换的数据, AD转换本身就需要时间的,你在手册确认下转换速度是多少

使用特权

评论回复
地板
糖2100|  楼主 | 2023-3-8 19:26 | 只看该作者
fxyc87 发表于 2023-3-8 08:53
MicroPython本身就很慢的啊,你得用C语言开发,AD采集本身需要耗时,解释脚本本身也有大量耗时。 ...

纯c做的,用的官方手册里的范例代码

使用特权

评论回复
5
糖2100|  楼主 | 2023-3-8 19:28 | 只看该作者
本帖最后由 糖2100 于 2023-3-8 19:37 编辑
m564522634 发表于 2023-3-8 13:47
10M 估计是数据总线速度,不是AD转换的数据, AD转换本身就需要时间的,你在手册确认下转换速度是多少 ...

手册里没说具体采样率。
【摘录手册相关章节】
快速⾼精度的 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
手册里就这些,还有一个普通采样,更慢了。

使用特权

评论回复
6
糖2100|  楼主 | 2023-3-9 11:55 | 只看该作者
问题还是没解决,难道ESP8266的ADC采样频率,最高只能到 8KHz 吗???

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝