Forums › Reference, Evaluation, and Development Boards › OSD32MP1-BRK › ADC can’t exceed the maximum sample rate of 50kSa/s using libiio
Hello,
I am experiencing an issue with a low ADC sample rate when using triggered buffered mode. Although I have set sufficient values in the IIO user space interface, the actual sample rate cannot exceed 50 kSa/s, regardless of what I try. I use Linux 5.15 kirkstone with this device tree:
And after startup these properties are edited:
echo 0 > /sys/bus/platform/devices/44000000.timer:pwm/pwm/pwmchip10/export
echo 10000 > /sys/bus/platform/devices/44000000.timer:pwm/pwm/pwmchip10/pwm0/period
echo 5000 > /sys/bus/platform/devices/44000000.timer:pwm/pwm/pwmchip10/pwm0/duty_cycle
echo 100000 > /sys/bus/iio/devices/trigger0/sampling_frequency
echo 1 > /sys/bus/platform/devices/44000000.timer:pwm/pwm/pwmchip10/pwm0/enable
echo “tim1_trgo” > /sys/bus/iio/devices/iio\:device1/trigger/current_trigger
echo 1 > /sys/bus/iio/devices/iio\:device1/scan_elements/in_voltage0_en
echo 1 > /sys/bus/iio/devices/iio\:device1/scan_elements/in_voltage1_en
echo 4096 > /sys/bus/iio/devices/iio\:device1/buffer/length
echo 2048 > /sys/bus/iio/devices/iio\:device1/buffer/watermark
echo 1 > /sys/bus/iio/devices/iio\:device1/buffer/enable
Here is my output of the iio_info command:
Library version: 0.23 (git tag: 92d6a35)
Compiled with backends: local xml ip usb serial
IIO context created with local backend.
Backend version: 0.23 (git tag: 92d6a35)
Backend description string: Linux osd32mp1-brk 5.15.24 #1 SMP PREEMPT Wed Feb 16 11:56:41 UTC 2022 armv7l
IIO context has 2 attributes:
local,kernel: 5.15.24
uri: local:
IIO context has 8 devices:
iio:device0: 44000000.timer:timer@0
1 channels found:
count0: (input)
8 channel-specific attributes found:
attr 0: en value: 1
attr 1: enable_mode value: always
attr 2: enable_mode_available value: always gated triggered
attr 3: preset value: 2087
attr 4: raw value: 831
attr 5: scale value: 1.000000000
attr 6: trigger_mode ERROR: Invalid argument (22)
attr 7: trigger_mode_available value: trigger
ERROR: checking for trigger : Input/output error (5)
iio:device1: 48003000.adc:adc@0 (buffer capable)
2 channels found:
voltage0: (input, index: 0, format: le:U16/16>>0)
3 channel-specific attributes found:
attr 0: offset value: 0
attr 1: raw ERROR: Device or resource busy (16)
attr 2: scale value: 0.044250488
voltage1: (input, index: 1, format: le:U16/16>>0)
3 channel-specific attributes found:
attr 0: offset value: 0
attr 1: raw ERROR: Device or resource busy (16)
attr 2: scale value: 0.044250488
2 device-specific attributes found:
attr 0: trigger_polarity value: rising-edge
attr 1: trigger_polarity_available value: rising-edge falling-edge both-edges
2 buffer-specific attributes found:
attr 0: data_available value: 4096
attr 1: watermark value: 2048
7 debug attributes found:
debug attr 0: lincalfact6 value: 509
debug attr 1: lincalfact5 value: 540542463
debug attr 2: lincalfact4 value: 538446337
debug attr 3: lincalfact3 value: 537392635
debug attr 4: lincalfact2 value: 541593087
debug attr 5: lincalfact1 value: 540542465
debug attr 6: direct_reg_access value: 0x100A
Current trigger: trigger0(tim1_trgo)
trigger0: tim1_trgo
0 channels found:
3 device-specific attributes found:
attr 0: master_mode value: update
attr 1: master_mode_available value: reset enable update compare_pulse OC1REF OC2REF OC3REF OC4REF
attr 2: sampling_frequency value: 100037
No trigger on this device
trigger1: tim1_trgo2
0 channels found:
3 device-specific attributes found:
attr 0: master_mode value: reset
attr 1: master_mode_available value: reset enable update compare_pulse OC1REF OC2REF OC3REF OC4REF OC5REF OC6REF compare_pulse_OC4REF compare_pulse_OC6REF compare_pulse_OC4REF_r_or_OC6REF_r compare_pulse_OC4REF_r_or_OC6REF_f compare_pulse_OC5REF_r_or_OC6REF_r compare_pulse_OC5REF_r_or_OC6REF_f
attr 2: sampling_frequency value: 100037
No trigger on this device
trigger2: tim1_ch1
0 channels found:
No trigger on this device
trigger3: tim1_ch2
0 channels found:
No trigger on this device
trigger4: tim1_ch3
0 channels found:
No trigger on this device
trigger5: tim1_ch4
0 channels found:
No trigger on this device
Despite these efforts, the sampling rate still cannot exceed 50 kSa/s when tested with a signal generator. Do you have any suggestions as to why this might be the case? Thanks in advance.
Best Regards,
jromanki
Octavo Systems LLC all rights reserved
OCTAVO is registered in the U.S. Patent and Trademark Office. OSD, C-SiP, and the Octavo Logo are trademarks of Octavo Systems LLC.
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields