标题:
这是我测试AMG8833性能时写的一个测试程序
[打印本页]
作者:
Hachi56
时间:
2018-3-15 15:03
标题:
这是我测试AMG8833性能时写的一个测试程序
#include "bsp_amg88xx.h"
#include "bsp_iic.h"
u8 xx;
void amg88xx_init(void)
{
i2c_init();
amg88xx_write(AMG88xx_PCTL, AMG88xx_NORMAL_MODE);
amg88xx_write(AMG88xx_RST, AMG88xx_INITIAL_RESET);
amg88xx_write(AMG88xx_FPSC, AMG88xx_FPS_10);
}
uint8_t amg88xx_write(uint8_t reg,uint8_t data)
{
i2c_Start();
i2c_SendByte((AMG88xx_ADDRESS<<1)|0); //发送器件地址+写命令
if(i2c_WaitAck()) //等待应答
{
i2c_Stop();
return 1;
}
i2c_SendByte(reg); //写寄存器地址
i2c_WaitAck(); //等待应答
i2c_SendByte(data); //发送数据
if(i2c_WaitAck()) //等待ACK
{
i2c_Stop();
return 1;
}
i2c_Stop();
return 0;
}
uint8_t amg88xx_read_len(uint8_t reg,uint8_t len,uint8_t *buf)
{
i2c_Start();
i2c_SendByte((AMG88xx_ADDRESS<<1)|0); //发送器件地址+写命令
if(i2c_WaitAck()) //等待应答
{
i2c_Stop();
return 1;
}
i2c_SendByte(reg); //写寄存器地址
i2c_WaitAck(); //等待应答
i2c_Start();
i2c_SendByte((AMG88xx_ADDRESS<<1)|1); //发送器件地址+读命令
i2c_WaitAck(); //等待应答
while(len)
{
if(len==1)
{
*buf=i2c_ReadByte();//读数据,发送nACK
i2c_NAck();
}
else
{
*buf=i2c_ReadByte(); //读数据,发送ACK
i2c_Ack();
}
len--;
buf++;
}
i2c_Stop(); //产生一个停止条件
return 0;
}
float AMG88XX_signedMag12ToFloat(uint16_t val)
{
//take first 11 bits as absolute val
uint16_t absVal = (val & 0x7FF);
return (val & 0x8000) ? 0 - (float)absVal : (float)absVal ;
}
float amg88xx_readThermistor()
{
uint8_t raw[2];
uint16_t recast;
amg88xx_read_len(AMG88xx_TTHL, 2, raw);
recast = ((uint16_t)raw[1] << 8) | ((uint16_t)raw[0]);
return AMG88XX_signedMag12ToFloat(recast) * AMG88xx_THERMISTOR_CONVERSION;
}
void amg88xx_readPixels(float *buf, uint8_t size)
{
uint16_t recast;
float converted;
uint8_t rawArray[128];
amg88xx_read_len(AMG88xx_PIXEL_OFFSET, 128, rawArray);
for(int i=0; i<size; i++)
{
uint8_t pos = i << 1;
recast = ((uint16_t)rawArray[pos + 1] << 8) | ((uint16_t)rawArray[pos]);
converted = AMG88XX_signedMag12ToFloat(recast) * AMG88xx_PIXEL_TEMP_CONVERSION;
buf[i] = converted;
}
}
复制代码
AMG8833.7z
2019-10-30 16:08 上传
点击文件名下载附件
下载积分: 黑币 -5
288.92 KB, 下载次数: 187, 下载积分: 黑币 -5
AMG8833测试程序
作者:
興趣使然
时间:
2018-3-27 15:10
这是那个热像仪的吗
作者:
xiaee
时间:
2018-6-26 16:25
坚持每天签到。不知道哦这个能不能探测远方大面积的高温热点。
作者:
邦邦
时间:
2018-7-17 17:27
楼主可以用么
作者:
huyanglei.ok
时间:
2018-7-27 14:38
学习了,正要做这个
作者:
plj213
时间:
2018-9-8 19:03
感谢分享。。。
作者:
zwjiang
时间:
2018-10-17 14:15
多谢楼主分享
作者:
周方均
时间:
2018-12-5 13:53
为什么主函数调用之后,屏幕是蓝屏呢
作者:
zeeee92
时间:
2018-12-25 01:26
很有用,学习学习
作者:
dahuzhi_cn
时间:
2019-3-10 02:05
正是要找的
作者:
2728194262
时间:
2019-3-30 19:44
楼主 你amg8833地址咋算的啊
作者:
lovernw
时间:
2019-4-6 12:16
66666向大佬学习
作者:
lovernw
时间:
2019-4-6 12:17
大佬,寄存器配置的那个数据手册可以分享一下么?
作者:
无敌的UUZ大人
时间:
2019-10-25 15:52
nb,6666666(虽然我还没下载,但是喊666就对了)
作者:
无敌的UUZ大人
时间:
2019-10-30 15:37
楼主我想请问一下,为什么在有关AMG88XX的地方一条注释都看不到???
作者:
无敌的UUZ大人
时间:
2019-10-30 17:45
楼主你好,amg88xx_write这个函数我有问题想问一下,这个函数的作用是发送数据到AMG8833中,由于需要Slave Address和内部寄存器地址,所以IIC通信采用的是复合格式,你的程序里面并没有发送重复起始信号,主机是怎么把数据发送到AMG8833里面的?能给AMG8833写命令吗?
我在amg88xx_read_len这个函数里面发现了重复发送起始信号的代码。
所以说楼上那位没有做出来是因为单片机不能将数据写入到与AMG8833中,初始化失败,所以才无法读取数据的吗?
作者:
PADFE
时间:
2019-12-3 18:18
感激不尽,最需要这个资料的时候
作者:
18077215749
时间:
2020-2-12 22:28
感谢分享
作者:
onono
时间:
2020-2-24 17:14
普通的红外测温探头最近都买不到了,只能买个AM8833试试了。感谢分享。
作者:
梧桐岛岛主
时间:
2020-4-22 10:20
感谢分享,学习了
作者:
SRTAN
时间:
2020-5-11 18:35
大佬请问一下这个传感器的波段是多少啊
作者:
HJWei
时间:
2020-5-22 14:25
正好学习下
作者:
abcd20084444
时间:
2020-6-27 18:00
下载看看,学习下
作者:
FFF阿狸
时间:
2021-1-21 15:56
楼主,请问我只能读一个温度寄存器的值,怎么解决,除了0x80地址的温度能读取之外,其它的都读取不了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1