历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2019年09月06日 | STM32 环境光传感器ADC采样

发布者:本人在 来源: eefocus关键字:STM32  环境光传感器  ADC采样 手机看文章 扫描二维码
随时随地手机看文章

一、STM32 环境光传感器模块


TEMT60000光传感器把光信号转变成为电信号,PA作为模拟输入,接收光传感器的电压,


将PA4设置成ADC


二、Stm32CubeMx配置ADC

打开PA4并使能ADC1通道9

配置完ADC之后,GPIO模式自动为模数转换模式

使能外部高速时钟

配置时钟

不要让ADC时钟超过14MHz,否则可能不准


ADC参数设置

配置USART1为异步模式

PA10和PA9被使能作为串口的收发端


生成代码


三、Keil编写程序

在uart.c中做printf、scanf的重定向以便于串口通信


#include

 

#ifdef __GNUC__

 

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

 

#else

 

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

 

#endif

 

PUTCHAR_PROTOTYPE

 

{

 

HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);

 

return ch;

 

}

 

int fgetc(FILE *f)

 

{

 

    uint8_t ch;

 

    HAL_UART_Receive(&huart1,(uint8_t *)&ch,1,0xfff);

 

    return ch;

 

}

 


在adc.c中有ADC的初始化void MX_ADC1_Init(void),和在STM32CubeMx配置的一样,ADC的配置也可在这修改


定义变量用于保存ADC采样值


int ADC_value = 0 ;

 

float voltage = 0 ;

 


在while(1)里


 /* USER CODE BEGIN WHILE */

 

  while (1)

 

  {

 

HAL_ADC_Start(&hadc1); //开始ADC转换

 

HAL_ADC_PollForConversion(&hadc1,100); //等待ADC转换完成,第二个参数表示超时时间,单位ms

 

ADC_value = HAL_ADC_GetValue(&hadc1);//获取ADC采样值

 

voltage = (float)(value *3.3/4096);//ADC采样值到电压的转换

 

printf("Light voltage:%.3frn",voltage);

 

HAL_Delay(1000);

 

    /* USER CODE END WHILE */

 

 

 

    /* USER CODE BEGIN 3 */

 

  }

 

  /* USER CODE END 3 */

 

ADC采样值到电压的转换:


ADC12位分辨率,也就是说ADC模块读到的数据是12位的数据。。二进制的12位可表示0-4095个数。 电压值 = ADC采样值*(3.3V/4096)

右键我的电脑选择管理,进入计算机管理界面,在设备管理器的端口可以看到串口的端口为COM4

远程连接工具串口连接要选择一样的参数



然后就可以看到串口打印出来的电压值


用手机手电筒照到环境光传感器可以看到电压变化

关键字:STM32  环境光传感器  ADC采样 引用地址:STM32 环境光传感器ADC采样

上一篇:STM32L4系列 ADC基本原理
下一篇:stm32f429 中通过基本定时器中断控制LED灯亮一秒、灭一秒

推荐阅读

背景:最近一直在学习HAL库,总结下STM32中HAL库的GPIO相关函数知识点。内容:在stm32l152xb.h头文件中定义了GPIO的相关寄存器,下面讲述的GPIO函数将会调用到这些寄存器。寄存器的结构体定义如下图:下面解析stm32l1xx_hal_gpio.c文件中一些常用的GPIO函数:(1)GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)函数G...
如今,全世界已经有四分之一的人口居住在城市里。相关数据表明,到了2050年,全球人口预计会达到100亿,城市人口比例将会超过三分之二。为了应对人口密集化问题,如何充分利用城市的住房空间,就成了一个日益重要的问题,这也正是创企Ori的定位。Ori设计的机器家具产品能根据需要进行移动或“隐藏”。公司的核心目标就是帮助屋主、建筑公司和设计师更好地...
三星即将于未来几个月内发布 Galaxy S20 系列智能机的 Fan Edition(简称)版本,并且早前已有一些有关该机的爆料。今天,WinFuture 已经抢先公布了 Galaxy S20 FE 的完整规格。可知其将提供 4G / 5G 两个细分型号,最大不同就是分别采用了 Exynos 990 / 骁龙 865 芯片组。两个版本都支持 120Hz 刷新率和后置三摄  至少...
  电路故障测试仪用于35KV以下各种不同截面的铝芯、铜芯电力电缆、高频同轴电缆及市话电缆的低阻、短路、开路及各种高阻故障的探测,电缆故障测试仪厂家是保障安全供电的必备设备和电缆生产、维护工作者的得力助手。  如何辨别电缆故障测试仪高、低压?  1、首先要判断电缆故障是高阻还是低阻还是是接地,可以根据这个条件采用不同的测试方法。可以...

史海拾趣

问答坊 | AI 解惑

GPS漂移现象的解决算法

我的GPS出现单点漂移和线性漂移,大家有没有好的算法啊! [ 本帖最后由 daicheng 于 2010-7-7 12:18 编辑 ]…

查看全部问答∨

电子项目合作群QQ:86455552

电子项目合作群QQ:86455552 本人从事电子设计工作10年以上经验,有扎实的模拟及数字电路 专业知识。有一定EMC、ESD、安规知识;懂射频、开关电源的设 计;会C51、PIC、MSP430、ARM等系列单片机编程。有验钞机, 按摩椅,麻将机,工业仪表、工控 ...…

查看全部问答∨

送MM礼品 可编程闪字风扇

还在为送MM的礼品而担心吗  ___花___已不再新兴了 呵呵 只要22元 就为送MM的礼品就搞定! 这是一款新潮的USB或放入3个7号电池双供电实用美观的闪字风扇,不需要电脑可以自由编写内容,彰显你的个性,风扇转动时,编辑的字符会转动,内容 ...…

查看全部问答∨

手机模块资料大全。

常见手机模块资料:TC35,MC55,GTM900.…

查看全部问答∨

wince sysgen的问题

我修改了一个cpu的配置文件mainstoneii.inc然后再public的csp下和platform的common和bsp下都用了build -c来编译,但是我发现无论我怎么改里面被调用到的问件,重新编译后配置内存的那个寄存器的置还是我没有改过的  这是为什么呢…

查看全部问答∨

(高手请进)如何修改代码段的代码的内容?

使用keil写单片机程序时,在程序运行阶段是不允许修改code段中的内容的,但是,我现在想实现动态加载模块的功能,需要在程序运行的时候修改code段的内容.    请问有什么办法在程序运行期间修改code段的内容?         ...…

查看全部问答∨

请问Windows Embedded CE 6.0 为什么只有评估版?

我在网上到处找Windows Embedded CE 6.0的正式版,但是没有。全都是评估版。请问各位哪里有正式版下载?谢谢。…

查看全部问答∨

工业交换机和市场上见到的交换机有什么不同?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata   工业交换机和市场上见到的交换机有什么不同, …

查看全部问答∨

微波物位开关

谁做过微波物位开关?…

查看全部问答∨

关于APB1总线上设备的时钟问题?

看STM32的资料上写着APB1总线上的设备最高可以到36MHz,可是仿真的时候显示为72MHz,用示波器看也没发现问题,难道器件手册上写错了????谁知道是为什么?附件为仿真截图。 下载 (276.17 KB) 2010-11-17 10:57 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved