#include #include #include #include #include "asm-arm/arch-mxc/imx_adc.h" #define CNTS_PER_VOLT (2008.5/1.251) int main(int argc, char *argv[]) { printf("Opening %s...", IMX_ADC_DEVICE); int adc_fd = open(IMX_ADC_DEVICE, 0); if (!adc_fd) { printf("Error opening %s: %s\n", IMX_ADC_DEVICE, strerror(errno)); exit(-1); } else { printf("Success!\n"); } printf("initializing the ADC..."); int err = ioctl(adc_fd, IMX_ADC_INIT); if (err) { printf("Failure. %d.\n", err); exit(-1); } else { printf("Success!\n"); } int j; printf("starting conversion..."); int loops = 500; int results_per_loop = 4; for (j = 0; j < loops; j++) { struct t_adc_convert_param convert_param; convert_param.channel=GER_PURPOSE_ADC0; int i; for (i = 0; i < 16; i++) { convert_param.result[i] = 0xdead; } err = ioctl(adc_fd, IMX_ADC_CONVERT, &convert_param); if (err) { printf("Failure. %d.\n", err); } else { // printf("Success!\n"); for (i = 0; i < results_per_loop; i++) { printf("%05f\t", ((float)convert_param.result[i] / CNTS_PER_VOLT)); } printf("\n"); } usleep(1000*100); } err = close(adc_fd); if (err) { printf("Error closing %s, fd was %d\n", IMX_ADC_DEVICE, adc_fd); exit(-1); } }