基于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 |