To permanently modify the I2C address, you can modify the desired value in .fea file and use the Programmer or Programming File Utility tool to permanently fuse the I2C address in EFUSE. Please note that the programming via .fea file using Programmer is One Time Programming(OTP) into non-volatile memory that is non-reversible.
To temporarily change the I2C Slave Address through modifying the temporary value written in shadow register, you can use the ISC_ENABLE/ISC_ENABLE_X command with Pseudo mode followed by programming the feabits command, the modified feabits will be wipe out once the device is power-cycled. Refer to picture and Pseudo Mode description below excerpted from SysConfig UG for more details.
Pseudo Mode – In Pseudo Non-volatile(NV) Memory access mode, the program command execution writes the shifted-in data into the shadow register, instead of the NV Memory, if the targeted NV Memory content is associated with a shadow register.
! Shift in LSC_PROG_FEATURE( 0xE4) instruction |
Please refer to below link for an example of SVF file to program the 96-feabits with Pseudo mode in MachXO5 device. https://latticesemi.files.com/f/d168dad43ae1bb0f/FAQ%237336
Please refer to below steps to program I2C Slave Address using Pseudo mode: