接口设计
5 Jul 2024
Read time: 2 minute(s)
函数原型 | static int aic_gpai_read_raw(struct iio_dev *iodev,struct iio_chan_spec const *chan,int *val, int *val2, long mask) |
---|---|
功能说明 | 读取一个 ADC 通道的当前数据 |
参数定义 | iodev - 指向一个 iio 设备 chan - 当前 ADC 通道的配置信息 val - 用于保存读取到的数据 val2 - 用于保存读取到的数据,用于和 val 做数据组合,部分 mask 类型需要 mask - 数据类型 |
返回值 | 0,成功。 < 0,失败 |
注意事项 | - |
Driver 层接口设计
以下接口是 GPAI 设备驱动框架的标准接口。
struct rt_adc_ops
{
rt_err_t (*enabled)(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled);
rt_err_t (*convert)(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value);
rt_uint8_t (*get_resolution)(struct rt_adc_device *device);
rt_int16_t (*get_vref) (struct rt_adc_device *device);
};
其中的 get_vref() 暂未支持。
函数原型 | rt_err_t drv_gpai_enabled(struct rt_adc_device *dev, rt_uint32_t ch, rt_bool_t enabled) |
---|---|
功能说明 | 使能一个 ADC 通道 |
参数定义 |
|
返回值 | 0,成功。 < 0,失败 |
注意事项 | - |
函数原型 | rt_err_t drv_gpai_convert(struct rt_adc_device *dev, rt_uint32_t ch, rt_uint32_t *value) |
---|---|
功能说明 | 读取一个 ADC 通道的当前数据 |
参数定义 |
|
返回值 | 0,成功。 < 0,失败 |
注意事项 | - |
函数原型 | rt_err_t drv_gpai_resolution(struct rt_adc_device *dev) |
---|---|
功能说明 | 获取 GPAI 控制器的采样精度 |
参数定义 | dev - 指向 ADC 设备 |
返回值 | 12,表示 12bit 的采样精度 |
注意事项 | - |
HAL 层接口设计
HAL 层的函数接口声明存放在 hal_gpai.h
中,主要接口有:
void aich_gpai_enable(int enable);
void aich_gpai_ch_enable(u32 ch, int enable);
int aich_gpai_ch_init(struct aic_gpai_ch *chan, u32 pclk);
irqreturn_t aich_gpai_isr(int irq, void *arg);
int aich_gpai_read(struct aic_gpai_ch *chan, u32 *val, u32 timeout);
s32 aich_gpai_data2vol(u16 data);
struct aic_gpai_ch *hal_gpai_ch_is_valid(u32 ch);
void hal_gpai_set_ch_num(u32 num);
void aich_gpai_status_show(struct aic_gpai_ch *chan);