c语言sscanf函数的用法是什么
345
2022-11-09
MLX90640红外热成像传感器测温模块开发笔记(二)
稳控科技MLX90640 红外热成像
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{ c1=IIC_RecvData(); IIC_SendACK(); c2=IIC_RecvData(); if (i==(nWordsRead-1)) IIC_SendNAK(); else IIC_SendACK();;i++)
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。
河北稳控科技MLX90640 红外热成像成果展示
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~