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.

am335x adc调试



am335x-evm login: root
root@am335x-evm:~# lsmod
Module                  Size  Used by
g_mass_storage         37599  0
wl12xx_sdio             3986  0
root@am335x-evm:~# insmod ti_adc.ko
[   48.693786] ti_adc: module is from the staging directory, the quality is unknown, you have been wa.
[   48.704833] tiadc tiadc: attached adc driver
root@am335x-evm:~#  ls -al /sys/bus/iio/devices/iio\:device0/
drwxr-xr-x    5 root     root             0 Jun 25 23:09 .
drwxr-xr-x    4 root     root             0 Jan  1  2000 ..
drwxr-xr-x    2 root     root             0 Jun 25 23:10 buffer
-r--r--r--    1 root     root          4096 Jun 25 23:10 dev
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage0_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage1_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage2_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage3_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage4_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage5_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage6_raw
-r--r--r--    1 root     root          4096 Jun 25 23:10 in_voltage7_raw
-rw-r--r--    1 root     root          4096 Jun 25 23:10 mode
-r--r--r--    1 root     root          4096 Jun 25 23:10 name
drwxr-xr-x    2 root     root             0 Jun 25 23:10 power
drwxr-xr-x    2 root     root             0 Jun 25 23:10 scan_elements
lrwxrwxrwx    1 root     root             0 Jun 25 23:09 subsystem -> ../../../../../../bus/iio
-rw-r--r--    1 root     root          4096 Jun 25 23:09 uevent
root@am335x-evm:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
3814
root@am335x-evm:~# cat /sys/bus/iio/devices/iio\:device0/mode
oneshot
root@am335x-evm:~# echo oneshot > /sys/bus/iio/devices/iio\:device0/mode
root@am335x-evm:~# ls -al /sys/bus/iio/devices/iio\:device0/buffer/
drwxr-xr-x    2 root     root             0 Jun 25 23:10 .
drwxr-xr-x    5 root     root             0 Jun 25 23:09 ..
-rw-r--r--    1 root     root          4096 Jun 25 23:11 bytes_per_datum
-rw-r--r--    1 root     root          4096 Jun 25 23:11 enable
-rw-r--r--    1 root     root          4096 Jun 25 23:11 length
root@am335x-evm:~# ls -al /sys/bus/iio/devices/iio\:device0/scan_elements/
drwxr-xr-x    2 root     root             0 Jun 25 23:10 .
drwxr-xr-x    5 root     root             0 Jun 25 23:09 ..
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage0_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage0_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage0_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage1_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage1_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage1_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage2_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage2_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage2_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage3_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage3_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage3_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage4_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage4_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage4_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage5_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage5_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage5_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage6_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage6_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage6_type
-rw-r--r--    1 root     root          4096 Jun 25 23:11 in_voltage7_en
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage7_index
-r--r--r--    1 root     root          4096 Jun 25 23:11 in_voltage7_type
e1_type335x-evm:~# cat /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltag
le:u12/32>>0
root@am335x-evm:~# cat /sys/bus/iio/devices/iio\:device0/mode
oneshot
root@am335x-evm:~# echo continuous > /sys/bus/iio/devices/iio\:device0/mode
oltage0_enx-evm:~# echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_v
root@am335x-evm:~# echo 100 > /sys/bus/iio/devices/iio\:device0/buffer/length
root@am335x-evm:~# echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable
root@am335x-evm:~# echo 0 > /sys/bus/iio/devices/iio\:device0/buffer/enable
oltage4_enx-evm:~# echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_v
root@am335x-evm:~# cat /sys/bus/iio/devices/iio\:device0/mode
continuous
这里为什么会返回一个continuous    ???????????

root@am335x-evm:~# echo continuous > /sys/bus/iio/devices/iio\:device0/mode
root@am335x-evm:~# ./generic_buffer -n tiadc -l 256 -c 3
iio device number being used is 0
Failed to find the trigger tiadc-dev0
root@am335x-evm:~#



  • 推测是模式设置为了连续采样。你使用的是SDK7.0吗?如果是的话,操作可以参考:

    http://processors.wiki.ti.com/index.php/Linux_Core_ADC_User%27s_Guide

  • root@am335x-evm:/media/mmcblk0p1# cat /sys/bus/iio/devices/iio\:device0/mode    
    oneshot                                                                         
    vice0/modex-evm:/media/mmcblk0p1# echo continuous > /sys/bus/iio/devices/iio\:d
    n_elements/in_voltage4_encblk0p1# echo 1 > /sys/bus/iio/devices/iio\:device0/sc
    uffer/lengthevm:/media/mmcblk0p1# echo 100 > /sys/bus/iio/devices/iio\:device0/
    fer/enablex-evm:/media/mmcblk0p1# echo 1 > /sys/bus/iio/devices/iio\:device0/bu
    fer/enablex-evm:/media/mmcblk0p1# echo 0 > /sys/bus/iio/devices/iio\:device0/bu
    n_elements/in_voltage4_encblk0p1# echo 1 > /sys/bus/iio/devices/iio\:device0/sc
    root@am335x-evm:/media/mmcblk0p1# cat /sys/bus/iio/devices/iio\:device0/mode    
    continuous                                                                      
    vice0/modex-evm:/media/mmcblk0p1# echo continuous > /sys/bus/iio/devices/iio\:d
    root@am335x-evm:/media/mmcblk0p1#  ./generic_buffer -n tiadc -l 256 -c 3        
    iio device number being used is 0                                               
    Failed to find the trigger tiadc-dev0                                           
    root@am335x-evm:/media/mmcblk0p1# ./generic_buffer -n tiadc -l 256 -c 3         
    iio device number being used is 0                                               
    Failed to find the trigger tiadc-dev0                                         
    root@am335x-evm:/media/mmcblk0p1#

    你好,能不能帮忙分析下这为什么会Failed??

  •  你是根据下面链接中的步骤做的吗?有没有打上patch呢?

    http://processors.wiki.ti.com/index.php/Linux_Core_ADC_User%27s_Guide#Sample_Application

    里面测试案例的一些参数设置和你上面的不太一样,比如:

    ./generic_buffer -n TI-am335x-adc -l 256 -c 3
    你用的tiadc,确实是对的吗?
  • dmesg看一下 是不是又adc的信息

  • 我建议查下您的board file或者dts的配置,adc的驱动是否加载了,在ezsdk 6.0中的beaglebone的配置,是没有加载的。

  • 是补丁没有打上的,

    但我这边有一个问题,如何同时采样多路,

  • 你好,

    请教下,如何用这个里面例子,来同时采集多路,并知道每路的内容;

    现在我这边如果只配in_voltage0_en-in_voltage7_en中的1路为1,

    是可以采集的到正确的数据,如果配置多路比如:in_voltage0_en ,

    in_voltage1_en,in_voltage2_en都为1,其它为0.如何正确的知道

    0路,1路,2路数据分别为多少;

    下面为单路:

    # ./generic_buffer -n tiadc -l 4 -c 2
    iio device number being used is 0
    /sys/bus/iio/devices/iio:device0
    num_channels: 1
    scan_size: 5312
    read_size: 48
    ADC Value: 2666
    ADC Value: 2667
    ADC Value: 2669
    ADC Value: 2665
    ADC Value: 2663
    ADC Value: 2664
    ADC Value: 2655
    ADC Value: 2659
    ADC Value: 2665
    ADC Value: 2665
    ADC Value: 2665
    ADC Value: 2667

    以上内容是正确的,

    下面为3路输入:

    # ./generic_buffer -n tiadc -l 4 -c 1
    iio device number being used is 0
    /sys/bus/iio/devices/iio:device0
    num_channels: 3
    scan_size: 15936
    //-----------------------------------------------------------------------------------------------------------
    read_size: 48
    ADC Value: 5
    ADC Value: 2272
    ADC Value: 2673
    ADC Value: 6
    ADC Value: 2674
    ADC Value: 4
    ADC Value: 2275
    ADC Value: 2672
    ADC Value: 2270
    ADC Value: 2674
    ADC Value: 3
    ADC Value: 2271

    想知道如何正确识别出上面的数据对应,打开的哪一路?




  • 查一下generic_buffer脚本文件的源码,看他是怎么处理的

    drivers/staging/iio/Documentation/generic_buffer.c


  • ADC Driver Limitations

    This driver is based on the IIO (Industrial I/O subsystem), however this is the first release of this driver and it has limited functionality:

    1. No HW trigger Support. Currently only supporting software trigger.
    2. Limited number of samples in continuous capture mode. (Only 1528 samples per capture)
    3. Limited maximum sample rate in continuous mode: 8K samples / second.
    4. Simultaneous capture on multiple ADC channels is not supported. Currently only supports continuous capture on a single ADC input channel at a time.
    5. "Out of Range" not supported by ADC driver. 

  • 看到有上面限制,现更改为oneshot模式了;

    oneshot已OK;

  • qun zhou

    你的问题解决了吗,我现在也是没有ADC数据打印,只有:

    iio device number being used is 0
    Failed to find the trigger tiadc-dev0

  • Hi Steven and l g1

    我跟据Generic_buffer.patch修改了generic_buffer.c,把里面关于triger的部分去掉了,但是仍然得不到ADC数据,报下面的错误:

    root@ /xhan$ ./generic_buffer -n tiadc -l 256 -c 3
    iio device number being used is 0
    /sys/bus/iio/devices/iio:device0 
    Failed to open /dev/iio:device0

    root@  /xhan$ ./generic_buffer -n tiadc -l 256 -c 3
    iio device number being used is 0
    /sys/bus/iio/dev[ 4777.462707] iio-buffer, current state requested again
    ices/iio:device0 
    Failed to open /dev/iio:device0

    你们知道可能是什么原因造成的吗

  • Hi l g1 and Steven,

    我在/dev目录下手动创建了iio:device的节点,然后运行generic_buffer得到了如下结果:

    root@ /xhan$ ./generic_buffer -n tiadc -l 4 -c 1
    iio device number being used is 0
    /sys/bus/iio/devices/iio:device0
    num_channels: 1
    scan_size: 75840
    read_size: 48
    ADC Value: 3812
    ADC Value: 3404
    ADC Value: 0
    ADC Value: 0
    ADC Value: 3400
    ADC Value: 0
    ADC Value: 0
    ADC Value: 3813
    ADC Value: 3399
    ADC Value: 0
    ADC Value: 0
    ADC Value: 3813

    感觉数据不太对呢

  • 请问解决了吗,怎么区分出通道的?

  • 您好,请问您是如何处理分通道的

  • 请问如何在应用层实现分通道输出,我现在要用0 2 3 三个通道采集数据,但是我查看SDK6.0的generic_buffer.c并没有这个功能,请支持