我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

    

本文介绍X-CTR100控制器 AD转换接口的使用,采集模拟信号及芯片温度。

原理

处理器STM32F407具有3个ADC,12位逐次逼近型,具有19个ADC检测通道,可测量16个外部源、2个内部源和VBAT电压,最大转换速率为2.4MHz。

STM32F4芯片内部具有温度传感器,连接ADC1_IN16通道,通过ADC实现温度采集,温度传感器支持的温度范围-40~125度,精度±1.5℃。

X-CTR100通过扩展接口引出7个ADC采样通道,使用ADC1外设采样,可用于采集各种模拟传感器电压输出信号。

X-CTR100的ADC电源及参考电压VREF+和VDDA接3.3V,VSSA和VREF-接地,输入电压范围0~3.3V,详见原理图。

例程

本例程实现X-CTR100 ADC接口的模拟信号采样功能。

硬件说明

硬件资源:

  • 串口UART1
  • ADC接口(LJ、LK、LL、LM、LN、LO、LP)
  • 辅助ADC模拟源(自备),本文使用摇杆和光敏电阻作为模拟源

硬件连接:

使用MicroUSB数据线连接X-CTR100 COM接口。

ADC接口连接模拟输入源,如下图。

软件生态

X-SOFT软件生态,X-API文件如下。

ax_adc.c——X-CTR100板载ADC接口源文件

ax_adc.h——X-CTR100板载ADC接口头文件

ADC操作函数如下:

void AX_ADC_Init(void); //ADC初始化,包括温度传感器

uint16_t AX_ADC_GetRegData(uint8_t ch); //ADC获取转换数值(寄存器原始值)

float AX_ADC_GetVol(uint8_t ch); //ADC获取转换电压值

uint16_t AX_ADC_GetVol_X1000(uint8_t ch); //ADC获取转换电压值,数值扩大1000倍。例如1.8V输出为1800。

int16_t AX_ADC_GetICTemp_X100(void); //ADC获取片内温度传感器温度值

通道宏定义。

#define
AX_ADC_CH_J ((uint8_t)0x0A)     //对应X-CTR100左边J接口,STM32通道ADC10

#define
AX_ADC_CH_K ((uint8_t)0x0B)     //对应X-CTR100左边K接口,STM32通道ADC11

#define
AX_ADC_CH_L ((uint8_t)0x0C)     //对应X-CTR100左边L接口,STM32通道ADC12

#define
AX_ADC_CH_M ((uint8_t)0x0D)     //对应X-CTR100左边M接口,STM32通道ADC13

#define
AX_ADC_CH_N ((uint8_t)0x0E)     //对应X-CTR100左边N接口,STM32通道ADC14

#define
AX_ADC_CH_O ((uint8_t)0x0F)     //对应X-CTR100左边O接口,STM32通道ADC15

#define
AX_ADC_CH_P ((uint8_t)0x08)     //对应X-CTR100左边P接口,STM32通道ADC8

软件说明

本例程分三步。第一步,采集J通道数据三次,分别调用不同的函数,即显示寄存器值电压、实际电压(浮点型)、扩大1000倍整数电压三种形式。

第二步,采集芯片温度传感器一次。第三步,循环采集7个AD采样通道电压值,采样间隔为1S。

主程序。

int main(void)

{

    //X-CTR100初始化

    AX_Init(115200);

    printf("***X-CTR100 ADC采样例程***\r\n\r\n");

 

    //模块初始化及配置

    AX_ADC_Init();

 

    //X-API测试:采集J通道数据一次

    printf("*采集J通道数据测试 \r\n");

    printf("*通道J寄存器数值:%d \r\n", AX_ADC_GetRegData(AX_ADC_CH_J));

    printf("*通道J实际电压值:%f \r\n", AX_ADC_GetVol(AX_ADC_CH_J));

    printf("*通道J实际电压值X1000:%d \r\n\r\n", AX_ADC_GetVol_X1000(AX_ADC_CH_J));

 

    //X-API测试:采集控制器芯片温度

    printf("*采集控制器芯片温度测试 \r\n");

    printf("*IC温度值X100:%d \r\n\r\n", AX_ADC_GetICTemp_X100());

 

    //X-API测试:循环采集J-P 7个AD采样通道电压值

    printf("*循环采集7个AD采样通道电压值测试\r\n");

    printf("*注意:如果管脚悬空,采集的数值无实际意义 \r\n");

 

    while (1)

    {

        printf("*J=%d K=%d L=%d M=%d N=%d O=%d P=%d \r\n", AX_ADC_GetRegData(AX_ADC_CH_J),

            AX_ADC_GetRegData(AX_ADC_CH_K), AX_ADC_GetRegData(AX_ADC_CH_L),

            AX_ADC_GetRegData(AX_ADC_CH_M), AX_ADC_GetRegData(AX_ADC_CH_N),

            AX_ADC_GetRegData(AX_ADC_CH_O), AX_ADC_GetRegData(AX_ADC_CH_P));

        AX_Delayms(1000);

    }

}

本程序AX_ADC_Init()函数对GPIO对应7个通道、ADC1及片内温度传感器初始化,完成ADC初始化后,X-API关于ADC相关函数AX_ADC_XXX()均可以使用。

实现效果

运行效果如下图所示。

    

总结

通过本文学习,可以轻松掌握X-CTR100控制器 ADC采样的使用。

玩转X-CTR100 l STM32F4 l ADC 模拟数字转换的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  2. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  3. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  4. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  5. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  6. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  7. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  8. 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器如何开启ST ...

  9. 玩转X-CTR100 l STM32F4 l RNG硬件随机数发生器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 STM32F4硬件随 ...

随机推荐

  1. 筛选出sql 查询结果中 不包含某个字符

    select * from table1 where patindex('%关键字%' , aa) = 0 select * from table1 where charindex('关键字' , a ...

  2. POJ 1029 False coin

    http://poj.org/problem?id=1029 题意: 在一堆硬币中有一个假硬币,重量是重是轻不知道.每次称量多个硬币,并给出称量结果.判断依据题目给出的几次称量结果能否找出假硬币. 思 ...

  3. MongoVUE的Collections数据不显示的解决方法

    问题描述: 使用 mongoDB数据库, 数据添加成功了,使用命令行能查询出来,但在MongoVUE 中数据却不显示  (我使用的是 mongoDB 3.4 的版本) 原因:引擎问题,只要降到2.X版 ...

  4. python获取文件扩展名的方法

    主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧 import os.path def file_extension(path): ] print file_ex ...

  5. selenium_webdriver(python)获取元素属性值,浏览器窗口控制、网页前进后退,title/url打印

    <span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-s ...

  6. shell 命令行光标跳转快捷键和history的用法

    Ctrl+a: 跳到命令行首 Ctrl+e: 跳到命令行尾 Ctrl+u: 删除光标至命令行首的内容 Ctrl+k: 删除光标至命令行尾的内容 Ctrl+<- 跳到前一个单词首部 Ctrl+-& ...

  7. Codeforces 447C - DZY Loves Sequences

    447C - DZY Loves Sequences 思路:dp 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

  8. ngIf 和 template的结合使用

    前提: 当遇到 一个种情况,一个元素中既可以显示 一个字符串变量,也可以显示一个模板 实现: // html <span class="ant-alert-message" ...

  9. Rspec: everyday-rspec实操: 第8章DRY. (6个方法,其中3个方法好上手)

    Don't Repeat Yourself. • 把操作步骤提取到辅助模块中;✅ • 通过let复用测试中的实例变量;✅ • 把通用的设置移到共享的情景中;⚠️(不喜欢) • 在RSpec和rspec ...

  10. Confluence 连接到一 LDAP 目录,权限对本地用户组设置为只读

    https://www.cwiki.us/display/CONFLUENCEWIKI/Connecting+to+an+LDAP+Directory