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