DA1458x的ADC是10位的,引脚是PORT0的PIN0、PIN1、PIN2、PIN3.

1.引脚定义,我们用PORT0的PIN0

#define ADC_PORT        GPIO_PORT_0
#define ADC_PIN            GPIO_PIN_0

2.引脚初始化,还是添加在periph_setup.c里的void set_pad_functions(void)里。

GPIO_ConfigurePin( ADC_PORT, ADC_PIN, INPUT, PID_ADC, false );

3.ADC初始化

调用这个api,void adc_init(uint16_t mode, uint16_t sign, uint16_t attn ).

mode:有两种,差分模式,单端模式

sign  :0 = Default, GP_ADC_SIGN(0x0400) = Conversion with opposite sign at input and output to cancel out the internal offset of the ADC and low-frequency.

这是官方SDK里对第二个参数的解释,一般用GP_ADC_SIGN。

attn  :0 = attenuation x1, GP_ADC_ATTN3X(0x0002) = attenuation x3.

第三个参数是设置ADC输入衰减倍数的,有两种,不衰减或者衰减三倍。这里需要说明一点,DA1458x的ADC的参考电压是1.2V,所以如果ADC的输入电压大于1.2V的时候,只能设置为三倍衰减输入。

示例如下

adc_init(GP_ADC_SE,GP_ADC_SIGN,GP_ADC_ATTN3X);

把这个初始化放在periph_setup.c里的void periph_init(void)里,不用考虑释放ADC,休眠的时候不会带来功耗的。

4.ADC使能

调用adc_enable_channel()来进行初始化,

示例如下

adc_enable_channel(ADC_CHANNEL_P00);

5.ADC采样

unsigned int adc_result = 0;

adc_result = adc_get_sample();

6.将ADC采样结果转换为电压

先定义几个计算时会用到的值

#define ADC_RESOLUTION      1023

#define ADC_ATTENUATION    3

#define ADC_VOLTAGE_REFER  1200  //mv

unsigned int voltage  = 0;

voltage = (unsigned int)((float)(adc_result  * ADC_ATTENUATION * ADC_VOLTAGE_REFER) / ADC_RESOLUTION);

7.补充一点

当使用多个ADC通道时,在读取某个通道的ADC采样值时,要先使能那个通道,然后读数,再使能下一个通道,读下一个通道的ADC采样值。

下面以两个通道举例

adc_enable_channel(ADC_CHANNEL_P00);

adc_result = adc_get_sample();       //读取通道0的ADC

adc_enable_channel(ADC_CHANNEL_P01);

adc_result = adc_get_sample();       //读取通道1的ADC

DA1458x使用之第四篇——ADC相关推荐

  1. 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第四篇)飞行特性

    基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第四篇)飞行特性 自动起飞 固定翼飞机可以自动发射多种类型的飞机.下面的说明将教你如何设置你的任务 ...

  2. NeurIPS提前看 | 四篇论文,一窥元学习的最新研究进展

    2019 年,NeurIPS 接受与元学习相关的研究论文约有 20 余篇.元学习(Meta-Learning)是近几年的研究热点,其目的是基于少量无标签数据实现快速有效的学习.本文对本次接收的元学习论 ...

  3. spring之旅第四篇-注解配置详解

    spring之旅第四篇-注解配置详解 一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会 ...

  4. 深入理解javascript作用域系列第四篇——块作用域

    前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀.简洁的 ...

  5. android 测试工具,Android开源项目第四篇:开发及测试工具篇

    本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...

  6. Python之路【第十四篇】:AngularJS --暂无内容-待更新

    Python之路[第十四篇]:AngularJS --暂无内容-待更新 转载于:https://www.cnblogs.com/weiman3389/p/6224181.html

  7. 最简单人工智能python_Python人工智能之路 - 第四篇 : jieba gensim 最好别分家之最简单的相似度实现...

    简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字",也有可能是"你是谁","你叫啥"之类的,这就引出了人工智能 ...

  8. VULKAN学习笔记-inter教学四篇

    VULKAN学习笔记-inter教学四篇 --交换链相关函数:实例层 vkCreateWin32SurfaceKHR vkDestroySurfaceKHR vkGetPhysicalDeviceSu ...

  9. 【论文相关】盘点AAAI2020中的四篇推荐系统好文

    AAAI中推荐系统的文章并不多,目之所及处仅有四篇.内容上覆盖了评论推荐.多目标推荐以及图神经网络等话题. 本文基于AAAI中的这四篇推荐系统论文,展开瞅一瞅它们都讲了些什么. 第一篇文章:可解释评论 ...

最新文章

  1. su oracle : 只切换用户,而不切换环境;就是说切到oracle用户后,使用的依旧是root的环境。 su - oracle :同时切换用户和环境
  2. linux管道阻塞代码,linux中的管道
  3. 微信地图 leaflet 腾讯地图
  4. ecshop pages.lbi.php,关于Ecshop pages.lbi.php Xss漏洞的修复
  5. Spring+SpringMVC+Mybatis 整合入门
  6. 嵌入式linux的学习笔记-pipe管道(二)
  7. Nginx-1.18.0主函数main思维导图(第一版)
  8. Java自带工具包StringUtils包含方法
  9. Request header field mytoken is not allowed by Access-Control-Allow-Headers in preflight (请求头设置问题)
  10. Linux安装log4cpp
  11. 移动支付新趋势:短信支付「Pay by Text」
  12. 苹果中国官网新增蚂蚁花呗 24 期分期免息服务
  13. eclipse简单的中英文切换,觉大多数的版本都可以
  14. 毛玻璃 / 玻璃拟态 处理 backdrop-filter 兼容性问题
  15. 旷世科技面试——CV岗/后端开发
  16. Python输出[m,n]既能被3整除又能被7整除的数的个数
  17. 中文分句,处理双引号
  18. window系统杀死进程方法
  19. svn多分支合并主干冲突 svn Working copy and merge source not ready for reintegration
  20. javascript代码前端debug调试方法

热门文章

  1. 【JZOJ 省选模拟】我的朋友们
  2. L - 非常可乐——HDU-1495(bfs->优化bfs->数论)
  3. 高等数学---行列式,矩阵
  4. 3-5年以上的Android原生开发如何深入进阶?高级工程师必须要掌握哪些?
  5. 高中在线计算机,高中计算机考试试题集-20210414015151.docx-原创力文档
  6. Spark调优、DataFrame API使用、大表Join、动态分区
  7. 2015/5/2日-月总结
  8. 【Unity3D 官方移动游戏优化指南】2.性能分析
  9. Laravel5常用命令行
  10. 管理计算机找不到应用程序,电脑联网时显示找不到应用程序怎么办