前言
根据测评计划,当前继续板子的外设测试,本次测试的是ADC功能,使用外部电源给芯片引脚供电。
硬件设计
HDG2L-IOT处理器引出8路12bits ADC模拟采集通道,位于扩展接口[J25]的bit3~10。
![image.png](//file.elecfans.com/web2/M00/89/64/poYBAGO5SZCANz9ZAAkZ7Z8xLdk120.png)
设置外部电源电压,板子芯片ADC采集范围为0~1.8V,需注意输入电压,使用芯片的ADC通道1进行测试,设置输入电压为1.324V,电流为0.3A,硬件连接:
![87D6F3687D1BB34D010C39EFFE5EB111.jpg](//file.elecfans.com/web2/M00/89/64/poYBAGO5Sx2ASEg2ACeuuuhLubw106.jpg)
软件设计
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int channel,times;
char cmd[128]={0};
FILE *stream = NULL;
char adc_v[1024] = {0};
if (argc != 2)
{
fprintf(stderr, "usage:adc_test channel\n");
return -1;
}
channel = atoi(argv[1]);
if ( channel < 0 || channel > 7 )
{
fprintf(stderr, "channel must be 0 ~ 7\n");
return -1;
}
snprintf(cmd, sizeof(cmd),"cat /sys/bus/iio/devices/iio\:device0/in_voltage%d_raw",channel);
for(times=0;times<100;times++)
{
stream = popen(cmd,"r");
fread(adc_v,1,sizeof(adc_v),stream);
pclose(stream);
printf("adc_channel%d: %s",channel,adc_v);
sleep(1);
}
return 0;
}
编译:
![image.png](//file.elecfans.com/web2/M00/89/66/poYBAGO5WI-ACFMPAACfE_9y7xk727.png)
生成可执行文件:
![image.png](//file.elecfans.com/web2/M00/89/66/poYBAGO5WQaADhctAAAtk7vk6gQ744.png)
通过SSH将可执行文件加载到开发中
![image.png](//file.elecfans.com/web2/M00/89/66/poYBAGO5WViAZ3G_AABXlQ8Dc8g421.png)
添加可执行文件权限:
![image.png](//file.elecfans.com/web2/M00/89/68/poYBAGO5YZWAckBsAAB_idy1cog162.png)
读取ADC的采样值:
![image.png](//file.elecfans.com/web2/M00/89/68/poYBAGO5YdqAFFOhAADbohgGN_c374.png)
采样值计算:
![image.png](//file.elecfans.com/web2/M00/89/EE/pYYBAGO5YkGAZTOSAAP0Vv2rDQA890.png)
总结
ADC测试已经完成,和万用表对比了下,如下所示:
![E067FF858B90C9AE47107073D341E8A2.jpg](//file.elecfans.com/web2/M00/89/68/poYBAGO5YziAO9c0ACNCzINebJI884.jpg)
|