完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
AD7606使用imx6cpu,内核版本是6.1.22,以下是设备树,7606b挂载在spi1上:
adc_vref: fixedregulator { compatible = "regulator-fixed"; regulator-name = "adc_vref"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; // GPIO属性被移除,因为不需要通过GPIO控制电源 regulator-always-on; }; ecspi1 { cs-gpios = < gpio3 19 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = < pinctrl_ecspi1>; status = "okay"; ad7606@0 { compatible = "adi,ad7606b"; reg = <0>; spi-max-frequency = <1000000>; spi-cpol; // spi-cpha; //busy 4 24 //reset 4 22 //adi,conversion-start-gpios 4 23 //adi,first-data-gpios 4 25 //interrupt 4 21 avcc-supply = < adc_vref>; //很重要,电源的重写可以规避识别不了的问题 interrupts = <24 IRQ_TYPE_EDGE_FALLING>; //目前给的是busy信号 interrupt-parent = < gpio4>; adi,conversion-start-gpios = < gpio4 23 GPIO_ACTIVE_HIGH>; reset-gpios = < gpio4 22 GPIO_ACTIVE_HIGH>; adi,first-data-gpios = < gpio4 25 GPIO_ACTIVE_HIGH>; // adi,oversampling-ratio-gpios = < gpio 18 GPIO_ACTIVE_HIGH // gpio 23 GPIO_ACTIVE_HIGH // gpio 26 GPIO_ACTIVE_HIGH>; // standby-gpios = < gpio 24 GPIO_ACTIVE_LOW>; adi,sw-mode; // status = "okay"; }; }; 目前使用的中断管教给的是busy信号,不知道会不会有影响 // adi,oversampling-ratio-gpios = < gpio 18 GPIO_ACTIVE_HIGH // gpio 23 GPIO_ACTIVE_HIGH // gpio 26 GPIO_ACTIVE_HIGH>; // standby-gpios = < gpio 24 GPIO_ACTIVE_LOW>; 这几个管教因为硬件直接上拉了,所以设置不了。 内核下打开7606的配置,目前可以在sys下看到设备: root@imx6q-custom:~# cd /sys/bus/iio/devices/iio:device0 root@imx6q-custom:/sys/bus/iio/devices/iio:device0# ls -l drwxr-xr-x 2 root root 0 Mar 10 01:08 buffer drwxr-xr-x 2 root root 0 Mar 10 01:08 buffer0 -rw-r--r-- 1 root root 4096 Mar 10 01:08 current_timestamp_clock -r--r--r-- 1 root root 4096 Mar 10 01:08 dev -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage0_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage0_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage1_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage1_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage2_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage2_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage3_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage3_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage4_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage4_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage5_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage5_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage6_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage6_scale -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage7_raw -rw-r--r-- 1 root root 4096 Mar 10 01:08 in_voltage7_scale -r--r--r-- 1 root root 4096 Mar 10 01:08 in_voltage_scale_available -r--r--r-- 1 root root 4096 Mar 10 01:08 name lrwxrwxrwx 1 root root 0 Mar 10 01:08 of_node -> ../../../../../../../../../../firmware/devicetree/base/soc/bus@2000000/spba-bus@2000000/spi@2008000/ad7606@0 -rw-r--r-- 1 root root 4096 Mar 10 01:08 oversampling_ratio -r--r--r-- 1 root root 4096 Mar 10 01:08 oversampling_ratio_available drwxr-xr-x 2 root root 0 Mar 10 01:08 power drwxr-xr-x 2 root root 0 Mar 10 01:08 scan_elements lrwxrwxrwx 1 root root 0 Mar 10 01:08 subsystem -> ../../../../../../../../../../bus/iio drwxr-xr-x 2 root root 0 Mar 10 01:08 trigger -rw-r--r-- 1 root root 4096 Mar 10 01:07 uevent -r--r--r-- 1 root root 4096 Mar 10 01:08 waiting_for_supplier 但是我根据官方的文档,打开通道报如下错误: root@imx6q-custom:/sys/bus/iio/devices/iio:device0# cat in_voltage0_raw cat: read error: Input/output error 请帮我分析下,是设备树还有问题吗,还是需要一些初始化才能成功 |
|
相关推荐
1个回答
|
|
根据您提供的信息,我将逐步分析可能导致AD7606无法采集电压的原因:
1. 检查硬件连接:首先,请确保AD7606与IMX6 CPU的SPI1接口连接正确。检查SPI数据线、时钟线、片选线等是否连接正确,以及电源线是否连接到AD7606的VDD和VREF引脚。 2. 检查电源:请确保AD7606的电源线连接正确,并且VDD和VREF引脚的电压在规定的范围内。根据您的设备树配置,VREF的电压范围是5000000微伏(5V),请检查实际电压是否符合要求。 3. 检查SPI通信:请确保IMX6 CPU的SPI1接口与AD7606之间的通信正常。检查SPI时钟速率、数据格式等参数是否设置正确。您可以使用示波器或逻辑分析仪来监测SPI通信。 4. 检查设备树配置:根据您提供的设备树配置,AD7606的VREF电压是固定的5V。请确保这个配置与您的硬件设计和AD7606的数据手册要求相匹配。 5. 检查软件驱动:请确保IMX6 CPU的内核版本6.1.22支持AD7606,并已正确加载了SPI驱动和AD7606驱动。您可以检查内核的配置文件,以确保SPI和AD7606驱动已启用。 6. 检查应用程序:请检查您的应用程序是否正确初始化了SPI接口和AD7606设备,以及是否正确发送了读取电压值的命令。 7. 检查AD7606本身:如果以上步骤都无法解决问题,可能是AD7606本身存在问题。您可以尝试更换一个新的AD7606芯片,或者使用其他已知正常的SPI设备来测试IMX6 CPU的SPI1接口。 通过以上步骤,您应该能够找到导致AD7606无法采集电压的原因,并采取相应的解决措施。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
804 浏览 0 评论
814 浏览 1 评论
771 浏览 1 评论
电路小知识 | 交流电路复数的基础知识以及相位差和电抗的计算
624 浏览 0 评论
1853 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 16:22 , Processed in 0.605182 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号