7

MLX90640 红外热成像仪开发笔记(九)

 1 year ago
source link: https://blog.51cto.com/u_15704174/5525385
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

MLX90640 红外热成像仪开发笔记(九)

原创

MLX90640 红外热成像仪测温传感器模块开发笔记(九) EEPROM、 RAM、寄存器说明

MLX90640 红外热成像仪开发笔记(九)_红外热成像

EEPROM

地址范围为 0x2400~0x273F,共 832 个字(1664 字节), 前 16 个字包含了唯一 ID 码、工作参数(上电后自动同步到寄存器)、 MLX90640 的 I2C 地址。后面的 816 个字全部是每个像素的校正或者测量参数,数据手册也没有写每个数据到底是什么意思,直接用就是了,不要问为什么。

地址范围为 0x0400~0x073F,共 832 个字(1664 字节),前 768 个字是实时的 768 像素的测量数据,后面 64 个字是与当前刚刚测量完成的一半像素有关的计算因数。 RAM 是只读的。

地址范围为 0x8000~0x8010,共 16 个字(32 字节),其中用户可以访问的有状态寄存器0x8000、控制寄存器 0x800D,改变控制寄存器可以直接控制 MLX90640 的运行行为,是既有读又有写的部分。

MLX90640 红外热成像仪开发笔记(九)_红外热成像_02

三部分建议的操作

上电后读取一下 EEPROM,扔给 API 函数 MLX90640_ExtractParameters 得到的参数项变量。根据需要修改控制寄存器的值。循环读取状态寄存器,当有新的数据测量完成时读取全部 RAM 扔给 API 函数MLX90640_CalculateTo 得到每个像素的温度值。

状态寄存器说明

状态寄存器从字面来理解应该是只读的,但数据手册里却定义了一些位是参数(可修改的),不管寄存器叫什么了,根据参数功能来用吧。

STA[15:5]:保留,只能写入 0STA[4]: RAM 是否可写, 0:不可写; 1:可写。在帧测量完成后,是否允许 MLX90640将测量的数据写入(更新)到 RAM 里,这个功能可以在读取一帧数据的过程中设置为不允许,即:当上位机正在读取 RAM 的过程中,不允许再更新 RAM。这个位置同时还受控制寄存器中的 bit2 的限制,当 CTR[2]=0 时,无论这个位置怎样设置,都会自动更新 RAM,仅当 CTR[2]=1时, STA[4]参数才会起作用。STA[3]:子页测量完成标志位。 0:表示没有完成; 1 表示已经完成了一帧的测量。STA[2:0]:刚刚完成的是帧 0 还是帧 1。

控制寄存器说明

CTR[15:13]:保留,只能写入 0

CTR[12]:帧交错模式,默认为 1(像素交错模式),数据手册上说了只有这种模式才能保证精度,那就不要改这一位,保持默认 1。

CTR[11:10]:测量精度, 00~11 表示 16 位~19 位,默认为 10(18 位)。改成 11 也没什么效果,所以这个参数也保持默认吧。

CTR[9:7]:设置测量速率, 0~7 表示 0.5、 1、 2、 4、 8、 16、 32、 64Hz,默认为 010(2Hz),这个参数是唯一有用的参数。

CTR[6:4]:手动测量时,指定要测量哪个子页(帧 0 还是帧 1)。数据手册已经把手动测量部分删除了,所以手动测量相关的参数可以忽略。

CTR[3]:手动测量还是自动测量,默认为 0(自动测量),不要使用手动测量(原因同上)。

CTR[2]:如何更新 RAM。 0:测量完成后自动更新; 1:根据 STA[4]参数。

CTR[1]:保留,只能写入 0。

CTR[0]: 0:所有数据更新在一页里; 1:使能子页模式(页 0 和页 1),默认

MLX90640 红外热成像仪开发笔记(九)_开发笔记_03

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK