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

时间:2015-03-24 07:36:03

标签: i2c

我正在编写一个程序,我使用I2C将INA226与atmega8连接起来。我需要用值4127h编写它的寄存器。以下是我所做的代码。当我正在阅读登记册时,我得到了41 FF。这意味着我能够写出41而不是27.我怎么能这样做。?

此外,当我尝试将值从4127h更改为3637h(仅检查)时,它不会更改并显示旧值41 Ff。 请帮助,谢谢。

CODE

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();

1 个答案:

答案 0 :(得分:0)

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();