I can read analog inputs 0-4 from /sys/bus/iio/devices/iio:device0/in_voltageN_raw but I can’t get analog inputs 5-7 to work. Inputs 5 and 6 don’t have analog as a choice in config-pin:
Since 5-7 ADC's are shared with a normal pin, you need to stick the
gpio in gpio mode with config-pin.. (no pull-up, no pull-down) then it
might work..
I can read analog inputs 0-4 from
/sys/bus/iio/devices/iio:device0/in_voltageN_raw but I can’t get analog
inputs 5-7 to work. Inputs 5 and 6 don’t have analog as a choice in
config-pin:
Analog input 7 (P2_36) doesn’t have any other function, but it ignores any
analog input voltage.
Is there a trick to using inputs 5-7 or is support under development?
Since 5-7 ADC’s are shared with a normal pin, you need to stick the
gpio in gpio mode with config-pin… (no pull-up, no pull-down) then it
might work…
Haven’t personally tried this yet…
I tested all 3 inputs as part of the board bring-up/validation process, but I was using a different device tree. I’m trying to get back to it with what Robert ships in the latest images, hopefully in the next day or so, but I’d like to provide some notes that might be of some use:
For 5 and 6, yeah, Robert’s right on making sure the GPIO is set to input mode (should be default?) and that there is no pull-up/pull-down enabled on the pin. Do note, however, that there is a 10k pull-down due to the resistor divider on the input. All voltages on the ADC will be half of what they are on the headerpin.
For 7, there is an analog mux, but it should default to the status of the pin. There are some voltages internal to the PMIC that could be read, put the header pin status should be the default.
$ echo in > /sys/class/gpio/gpio87/direction
$ cat /sys/bus/iio/devices/iio:device0/in_voltage6_raw
1571
Because of the voltage divider, the values are half of the “normal” values.
But I still can’t get pin 7 to work:
$ while [ 1 ]; do cat /sys/bus/iio/devices/iio:device0/in_voltage7_raw; done
This gives me a sequence of values starting around 1600 dropping by about 10 every second, unrelated to my input, slowing down to about 658. Sort of like the voltage if you were discharging a capacitor.
So analog input 7 seems to be measuring something, but I don’t know what. Maybe some PMIC thing?
(I’m using Linux beaglebone 4.4.91-ti-r133 #1 SMP Tue Oct 10 05:18:08 UTC 2017 armv7l GNU/Linux)
$ echo in > /sys/class/gpio/gpio87/direction
$ cat /sys/bus/iio/devices/iio:device0/in_voltage6_raw
1571
Because of the voltage divider, the values are half of the “normal” values.
But I still can’t get pin 7 to work:
$ while [ 1 ]; do cat /sys/bus/iio/devices/iio:device0/in_voltage7_raw; done
This gives me a sequence of values starting around 1600 dropping by about 10 every second, unrelated to my input, slowing down to about 658. Sort of like the voltage if you were discharging a capacitor.
So analog input 7 seems to be measuring something, but I don’t know what. Maybe some PMIC thing?
I’m not sure how to check the status of the analog mux. Someone posted a driver patch on the TI e2e forum to change the status. Maybe we should carry that patch or help submit to mainline?
Hi All, trying to get analogue7 working on pocketbeagle. Jason’s magic i2cset commands work for me, but I’m stuck trying to write the equivalent commands into C++. So far I have the code below, which fails on the ioctl. i2cdetect shows the pmic at address 24 with a ‘UU’ and I can see an entry at /sys/bus/i2c/devices/i2c-0/0-0024. Seems like some conflict with the linux driver for the PMIC not allowing me to access through ioctl. Any clues?
if((i2cfile=open(“/dev/i2c-0”, O_RDWR))<0){
rt_printf(“failed to open internal i2c bus\n”);
} // works ok
if(ioctl(i2cfile,I2C_SLAVE,0x24)<0){
rt_printf(“i2c slave address failed\n”);
} // fails
I’m trying to get accurate readings on analog pins 5 and 6, but I’m unable to do so. As I increase the input voltage, the error also increases linearly. In comparison, all other analog pins show accurate values, but pins 5 and 6 consistently display incorrect values. The calibration is correct according to 3.3V, yet the readings are always lower than the actual value, and the error increases with higher input voltage. I’ve tested this on all the PocketBeagle modules I have, but I’m facing the same issue on each. Please help me identify the problem