环境:基于nuc980开发板测试ADC
一、Linux IIO介绍
Linux IIO(Industrial I/O)子系统是一个通用的框架,用于处理从各种传感器和ADC/DAC等模拟输入/输出设备中获取的数据。它提供了一种标准的方法来访问这些设备,并将它们的数据传递给用户空间应用程序。IIO子系统的核心是一个通用的驱动程序框架,它可以支持各种不同类型的传感器和ADC/DAC设备。IIO子系统还提供了一组用户空间库和工具,用于访问和配置IIO设备。
二、nuc980 ADC测试
原理图
Linux内核开启 IIO,配置选择如下:
使用内部参考电压 Internal AVDD 3.3V。
配置完成,编译烧录至开发板。
使用指令查看,如下图:
指令测试通道1,如下:
cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
分别连接到GND和3.3V,测试结果如下:
编写代码测试,测试代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define FILE_ADC_PATH "/sys/bus/iio/devices/iio:device0/in_voltage1_raw"
int main()
{
FILE *fd=NULL;
char strValue[5];
int value;
float adc;
while(1)
{
fd=fopen(FILE_ADC_PATH,"r");
fscanf(fd,"%s",strValue); //读端口的ADC值
printf("%s",strValue);
value=atoi(strValue);
adc=((float)value/4096.0)*3.3;
printf(" adc=%.4fV\n",adc);
fclose(fd);
sleep(1);
}
return 0;
}
测试结果:
三、其它
技术参考手册(NUC980 Series Technical Reference Manual):
欢迎关注公众号:嵌入式学习与实践