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

char iiotype[16][32] = {
                'in_voltage1_raw',
                'in_voltage2_raw',
        };

// return = 0: voltage value from AIN1, unit: mV
        // < 0: failed
        int read_AIN1(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[1]);
                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;

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

// read AIN2
                ret = read_AIN2(&fvalue);
                if(ret < 0)
                {
                        return ret;
                }
    
        }

adc 测量子系统的更多相关文章

  1. 利用过采样技术提高ADC测量微弱信号时的分辨率

    1. 引言 随着科学技术的发展,人们对宏观和微观世界逐步了解,越来越多领域(物理学.化学.天文学.军事雷达.地震学.生物医学等)的微弱信号需要被检测,例如:弱磁.弱光.微震动.小位移.心电.脑电等[1 ...

  2. STM32应用实例十四:利用光敏二极管实现光度测量

    最近我们在开发臭氧发生器时,需要监测生成的臭氧的浓度,于是想到使用光度计来测量.因为不同浓度的臭氧对管的吸收作用是不相同的,于是检测光照强度的变化就可以得到相应的浓度数据. 1.硬件设计 此次光照度检 ...

  3. STM32之ADC(内部基准电压,参考电压)

    转 STM32内部参照电压VREFIN的使用 https://blog.csdn.net/uncle_guo/article/details/50625660 每个STM32芯片都有一个内部的参照电压 ...

  4. STM32F103之ADC学习记录

    1.问题 1)10位ADC的误差是多少? 首先要分清分辨率与精度的区别. 10cm的尺子,有100个等分刻度,则该尺子的分辨率为1mm. 但不能说这把尺子的精度是1mm. 在冬天,尺子会热胀冷缩,依然 ...

  5. linux 触摸屏驱动

    目录 linux 触摸屏驱动 输入子系统怎么写? 触摸屏事件 事件分类 事件设置 硬件配置 设计思路 完整程序 测试 ts_lib 使用 问题小结 title: linux 触摸屏驱动 tags: l ...

  6. 【HBase学习】Apache HBase项目简介

    原创声明:转载请注明作者和原始链接 http://www.cnblogs.com/zhangningbo/p/4068957.html       英文原版:http://hbase.apache.o ...

  7. STM32内置参照电压的使用(转)

    源:STM32内置参照电压的使用 每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17. 根据数据手册中的数据,这个参照电压的典型值是1.20V,最小 ...

  8. 64脚和小于64脚的STM32进行AD时注意,参照电源处理方法(转)

    源:64脚和小于64脚的STM32进行AD时注意,参照电源处理方法 请注意,ADC_IN17上没有内部基准,将其说成基准电压概念不对. 所以横线以下的理解不对,如果将其做为参考,则其电压假定按1.2V ...

  9. 没有绝对安全的系统:写在AES 256破解之后

    NULL 在理论上,理论和实践是一致的.在实践中,呵呵. ——(应该是)爱因斯坦(说的) (INFO:本文中不会出现公式,请放心阅读) AES 256被破解了? 对于TLNR(Too Long, No ...

随机推荐

  1. Microsoft.ACE.OLEDB.12.0 及其在 MSSQL中的使用

    1.Microsoft.ACE.OLEDB.12.0 简介 就是一个数据访问接口,用于在office文件和非office应用程序间传输数据.例如 Microsoft Office Access 201 ...

  2. [转]python中@classmethod @staticmethod区别

    Python中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): prin ...

  3. activiti排他网关

    /*启动流程实例*可以在启动流程时把所有流程变量设置好*/@Test public void startProcessInstance(){ //流程定义key String processDefin ...

  4. jQuery学习笔记(jquery.form插件)

    官网: http://malsup.com/jquery/form/ jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Fo ...

  5. Android Manifest.xml文件的结构及作用

    原文链接:http://android.eoe.cn/topic/android_sdk 每一个应用程序在工程的根目录下必须要有一个AndroidManifest.xml文件(一定要用这个名称).这个 ...

  6. eclipse下SVN subclipse插件

    本文目的 让未使用过版本控制器软件或者未使用过subversion软件的人员尽快上手. subversion的使用技巧很多,这里只总结了最小使用集,即主要的基本功能,能够用来应付日常工作. 因此不涉及 ...

  7. JS验证邮箱格式是否正确 实例代码

    如何用js验证邮箱格式是否正确?分享一个例子.代码: /* *验证邮箱格式是否正确 *参数strEmail,需要验证的邮箱 */ function chkEmail(strEmail) { if (! ...

  8. mybatis 多数据源

    <environments default="development"> <environment id="development"> ...

  9. [svc]Linux vmstat命令实战详解

    vmstat输出 注:是cpu 内存 磁盘 虚拟内存交换情况 io读写情况 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存 ...

  10. angular中的jqLite所包含的jquery API

    Angular本身包含了一个叫做jqLite的可兼容性库. 使用过的angular.element()方法就返回一个jqLite对象,  jqLite是jQuery库的子集,它 允许Angular以跨 ...