SAR使用参考
1. 概述¶
SAR口一共四个,10bit精度,获取到的值范围在0~0x3ff之间,参考电压为3.3V,即如果读到的值是0x1D2,得到的电压为0x1D2/0x3FF *3.3=1.5v左右。
2. 内核使用SAR¶
2.1. 初始化SAR口¶
先申明一下extern void ms_sar_hw_init (void )函数,再通过这个函数初始化SAR.
-
目的
初始化
-
语法
void ms_sar_hw_init ();
-
参数
表2-1
参数名称 描述 无 -
返回值
表2-2
返回值 描述 无
2.2. 取SAR值¶
先申明一下extern int ms_sar_get (int ch)函数,再通过这个函数读取sar口电平
-
目的
获取SAR口电平
-
语法
int ms_sar_get (int ch)
-
参数
表2-3
参数名称 描述 ch SAR 通道,值范围为0~3 -
返回值
表2-4
返回值 描述 int 当前SAR口的电平
3. 用户空间使用SAR¶
3.1. 概述¶
用户空间访问sar,通过IOCTL 的方式,首先open /dev/sar,通过IOCTL初始化SAR和读取电平。
3.2. IOCTL 初始化SAR¶
#define MS_SAR_INIT _IO(SARADC_IOC_MAGIC, 0) sar_fd= open("/dev/sar", /*O_RDONLY*/O_RDWR); ioctl(sar_fd, MS_SAR_INIT, 0);
3.3. IOCTL 读取SAR值¶
#define SARADC_IOC_MAGIC 'a' #define MS_SAR_SET_CHANNEL_READ_VALUE _IO(SARADC_IOC_MAGIC, 1) typedef struct { int channel_value; ////0\~3 int adc_value; ///读取到的值 }ADC_CONFIG_READ_ADC; stCfg.channel_value=0; ///SAR0 ioctl(sar_fd, MS_SAR_SET_CHANNEL_READ_VALUE, \&stCfg); printf("0: read stCfg.adc_value=:%x\n", stCfg.adc_value);