hockel 发表于 2020-7-28 10:55:19

【Maixduino】eps32 read adc failed 解决办法


# 【Maixduino】eps32 read adc failed 解决办法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200728102916830.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)

##前言
最近做项目需要用到maixduino中的模拟引脚,但是下载了[官方例程](https://github.com/sipeed/MaixPy_scripts/blob/master/network/demo_esp32_read_adc.py)显示报错:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200728102513971.jpg#pic_center)
查找阅了[相关资料](https://github.com/sipeed/MaixPy/issues/148)可能是esp32 固件与k210固件不兼容问题。重新刷新一下固件就可以解决了。
## 准备阶段
[下载kflash_gui](https://github.com/sipeed/kflash_gui/releases)
[下载flash_download_tools](https://www.espressif.com/zh-hans/support/download/other-tools)
[下载特定的固件](https://github.com/sipeed/MaixPy/files/3514633/fixed_adc_fw.tar.gz)

## 步骤
一、请使用kflash工具烧录下载后解开的mainxpy.bin:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020072810434886.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
二、接着再使用flash_download_tools将下载解开的NINA_W102-1.3.1.bin烧录到MaixDuino上一个ESP32:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200728104423717.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
**注意:这里的com口要和之前刷入maixpy固件的com不同**
完成后,就可以使用以下程式测试ADC(MaixDuino的K210芯片和ESP32之间使用SPI传输资料,相关接脚可参考电路图)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200728104700786.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)

```python
import network
import utime
from Maix import GPIO
from fpioa_manager import *

#iomap at MaixDuino
fm.register(25,fm.fpioa.GPIOHS10)#cs
fm.register(8,fm.fpioa.GPIOHS11)#rst
fm.register(9,fm.fpioa.GPIOHS12)#rdy
fm.register(28,fm.fpioa.GPIOHS13)#mosi
fm.register(26,fm.fpioa.GPIOHS14)#miso
fm.register(27,fm.fpioa.GPIOHS15)#sclk

nic = network.ESP32_SPI(cs=fm.fpioa.GPIOHS10,rst=fm.fpioa.GPIOHS11,rdy=fm.fpioa.GPIOHS12,
mosi=fm.fpioa.GPIOHS13,miso=fm.fpioa.GPIOHS14,sclk=fm.fpioa.GPIOHS15)

# get ADC0 ADC1 ADC2
adc = nic.adc( (0,1,2) )
print(adc)

while True:
    try:
      # get ADC0~5
      adc = nic.adc()
    except Exception as e:
      print(e)
      continue
    for v in adc:
      print("%04d" %(v), end=" ")
    print()
    utime.sleep_ms(50)
```
测试结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200728104921526.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
## 总结
这样问题就解决了,更多教程案例欢迎关注个人博客:(https://www.hockel.club/)

peterlhj 发表于 2020-8-26 13:04:48

我烧录ESP32时一直是等待上电同步的界面,请问如何操作?
页: [1]
查看完整版本: 【Maixduino】eps32 read adc failed 解决办法