https://blog.csdn.net/lsjackson13/article/details/90256571
上面的博文给了我很大帮助,红外温度传感器的基础知识可以参考上面的。
下面主要记录的是如何修改从机地址。淘宝卖家和网上的例程都是没有清楚说明如何修改地址,自己也是一步一步修改测试摸索这来的。
需要说明的是要修改地址, 先要置零,然后延迟一会,再重新写入地址。
/*
*********************************************************************************************************
* 函 数 名:清零eeprom数据
* 功能说明:
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void SMBus_CleanEEPROM(void)
{
u8 arr[6]; // Buffer for the sent bytes
u8 PecReg; // Calculated PEC byte storage
SMBus_StartBit(); //Start condition
SMBus_SendByte(0x00);//Send SlaveAddress 最低位Wr=0表示接下来写命令
SMBus_SendByte(0x2E);
SMBus_SendByte(0x00);
SMBus_SendByte(0x00);
arr[5] = 0; //
arr[4] = 0x00; //
arr[3] = 0x2e; //Load array arr
arr[2] = 0x00; //
arr[1] = 0x00; //
arr[0] = 0; //
PecReg=PEC_Calculation(arr);//Calculate CRC
SMBus_SendByte(PecReg);
SMBus_StopBit(); //Stop condition
}
/*
*********************************************************************************************************
* 函 数 名: 从修改从机地址
* 功能说明:
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void SMBus_EditSlaveAddre(u16 SlaveAddress)
{
u8 arr[6]; // Buffer for the sent bytes
u8 PecReg; // Calculated PEC byte storage
u8 dataH=SlaveAddress>>8;
u8 dataL=SlaveAddress&0xff;
SMBus_CleanEEPROM();
delay_ms(5);
SMBus_StartBit(); //Start condition
SMBus_SendByte(0x00);//Send SlaveAddress 最低位Wr=0表示接下来写命令
SMBus_SendByte(0x2E);
SMBus_SendByte(dataL);
SMBus_SendByte(dataH);
arr[5] = 0; //
arr[4] = 0x00; //
arr[3] = 0x2e; //Load array arr
arr[2] = dataL; //
arr[1] = dataH; //
arr[0] = 0; //
PecReg=PEC_Calculation(arr);//Calculate CRC
SMBus_SendByte(PecReg);
SMBus_StopBit(); //Stop condition
printf("修改完成,可以重启电源开始读取温度值!\r\n");
其他驱动可以参考:
https://blog.csdn.net/qq_38215697/article/details/90635776?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3