红外温度传感器MLX90614添加修改地址

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

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值