MLX90615红外温度传感器驱动:IIC通信详解

4 下载量 133 浏览量 更新于2024-08-29 2 收藏 1.2MB PDF 举报
"这篇笔记主要介绍了如何驱动MLX90615红外温度传感器芯片,特别是使用IIC库函数而非IIC模拟的方式。该芯片能够非接触地测量物体温度,其内部包含16位ADC数据,并支持SMBus和PWM协议。温度数据存储在RAM中,配置信息则保存在EEPROM中。芯片的默认I2C地址为0x5B,而0x00地址是所有芯片都会响应的通用地址。配置寄存器的地址为EEPROM的0x02,其中bit0用于选择驱动模式。RAM中的0x06地址存储环境温度,0x07地址存储测得物体的温度。读写操作需要遵循特定的命令格式,SMBus模式下还需要PEC校验。在操作芯片睡眠和唤醒时,SCL引脚的状态需控制得当。" 详细说明: MLX90615是一款用于非接触式温度测量的红外传感器,它具备16位ADC,能够提供精确的温度读数。芯片兼容两种通信协议,SMBus和PWM。温度数据实时存储在内部RAM中,而关于芯片配置、ID、模式选择和发射率等信息则保存在EEPROM中。开发过程中应注意,不应随意操作EEPROM的0x04至0x0D地址范围,以免影响芯片功能。 芯片的默认I2C地址是0x5B,其中0x00地址是一个公共地址,任何MLX90615芯片都会对此作出响应。配置寄存器位于EEPROM的0x02地址,bit0用于切换驱动模式,如从默认的SMBus模式切换到PWM模式。在改变模式时,需要按照特定步骤操作,例如从PWM切换回SMBus可能需要拉低SCL线一段时间。 RAM区域包括0x06和0x07两个地址,分别存储环境温度和被测物体的温度。值得注意的是,RAM只能读取,而EEPROM支持读写操作。执行读写命令时,需要按照特定格式,比如访问EEPROM的命令以0001开头,后跟四位置址;访问RAM的命令以0010开头,同样后跟四位置址。 在SMBus模式下,数据传输会包含PEC(Packet Error Checking)校验,确保数据传输的准确性。在控制芯片的睡眠和唤醒时,SCL线的电平状态起关键作用。启动读取操作时,需要发送START条件,然后发送设备地址,接着读取数据,并处理PEC校验。 根据这些信息,可以编写IIC库函数来与MLX90615进行通信,例如`I2C_BufferRead`函数用于读取数据,它接收一个缓冲区指针、要读取的字节数、命令和从设备地址,实现对芯片的读操作。驱动程序的其他部分可能包括写操作、错误处理和通信状态的检查。 驱动MLX90615芯片涉及理解其通信协议、内存布局以及操作流程,以便正确地通过IIC接口与其交互,获取并处理温度测量数据。