This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: KERNEL下ADC驱动连续读取模式无法开启

Part Number: TDA4VM
Other Parts Discussed in Thread: ADS8684,

你好,我目前使用TDA4VM,SDK版本是ti-processor-sdk-linux-j7-evm-08_05_00_08-Linux,使用的ADC是ADS8684,参考software-dl.ti.com/.../iio:device0下能够看到对应的文件,可以获取到对应通道对应文件的值,但是在文档后便设置连续读取模式时,前面都可以设置成功,最后在 echo 1 > /sys/bus/iio/devices/iio\:device0/buffer时无法设置成功,提示-sh: echo: write error: Invalid argument,这个可能是什么原因造成的?

  • 更正以下,最后是在echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable时无法设置成功,提示-sh: echo: write error: Invalid argument

  • 您好,您的问题我们需要升级到英文论坛看下,链接如下,有答复会尽快给您:

    e2e.ti.com/.../tda4vm-adc-driven-continuous-read-mode-cannot-be-turned-on-in-kernel

  • 但是在文档后便设置连续读取模式时,前面都可以设置成功,
    最后是在echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable时无法设置成功,提示-sh: echo: write error: Invalid argument

    能否分享下您正在尝试的指令序列? 工程师这边想重现一下。 

  • 先在设备树里添加了ADC的设备,添加了ADC的驱动,然后可以在/sys/bus/iio/devices/下找到设备,执行以下命令:

    cat /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage1_type
    le:u16/16>>0
    echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage0_en
    echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage2_en
    echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage3_en
    echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage34_en
    echo 100 > /sys/bus/iio/devices/iio\:device0/buffer/length
    以上都是正常的
     echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable
    这条命令报错:-sh: echo: write error: Invalid argument
  • 能否再分享下您所做的.w.r.t ADC8684器件树更改?

    如果没有理解错的话,ADC 是外部的,并不是 SoC 内部的 ADC? 

  • 设备数修改如下:

    &main_spi1 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi1_pins_default>;
    status="okay";

    adc@0 {
    spi-max-frequency = <24000000>;
    reg = <0>;
    compatible = "ti,ads8684";
    };
    };

    spi1_pins_default: spi1_pins_default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x1dc, PIN_INPUT, 0) /* (Y1) SPI1_CLK */
    J721E_IOPAD(0x1d4, PIN_INPUT, 0) /* (Y3) SPI1_CS0 */
    J721E_IOPAD(0x1e0, PIN_INPUT, 0) /* (Y5) SPI1_D0 */
    J721E_IOPAD(0x1e4, PIN_INPUT, 0) /* (Y2) SPI1_D1 */

    >;
    };

    ADC的型号是ADS8684,通过SPI1通讯

  • 因为是自制板,且ADC 通过 SPI1连接。 工程师想检查下该 ADC 的探测函数是否成功? ADC 转换是如何启动的? 需要使用 SPI 来控制 ADC 吗? 

  • 工程师想检查下该 ADC 的探测函数是否成功? ADC 转换是如何启动的? 需要使用 SPI 来控制 ADC 吗? 

    ADC的探测是成功的了,Iio:device0设备已经建立

    ADS8684是4通道,通过SPI来控制ADC获取数据的

  • ADS8684是4通道,通过SPI来控制ADC获取数据的

    那么还需要启用 SPI 才能将其打开? 由于您这个是自制板和定制接口,工程师希望在提供反馈之前了解更多内容。 

x 出现错误。请重试或与管理员联系。