我在正常模式下读取 ADC 转换结果时遇到问题、即地址指针寄存器设置为0 (零)。 当我尝试读取结果时、只有第一个读数返回转换结果、之后的所有读数为零。 我阅读 ADC081C021数据表。 它表示在读取后、它将再次启动转换。 因此、我假设我可以继续读取它。
但是、如果我关闭该文件并为每次读取再次打开、它将返回 none-zero 结果。 假设是在正常模式(单次触发模式)下读取 ADC 的方法
我的 Linux env 使用 TI AM3357 和 Linux 内核4.14.96 (Linaro)、并使用 ADC081C021 进行电池监控。
这是我尝试读取 ADC 转换结果的代码。
char adcName[]="/sys/bus/iio/devices/iio:device0/in_volte_ray";
output_fd = open (adcName、O_RDWR);
if (output_fd < 0){
log (LL_INFO、"打开 ADC 失败\n");
pthread_exit (NULL);
}
对于(int i = 0;i < 10;i++)
{
/*读取 ADC */
日志(LL_INFO、"写入地址指针 REG \n");
addrPointerReg = conversion 结果;// conversion 结果为零
写入(output_fd、&addrPointerReg、sizeof (Address_Pointer_Reg));
int ret =读取(output_fd、&convisionResultReg、sizeof (conversion_Result_Register));
log (LL_INFO、"ADC 输出转换结果=%d ret =%d \n"、
convisionResultReg.convisionResult、RET);
conversionResultReg ={0}
}
Close (output_fd);
谢谢
-Tom