|
- #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測試程序
評分
-
查看全部評分
|