#include <stdio.h>
        #include <stdlib.h>
        #include <fcntl.h>
        #include <unistd.h>
        #include <math.h>

char iiotype[16][32] = {
                ''in_voltage0_raw'',
                'in_voltage1_raw',
                'in_voltage2_raw',
                'in_voltage3_raw',
                'in_voltage4_raw',
                'in_voltage5_raw',
                'in_voltage6_raw',
                'in_voltage7_raw'
    };

// return = 0: voltage value from AIN0, unit: mV
        // < 0: failed
        int read_AIN0(float *fvoltage)
        {
                int value, ret = 0;
                char filename[80];
                FILE *fp;
                char buf[20];

sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[0]);
                fp = fopen(filename, 'rt' );
                if( fp==NULL )
                {
                        printf('open %s fail!\n', filename);
                        *fvoltage = 0.0;
                        ret = -1;
                        return ret;
                }
                fread( buf, 1, sizeof(buf), fp );
                fclose(fp);
        
                // convert to integer
                sscanf( buf, '%d', &value );
                *fvoltage = 0.8 * value;
                return ret;
        }

// return = 0: voltage value from AIN2, unit: mV
        // < 0: failed
        int read_AIN2(float *fvoltage)
        {
                int value, ret = 0;
                char filename[80];
                FILE *fp;
                char buf[20];

sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[2]);
                fp = fopen(filename, 'rt' );
                if( fp==NULL )
                {
                        printf('open %s fail!\n', filename);
                        *fvoltage = 0.0;
                        ret = -1;
                        return ret;
                }
                fread( buf, 1, sizeof(buf), fp );
                fclose(fp);

// convert to integer
                sscanf( buf, '%d', &value );
                *fvoltage = 0.8 * value;
                return ret;
        }

   // return = 0: voltage value from AIN3, unit: mV
        // < 0: failed
        int read_AIN3(float *fvoltage)
        {
                int value, ret = 0;
                char filename[80];
                FILE *fp;
                char buf[20];

sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[3]);
                fp = fopen(filename, 'rt' );
                if( fp==NULL )
                {
                        printf('open %s fail!\n', filename);
                        *fvoltage = 0.0;
                        ret = -1;
                        return ret;
                }
                fread( buf, 1, sizeof(buf), fp );
                fclose(fp);

// convert to integer
                sscanf( buf, '%d', &value );
                *fvoltage = 0.8 * value;
                return ret;
        }

// return = 0: voltage value from AIN4, unit: mV
        // < 0: failed
        int read_AIN4(float *fvoltage)
        {
                int value, ret = 0;
                char filename[80];
                FILE *fp;
                char buf[20];

sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[4]);
                fp = fopen(filename, 'rt' );
                if( fp==NULL )
                {
                        printf('open %s fail!\n', filename);
                        *fvoltage = 0.0;
                        ret = -1;
                        return ret;
                }
                fread( buf, 1, sizeof(buf), fp );
                fclose(fp);

// convert to integer
                sscanf( buf, '%d', &value );
                *fvoltage = 0.8 * value;
                return ret;
        }

// return = 0: voltage value from AIN5, unit: mV
        // < 0: failed
        int read_AIN5(float *fvoltage)
        {
                int value, ret = 0;
                char filename[80];
                FILE *fp;
                char buf[20];

sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[5]);
                fp = fopen(filename, 'rt' );
                if( fp==NULL )
                {
                        printf('open %s fail!\n', filename);
                        *fvoltage = 0.0;
                        ret = -1;
                        return ret;
                }
                fread( buf, 1, sizeof(buf), fp );
                fclose(fp);

// convert to integer
                sscanf( buf, '%d', &value );
                *fvoltage = 0.8 * value;
                return ret;
        }

int main(int argc, char** argv)
        {
                int ret = 0;
                float fvalue;

printf('A5 IIO AD test v2.0\n');

// read AIN1
                ret = read_AIN0(&fvalue);
                if(ret < 0)
                {
                        return ret;
                }
                printf('AIN1 = %.2f mV\n', fvalue);

// read AIN2
                ret = read_AIN2(&fvalue);
                if(ret < 0)
                {
                        return ret;
                }
                printf('AIN2 = %.2f mV\n', fvalue);

// read AIN3
                ret = read_AIN3(&fvalue);
                if(ret < 0)
                {
                        return ret;
                }
                printf('AIN3 = %.2f mV\n', fvalue);

// read AIN4
                ret = read_AIN4(&fvalue);
                if(ret < 0)
                {
                        return ret;
                }
                printf('AIN4 = %.2f mV\n', fvalue);

// read AIN5
                ret = read_AIN5(&fvalue);
                if(ret < 0)
                {
                        return ret;
                }
                printf('AIN5 = %.2f mV\n', fvalue);
              
                return ret;
        }

iio adc转换应用编写的更多相关文章

  1. S5PV210 ADC转换

    第一节 S5PV210的ADCS5PV210的ADC可支持10bit和12bit,它支持10路输入,然后将输入的模拟的信号转换为10bit或者12bit的二进制数字信号.在5MHz的时钟下,最大转换速 ...

  2. adc转换原理

    模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...

  3. stm32片上ADC转换实验

    原理图所示: BAT_DET 接到PB0 引脚,VSYS 是直流3.7V的电压.再来看下103的adc转换和引脚GPIO的关系 我们直接选用ADC1 根据上表格只能使用通道8 下面给我常用的ADC1寄 ...

  4. 007_STM32程序移植之_多通道ADC转换

    1. 测试环境:STM32C8T6 2. 测试:使用DMA进行多通道ADC转换 3. 描述:用 ADC 连续采集 12 路模拟信号,并由 DMA 传输到内存.ADC 配置为扫描 并且连续转换模式,AD ...

  5. 电赛菜鸟营培训(四)——STM32F103CB之ADC转换

    一.ADC概念 实现模拟信号转换成数字信号就是这样子= = 二.代码框架 #include "stm32f10x.h" void delay(u32 kk) { while(kk- ...

  6. ADC转换的分辨率

    分辨率是指ADC能够分辨量化的最小信号的能力.分辨率用二进制位数表示.例如对一个10位的ADC,其所能分辨的最小量化电平为参考电平(满量程)的2的10次方分之一.也就是说分辨率越高,就能把满量程里的电 ...

  7. ADC 转换序列暂时难理解

    通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,程序出错的时候理论上都会产生一个co ...

  8. python"温度转换"实例编写

    介绍 实现华氏度和摄氏度之间的转换. 代码: #TempCovert.py TempStr = input("请输入带有符号的温度值") if TempStr[-1] in [&q ...

  9. 使用babel转换es6编写的程序

    配置文件 Babel的配置文件是.babelrc,存放在项目的根目录下.使用Babel的第一步,就是配置这个文件,这是必要的一步. 该文件用来设置转码规则和插件,基本格式如下. { "pre ...

随机推荐

  1. 【C++】int与string互转

    int转string(注:itoa不是标准函数,OJ平台可能不接受) ; ]; string str; sprintf(temp, "%d", n); str = temp; or ...

  2. Devexpress ASPxPivotGrid 按某列排序,以及把GrandTotal修改掉

    <div> <table width="100%" border="0" cellspacing="0" cellpadd ...

  3. SYS_数据访问权限Operation Unit和Ledger的访问设定(案例)

    2014-06-01 Created By BaoXinjian

  4. Google Guice之作用域

    默认情况下,Guice获取一个实例时.每次都会返回一个新的对象. 这个行为能够通过scopes进行配置.Scopes同意你复用实例: 应用整个生命周期(@Singleton),会话(@Session) ...

  5. 使用用户自定义类型作为map的key

    有时候我们想把用户自定义类型作为std::map的键值.方法一)最简单的方法就是实现该自定义类型的<操作符,代码如下:class Foo{public:    Foo(int num_)     ...

  6. python列表推导式详解 列表推导式详解 字典推导式 详解 集合推导式详解 嵌套列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  7. 读书笔记5基于matplotlib画图

    一.导入需要的模块 import numpy as np import matplotlib.pyplot as plt import seaborn as sns import scipy.stat ...

  8. php将session保存到数据库的类实例(php版本需要大于5.4)

    这里实现了一个把session存储到数据库的类,包括数据表的创建.类的使用.php的配置. 可以更好地进行用户控制管理. 做项目的时候,有一个需求,是要实现禁止一个账号两处登录.同时要统计当前在线用户 ...

  9. MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.

    一. 怎么更改数据库data存储目录:  1. 安装MYSQL. 2. 切换到 C:\Program Files\MySQL\MySQL Server 5.6 3. 新建my.ini. 加入如下配置: ...

  10. Bash编程的test和条件语句

    1.if语句一句条件判断结果选择执行路径.最简单的if-then句型: if command //如果command的退出状态为0,执行body then body fi 重点:if认为command ...