基于STM32f407的TSL2561模块的使用

这篇博客详细介绍了如何在基于STM32f407的系统中使用TSL2561光强传感器。通过介绍TSL2561的功能、内部结构以及寄存器设置,阐述了IIC通信协议的实现,包括起始和结束信号、数据传输等。同时提供了IIC和TSL2561的C语言驱动代码,用于初始化、设置积分时间和读取光强数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于STM32f407的TSL2561模块的使用

  • TSL2561简介2TSL2561 是光-数字转换器,它将光强转换成数字信号输出,具有直接 I2C 接口或SMBus 接口。每个设备都连接一个带宽的光敏二极管和在单独 CMOS 集成电路上的一个红外响应的光敏二极管,这个集成电路具有提供 20bit 动态范围的近-适光响应的能力。两个集成的ADCs 将光敏电流转换成一个数字输出,这个数字输出表示测量每一个通道的发光。这个数字输出可以是一个微处理器的输入。在这个微处理器里亮度(周围光的水平)使用试验化公式来得到。.
  • ADDR引脚连接不同可选择不同的器件地址,有接地,接Vdd,以及浮空三种接法在这里插入图片描述

通道 0 和通道 1 是两个光敏二极管,其中通道 0 对可见光和红外线都敏感,而通道 1 仅对红外线敏感。

框图
在这里插入图片描述
内部寄存器地址及其作用
在这里插入图片描述
硬件设计
在这里插入图片描述
软件设计
在这里插入图片描述
软件设计流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IIC头文件
#ifndef IIC_H
#define IIC_H

#include “stm32f4xx.h”
#include “delay.h”
#include “io_bit.h”

void IIC_Init(void);

void IIC_Start(void);
void IIC_Stop(void);

void IIC_Write_Byte(u8 byte);
u8 IIC_Read_Byte(void);

void iic_write_ack(u8 ack);
u8 iic_read_ack(void);

#define IIC_SCL PBout(12)
#define SDA_OUT PBout(13)
#define SDA_IN PBin(13)

#endif

IIC源文件
#include “iic.h”

/*


  • 函数功能:IIC端口初始化
  • 函数返回值:None
  • 函数形参:None
  • 备注:SCL—PB12–推挽输出
    SDA—PB13—开漏输出
  • 作者:林鸿钦
  • 时间:2019-09-20
  • 修改作者:None
  • 修改时间:None

*/
void IIC_Init(void)
{
RCC->AHB1ENR |= 0x01 << 1;//PB时钟

GPIOB->MODER &= ~(0x3 << 12 * 2);
GPIOB->MODER |= (0x1 << 12 * 2);//PB12通用输出

GPIOB->MODER &= ~(0x3 << 13 * 2);
GPIOB->MODER |= 0x1 << 13 * 2;//PB13通用输出

GPIOB->OTYPER &= ~(0x1 << 12);//PB12输出推挽
GPIOB->OTYPER |
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值