当前位置:网站首页>MLX90640 红外热成像传感器测温模块开发笔记(二)
MLX90640 红外热成像传感器测温模块开发笔记(二)
2022-07-25 09:23:00 【河北稳控科技】
MLX90640 红外热成像仪测温模块开发笔记(二)API 移植-I2C 和关键接口函数

API 说明文件里面有官方的移植指导,但我觉得可以把重点放在与 MLX90640 具体操作有关的几个函数上,而与标准 I2C 相关的函数和文件结构还是按照自己习惯的套路实现。这样更符合我们开发人员的可控性的习惯。步骤如下:
(1) 建立标准 I2C 文件 IIC.h 和 IIC.c
用自己的方法实现如下几个函数(硬件也好,GPIO 模拟也好),函数名称用下面建议的。
void IIC_Init(void); //I2C 接口初始化
void IIC_Start(void); //发送开始信号
void IIC_Stop(void); //发送结束信号
void IIC_SendACK(void); //发送应答信号
void IIC_SendNAK(void); //发送非应答信号unsigned char IIC_RecvACK(void); //读取应答信号unsigned char IIC_RecvData(void); //读取 1 个字节void IIC_SendData(char dat); //发送 1 个字节
(2) 在工程中引入 MLX90640_API.c
并做如下几处修改
第一行#include <MLX90640_I2C_Driver.h>改为#include <IIC.h>
(3) 添加 3 个函数
void MLX90640_I2CInit(void)
unsigned char MLX90640_I2CRead (unsigned short startAddress, unsigned short nWordsRead, unsigned short *datas)
unsigned char MLX90640_I2CWrite (unsigned short writeAddress, unsigned short word)
void MLX90640_I2CInit(void)
{
IIC_Stop();
}
//从指定地址读取 n 个字(每个字占用 2 个字节)
unsigned char MLX90640_I2CRead(unsigned short startAddress, unsigned short nWordsRead, unsigned short *datas)
{
unsigned char c1,c2; unsigned short i; unsigned char Msb,Lsb;
Msb=(unsigned char)(startAddress>>8); Lsb=(unsigned char)(startAddress&0x00FF);
IIC_Start(); //发送起始命令
IIC_SendData(0x66); //发送设备地址+写命令IIC_RecvACK();
IIC_SendData(Msb); //发送要操作的地址值 2 字节
IIC_RecvACK();
IIC_SendData(Lsb);
IIC_RecvACK();
IIC_Start(); //发送起始命令
IIC_SendData(0x67); //发送设备地址+读命令IIC_RecvACK();
for (i=0;i<nWordsRead;i++)
{
c1=IIC_RecvData(); IIC_SendACK();
c2=IIC_RecvData();
if (i==(nWordsRead-1)) IIC_SendNAK();
else
IIC_SendACK();
datas[i]=c1; datas[i]<<=8; datas[i]|=c2;
}
IIC_Stop(); //发送停止命令
return 0;
}
//向指定地址写入 1 个字(2 字节)
unsigned char MLX90640_I2CWrite(unsigned int writeAddress, unsigned int word)
{
IIC_Start(); //发送起始命令
IIC_SendData(0x66); //发送设备地址+写命令IIC_RecvACK();
IIC_SendData(writeAddress>>8); //发送要操作的地址值 2 字节
IIC_RecvACK();
IIC_SendData(writeAddress&0x00FF); IIC_RecvACK();
IIC_SendData(word>>8); IIC_RecvACK();
IIC_SendData(word&0x00FF); IIC_RecvACK();
IIC_Stop(); return 0;
(4)修改 2 个函数
unsigned char MLX90640_DumpEE(unsigned short *eeData)
{
return MLX90640_I2CRead(0x2400, 832, eeData);
}
unsigned char MLX90640_GetFrameData(unsigned short *frameData)
{
unsigned short statusRegister,controlRegister1;
MLX90640_I2CRead(0x8000, 1, &statusRegister); if (statusRegister&0x0008)//有测量完成的 Frame
{
MLX90640_I2CRead(0x800D, 1, &controlRegister1); MLX90640_I2CWrite(0x8000, statusRegister&(~0x0018)); MLX90640_I2CRead(0x0400, 832, frameData); frameData[832] = controlRegister1;
frameData[833] = statusRegister & 0x0001; return 0;
}
Return -1;
}
至此移植完成
编译工程,若没有错误提示则基本上没有问题了,下一篇开始讲述如何操作MLX90640。
成果展示:

边栏推荐
- CDA LEVELⅠ2021新版模拟题二(附答案)
- Use kotlin use to simplify file reading and writing
- 1094 - Google recruitment
- 卷积神经网络发展历程(部分)
- 深入理解pytorch分布式并行处理工具DDP——从工程实战中的bug说起
- ~1 CCF 2022-06-2 treasure hunt! Big adventure!
- CDA Level1知识点总结之业务数据分析
- Segmentation-based deep-learning approach for surface-defectdetection(基于分割的表面缺陷深度学习检测方法)
- Android & kotlin: puzzle solution
- Camera attitude estimation
猜你喜欢

Get to know opencv4.x for the first time --- add salt and pepper noise to the image

Get to know opencv4.x for the first time --- add Gaussian noise to the image

数字IC设计SOC入门进阶

Evolution based on packnet -- review of depth estimation articles of Toyota Research Institute (TRI) (Part 1)

Evolution based on packnet -- review of depth estimation articles of Toyota Research Institute (TRI) (Part 2)

Principle analysis of self supervised depth estimation of fish eye image and interpretation of omnidet core code

Solve the problem that esp8266 cannot connect mobile phones and computer hotspots

从鱼眼到环视到多任务王炸——盘点Valeo视觉深度估计经典文章(从FisheyeDistanceNet到OmniDet)(上)

*7-1 CCF 2015-09-1 sequence segmentation

matlab绘图|坐标轴axis的一些常用设置
随机推荐
Some skills to reduce the complexity of program space
Kotlin realizes file download
无向连通图邻接表的创建输出广度深度遍历
从鱼眼到环视到多任务王炸——盘点Valeo视觉深度估计经典文章(从FisheyeDistanceNet到OmniDet)(上)
Customize the view to realize the background of redeeming lottery tickets [elementary]
matlab绘图|坐标轴axis的一些常用设置
单目深度估计基础理论和论文学习总结
【数据挖掘】第三章 数据分析基础
CDA LEVELⅠ2021新版模拟题一(附答案)
[deep learning] convolutional neural network
无向连通图邻接矩阵的创建输出广度深度遍历
Mixed supervision for surface defect detection: from weakly to fully supervised learning
初识Opencv4.X----图像直方图均衡
TensorFlow raw_rnn - 实现seq2seq模式中将上一时刻的输出作为下一时刻的输入
Esp8266的Flash读写操作以及Flash上传文件
初识Opencv4.X----图像模板匹配
初识Opencv4.X----图像卷积
ECO简介
*6-3 save small experts
Defect detection network -- hybrid supervision (kolektor defect data set reproduction)