AS1531

From ArmadeusWiki
Revision as of 12:04, 19 August 2010 by FabienM (Talk | contribs) (Driver)

Jump to: navigation, search

Introduction

AS1531 is a 8 channels 12bits analog do digital converter made by Austriamicrosystem. The driver is included in ARMadeus distribution, but not currently on ARMadeus board.

Soldering

AS1531 chip use a SPI bus to communicate with the microprocessor, then to use it on APFx board it must be solder on a SPI bus. For example on APF27-Dev board it can be soldered on SPI3 bus, that can be found on connector J8.

Soldering schema for SPI3 APF27-dev
J8 pin AS1531 pin
SD1_D0_SPI3_MISO DOUT
SD1_D3_SPI3_SS CSN
SD1_CMD_SPI3_MOSI DIN
SP1_CLK_SPI3_SCLK SCLK

Driver

The driver is included in ARMadeus distribution, then to use it, select it :

[  ] $ make linux26-menuconfig
Device Drivers  --->
    <M> Hardware Monitoring support  --->
        <M>   Austria Microsystems AS1531 Analog to Digital Converter

If the chip is plugged on SPI3 don't forget to select SPI3 and platform module :

Device Drivers  --->
    [*] SPI support  --->
        [*]     CSPI3
Device Drivers  --->
    Armadeus specific drivers  --->
        <M>   AS1531 platform data


Then compile the distribution :

[  ] $ make linux26;make

Use it

modprobe

To use the ADC first load module hwmon and as1531 (if configured as module) :

[ ] $ modprobe hwmon
[ ] $ modprobe as1531

If platform datas are declared under a module it must be loaded to. If platform data are declared under linux platform file, nothing to do.

read values

If chip is plugged on SPI3, adc input file will be found under directory :

# cd /sys/bus/spi/devices/spi2.0/
# ls
driver     in1_input  in4_input  in7_input  modalias   subsystem
hwmon      in2_input  in5_input  in_max     name       uevent
in0_input  in3_input  in6_input  in_min     power

or:

# cd /sys/class/hwmon/hwmon0/device/
# ls
driver     in1_input  in4_input  in7_input  modalias   subsystem
hwmon      in2_input  in5_input  in_max     name       uevent
in0_input  in3_input  in6_input  in_min     power

To read adc value just «cat» un input :

# cat in5_input 
3083

Maximum value to be read can be found