SAR control
1. Overview of SAR control
The SAR driver provides ioctl interface for users to initialize SAR and get SAR_ADC values.
2.SAR device node
“/dev/sar”
3.Include files
mdrv_sar_io.h
4.The SAR IOCTL command
IOCTL command | Parameter | Description |
---|---|---|
IOCTL_SAR_INIT | NULL | initialize |
IOCTL_SAR_SET_CHANNEL_READ_VALUE | typedef struct { int channel_value; //[IN]int adc_value; //[OUT] } SAR_ADC_CONFIG_READ; channel_value: sar channel number(possible value: 0 or 1) adc_value: sar adc value | Get sar adc value |
5.example
#include <stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<errno.h>
#include <sys/ioctl.h>
#include "mdrv_sar_io.h"
int main(void)
{
int i;
SAR_ADC_CONFIG_READ adcCfg;
adcCfg.channel_value = 0; //Pay attention to:PAD_SAR_GPIO0 = 0 PAD_SAR_GPIO1 = 1 PAD_SAR_GPIO2 = 2
int fd = open("/dev/sar", O_WRONLY);
if(fd == -1) {
int err = errno;
rintf("\n!!! FAILED to open /dev/sar, errno: %d %s\n", err, strerror(err));
return -1;
}
if (ioctl(fd, IOCTL_SAR_INIT, NULL) < 0) {
int err = errno;
printf("\n!!! IOCTL_SAR_INIT FAILED, errno: %d, %s\n", err, strerror(err));
}
for (i=0; i < 100; i++)
{
if (ioctl(fd, IOCTL_SAR_SET_CHANNEL_READ_VALUE, &adcCfg) < 0) {
int err = errno;
printf("\n!!! IOCTL_SAR_SET_CHANNEL_READ_VALUE FAILED, errno: %d, %s\n", err,
strerror(err));
}
else {
printf("SAR: get value %d", adcCfg.adc_value);
}
usleep(100000);
}
}
文档更新时间: 2021-03-18 11:40 作者:Aeeditor