ADC 使用 AIO-1688JD4 开发板上并没有引出外部的 ADC, 但 Core-1688JD4 的金手指引出 了多路 ADC, 在控制台下运行 ADC 读写命令或者自行在内核态或者用户态编写 ADC 读写程序,就 可以对 ADC 进行输入输出操作。 用户层通过访问 IIO 接口来实现 5 通道,12-bit ADC 的触发、采样等操作。 参考电压为 1.5v ref adc 引脚和 sysfs 文件对应关系如下: adc1 对应 sysfs 文件为 in_voltage1_raw adc2 对应 sysfs 文件为 in_voltage2_raw adc3 对应 sysfs 文件为 in_voltage3_raw sar0 对应 sysfs 文件为 in_voltage4_raw sar1 对应 sysfs 文件为 in_voltage5_raw 电压值计算公式:vol = val * 1500 / 4096,单位:mV 操作示例 ADC 操作命令示例 指定 ADC 通道 1~5, 此例为 ADC1: echo 1 > /sys/bus/iio/devices/iio:device0/in_voltage1_raw 读出刚才指定的 ADC channel 值: cat /sys/bus/iio/devices/iio:device0/in_voltage1_raw 用户态 ADC 读取操作程序示例 参考如下: fd = open("/sys/bus/iio/devices/iio:device0/in_voltage1_raw", O_RDWR| O_NOCTTY|O_NDELAY); if (fd < 0) printf("open adc err!\n"); write(fd, "1", 1); lseek(fd, -1, SEEK_CUR); char buffer[512] = {0}; int len = 0; unsigned int adc_value = 0; len = read(fd, buffer, 5); if (len != 0) { printf("read buf: %s\n", buffer); adc_value= atoi(buffer); printf("adc value is %d\n", adc_value); } write(fd, "0", 1); close(fd);