如何将16位数据写入I2c协议

How to write a 16bit data to I2c protocol

我正在制作一个程序,其中我使用 I2C 将 INA226 与 atmega8 连接起来。我需要用值 4127h 写入它的寄存器。以下是我完成的代码。当我读取寄存器时,我得到 41 FF。这意味着我可以写 41 但不能写 27。我该怎么做呢?

此外,当我尝试将值从 4127h 更改为 3637h(只是为了检查)时,它不会发生变化并显示旧值 41 Ff。 请帮忙,谢谢。

代码

i2c_init();
i2c_start();
i2c_write(0b10000000);  //slave address
i2c_write(0x00);        //register address
i2c_write(0x41);        // data
i2c_write(0x27);        // data
i2c_stop();

i2c_start();
i2c_write(0b10000001);
temp1 = i2c_read(1);
temp2 = i2c_read(0);
i2c_stop();
enter code here 
unsigned int_16 DATA=4127
i2c_init();
i2c_start();
i2c_write(0b10000000);  //slave address
i2c_write(0x00);        //register address
i2c_write((int)DATA>>8);        // data OF MSB 
i2c_write((int)DATA & 0XFF);        // data OF LSB 
i2c_stop();