202 lines
3.8 KiB
C
202 lines
3.8 KiB
C
|
|
#ifndef _HAL_ADC_H_
|
||
|
|
#define _HAL_ADC_H_
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief ADC ioctl_cmd type
|
||
|
|
*/
|
||
|
|
enum adc_ioctl_cmd {
|
||
|
|
ADC_IOCTL_SET_REF_TMP,
|
||
|
|
ADC_IOCTL_GET_VREF,
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief ADC irq_flag type
|
||
|
|
*/
|
||
|
|
enum adc_irq_flag {
|
||
|
|
|
||
|
|
/*! Compatible version: V0;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
ADC_IRQ_FLAG_SAMPLE_DONE = BIT(0),
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/* User interrupt handle */
|
||
|
|
typedef void (*adc_irq_hdl)(uint32 irq, uint32 channel, uint32 irq_data);
|
||
|
|
|
||
|
|
|
||
|
|
/* ADC api for user */
|
||
|
|
struct adc_device {
|
||
|
|
struct dev_obj dev;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
struct adc_hal_ops{
|
||
|
|
struct devobj_ops ops;
|
||
|
|
int32(*open)(struct adc_device *adc);
|
||
|
|
int32(*close)(struct adc_device *adc);
|
||
|
|
int32(*add_channel)(struct adc_device *adc, uint32 channel);
|
||
|
|
int32(*delete_channel)(struct adc_device *adc, uint32 channel);
|
||
|
|
int32(*get_value)(struct adc_device *adc, uint32 channel, uint32 *raw_data);
|
||
|
|
int32(*ioctl)(struct adc_device *adc, enum adc_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
|
||
|
|
int32(*request_irq)(struct adc_device *adc, enum adc_irq_flag irq_flag, adc_irq_hdl irq_hdl, uint32 irq_data);
|
||
|
|
int32(*release_irq)(struct adc_device *adc, enum adc_irq_flag irq_flag);
|
||
|
|
};
|
||
|
|
|
||
|
|
/* ADC API functions */
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_open
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_open(struct adc_device *adc);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_close
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_close(struct adc_device *adc);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_add_channel
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_add_channel(struct adc_device *adc, uint32 channel);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_delete_channel
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_delete_channel(struct adc_device *adc, uint32 channel);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_get_value
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_get_value(struct adc_device *adc, uint32 channel, uint32 *raw_data);
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_ioctl
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_ioctl(struct adc_device *adc, enum adc_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_request_irq
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_request_irq(struct adc_device *adc, enum adc_irq_flag irq_flag, adc_irq_hdl irq_hdl, uint32 irq_data);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief adc_release_irq
|
||
|
|
*
|
||
|
|
* @Compatible version: V0;
|
||
|
|
*
|
||
|
|
* @note .
|
||
|
|
*
|
||
|
|
* @param adc The address of adc device in the RTOS.
|
||
|
|
* @param .
|
||
|
|
* @param .
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
* - RET_OK Success
|
||
|
|
* - RET_ERR Fail
|
||
|
|
*/
|
||
|
|
int32 adc_release_irq(struct adc_device *adc, enum adc_irq_flag irq_flag);
|
||
|
|
|
||
|
|
|
||
|
|
int32 adc_get_vref(struct adc_device *adc, float *vref);
|
||
|
|
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
#endif
|