Melexis MLX90640 Thermal Array Sensor: https://www.melexis.com/-/media/files/documents/datasheets/mlx90640-datasheet-melexis.pdf
I successfully changed the addresses on a few of these sensors, but then managed to mess up one of the rewrites and now its address is somewhere in outerspace, it seems.
Neither i2c_scanner on the Arduino nor i2cdetect (on a Raspberry Pi) are able to detect it, unless I expand the range to include the 0x00 general call address. I am able to detect the other sensors if they are connected.
With only the sensor in question connected, I get an ACK on a general call 0x00 write and ACK/NACK when attempting to read the register that should contain the address. This read returns 0x0000 which makes sense if it is truly at 0x0000 (a possibility, since I had to zero it out before the intended address), but I’m not sure if this isn’t some weird I2C master voodoo faking me out.
The address change involves a repeated start write to identify 16-bit register address, overwrite with 0x0000, write desired address, then power on/off reset.
Can anyone offer some insight into correcting this SNAFU?
Does data returned by 0x00 mean anything or is it a mirage of sorts? I’ve read that the general call is write only, but repeated start isn’t even part of the original I2C spec. So, I’m not sure if some devices treat it differently.