1. 概述
本文介绍c/c++程序在AmLink平台上访问部分常用外设的方法。接口的支持情况跟固件版本有关,使用前请联系我们(support@temolin.com)确认
2. API
I2C接口
I2c访问的设备节点是/dev/i2c-n (n=0-3)。使用方法:
初始化:
fd =open(filename, O_RDWR);
ioctl(fd, I2C_SLAVE_FORCE, addr) //addr是7位slave地址
读数据:
read(fd,buf,len);
写数据:
write(fd,buf,len);
SPI接口
spi访问的设备节点是/dev/spidev0.2。使用方法:
初始化:
open(SPI_DEV, O_RDONLY);
ioctl(fd, SPI_IOC_WR_MODE, & mode); //mode=0-4
ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, & speed); //speed <20000000,单位Hz
数据传输:
struct spi_ioc_transfer transfer;
transfer.rx_buf = (unsigned long)rx_buffer; //接收数据存放的buffer,要求4字节对齐
transfer.tx_buf = (unsigned long)tx_buffer; //发送数据存放的buffer,要求4字节对齐
transfer.len = lenByte; //传输字节数
ioctl(fd, SPI_IOC_MESSAGE(1), & transfer) //之行后,.rx_buf里即是收到的数据
GPIO接口
Gpio 访问的设备节点主要在/sys/class/gpio/ 目录
以命令行设gpio42输出高为例:
adb shell
echo 42 > /sys/class/gpio/export
cd /sys/class/gpio/gpio42
echo out > direction //如果设输入:echo in > direction
echo 1 > value //如果读输入的值: cat value
客户的c程序可参考上面的做法,echo相当于写文件,cat相当于读文件
ADC接口
Adc 访问的设备节点是:/sys/class/mtk-adc-cali/mtk-adc-cali/AUXADC_read_channel12_uv
打开文件后直接读即可。