历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-09-06 来源:eefocus

一、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

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



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


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

推荐阅读

史海拾趣

HBControls公司的发展小趣事
如果以上检查均正常,但问题仍未解决,建议联系松下售后或专业维修人员进行检修。
厦门法拉(faratronic)公司的发展小趣事

FMI公司始终坚持以客户为中心的发展理念,致力于为客户提供定制化的频率控制解决方案。公司拥有一支专业的研发团队和完善的生产流程,能够根据客户的具体需求进行产品设计和生产。无论是标准产品还是定制产品,FMI都能确保高质量和快速交付。这种灵活的服务模式使得FMI在客户中树立了良好的口碑,并为公司赢得了更多的商业合作机会。

EPIGAP公司的发展小趣事

随着公司业务的不断拓展,EPIGAP公司意识到单靠自身力量难以应对日益复杂的市场环境。于是,公司开始积极寻求与产业链上下游企业的战略合作。通过与原材料供应商、代工厂商以及终端客户的紧密合作,EPIGAP公司实现了产业链的整合优化,提高了整体运营效率。这一战略不仅降低了公司的运营成本,还增强了公司的市场竞争力。

Carlisle Interconnect Components公司的发展小趣事

在追求经济效益的同时,Carlisle Interconnect Components公司也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,公司还积极参与社会公益事业,为社会做出贡献。这种负责任的态度不仅赢得了社会各界的认可,更为公司的长远发展奠定了坚实的基础。

这五个故事展示了Carlisle Interconnect Components公司在电子行业中的发展历程和取得的成就。通过不断创新、品质管理、技术研发、战略合作以及履行社会责任等措施,公司逐渐在电子连接器领域树立起了自己的品牌形象和市场地位。

泰科天润(GPT)公司的发展小趣事

Carlisle Interconnect Components公司自创立之初,便以创新和突破为核心竞争力。在电子连接器领域,公司凭借其深厚的技术积累和敏锐的市场洞察力,成功研发出一系列具有高性能和稳定性的连接器产品。这些产品不仅满足了市场对高效、可靠连接的需求,更在多个关键领域实现了技术突破,为公司赢得了市场的广泛认可。

Anatech Electronics Inc公司的发展小趣事

在电子行业快速发展的背景下,Carlisle Interconnect Components公司始终将技术研发和持续创新作为公司发展的核心动力。公司投入大量资源用于研发新型连接器技术,不断推出具有更高性能、更小型化、更智能化的产品。这些创新产品的问世,不仅为公司带来了更多的市场机遇,更推动了整个电子连接器行业的进步。

问答坊 | AI 解惑

WinCE5.0 PB的120天使用限制问题

如题,我的PB5.0用了一段时间后就弹出版120天的使用期限就要到了,而且重新安装都不行,哪位大哥知道如何破解啊??…

查看全部问答>

Linux驱动程序高级培训

一、课程介绍 嵌入式Linux驱动程序成为进来嵌入式开发的热点,因为驱动程序担负着将嵌入式系统越来越复杂的硬件运转起来的能力。而且Linux内核代码量极大,其中有60%以上代码属于驱动程序,掌握嵌入式Linux驱动程序开发技术,对嵌入式工程师的重 ...…

查看全部问答>

请各位大侠帮忙看看这两个电容

请大家帮忙看看这两个电容分别是什么电容? 第一个电容上标有103,是不是表示容值为0.01uF? 第二个电容上标有L82,105, 是不是表示容值为1uF? 刚刚接触这方面,谢谢大家帮忙!…

查看全部问答>

【求助】求430开方的程序!

本人是菜鸟,不知道哪位大虾知道怎样用汇编程序实现开方的算法!先谢过了 …

查看全部问答>

09.01【每周讨论】怎么破译隔壁的无线网络信号?

 今晚网络出问题,又上不了网。到隔壁借台电脑上一下网。一直在纠结:怎么才能破译隔壁的无线网络信号呢?…

查看全部问答>

DSP

我现在用TMS320F2812的EV中的T1PWM产生PWM波形,那么T1PWM引脚的数值是不是应该是1和0这样的变换呢?我用WATCH WINDOW看,T1PWM的引脚输出值,就是1。到底是1和0这样的变换还是一直是1呢?求助大家一下…

查看全部问答>

使用Msp430的串口中断接收一包数据

假设有一数据包,数据格式如表所示:                                               ...…

查看全部问答>

按键按下时数码管显示会有些闪烁(续)

大侠们!!! 好好的帮我看看这个程序好吗? 之前的程序 https://bbs.eeworld.com.cn/forum ... 5521&fromuid=582339 (出处: 电子工程世界-论坛) 下面是我更改之后的程序!之前的闪烁消除了,就是对于定时器中断1里的这段程序   if ...…

查看全部问答>

7805电压 不稳

各位好  我用 交流转直流电源变压器  8伏左右输入接在l7805cv  1,2,脚  在2,3脚测量电压是5.68伏  并不是5伏  2,3脚并联了一个470uf的电容   电路还需要加什么元件 & ...…

查看全部问答>