红外热成像仪测温模块 API 移植-I2C 和关键接口函数

简介: API 说明文件里面有官方的移植指导,但我觉得可以把重点放在与 MLX90640 具体操作有关的几个函数上,而与标准 I2C 相关的函数和文件结构还是按照自己习惯的套路实现。这样更符合我们开发人员的可控性的习惯。

MLX90640 红外热成像仪测温模块开发笔记(二)API 移植-I2C 和关键接口函数
红外成像仪效果图去二维码.png

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。

相关文章
|
7天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
19天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
20天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
30天前
|
编解码 监控 API
直播源怎么调用api接口
调用直播源的API接口涉及开通服务、添加域名、获取API密钥、调用API接口、生成推流和拉流地址、配置直播源、开始直播、监控管理及停止直播等步骤。不同云服务平台的具体操作略有差异,但整体流程简单易懂。
|
10天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
1月前
|
人工智能 自然语言处理 PyTorch
Text2Video Huggingface Pipeline 文生视频接口和文生视频论文API
文生视频是AI领域热点,很多文生视频的大模型都是基于 Huggingface的 diffusers的text to video的pipeline来开发。国内外也有非常多的优秀产品如Runway AI、Pika AI 、可灵King AI、通义千问、智谱的文生视频模型等等。为了方便调用,这篇博客也尝试了使用 PyPI的text2video的python库的Wrapper类进行调用,下面会给大家介绍一下Huggingface Text to Video Pipeline的调用方式以及使用通用的text2video的python库调用方式。
|
1月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
20天前
|
JSON 前端开发 JavaScript
API接口商品详情接口数据解析
商品详情接口通常用于提供特定商品的详细信息,这些信息比商品列表接口中的信息更加详细和全面。以下是一个示例的JSON数据格式,用于表示一个商品详情API接口的响应。这个示例假定API返回一个包含商品详细信息的对象。
|
26天前
|
JSON API 开发者
1688API商品详情接口如何获取
获取 1688 API 商品详情接口的步骤包括:1. 注册开发者账号;2. 了解接口规范和政策;3. 申请 API 权限;4. 获取 API 密钥;5. 实现接口调用(选择开发语言、发送 HTTP 请求);6. 处理响应数据。通过这些步骤,可以顺利调用 1688 的商品详情 API。
|
1月前
|
监控 API 开发工具
深入理解API设计:构建高效的接口
【10月更文挑战第6天】深入理解API设计:构建高效的接口
85 0