在线时间57 小时
UID3080775
注册时间2014-12-5
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 357
- 最后登录
- 2015-12-1
|

楼主 |
发表于 2015-1-14 13:04:04
|
显示全部楼层
本帖最后由 cjpx84 于 2015-1-14 13:15 编辑
恩,没有注意手册上的内容,谢谢2楼!
unsigned short i2c_battery_read_word(unsigned char slaveID,unsigned int cmdCode)
{
unsigned char result[2];
unsigned short retval=0;
unsigned char dumpbyte;
/* send start signal */
i2c_Start();
/* Send Slave Address */
i2c_send_slave_addr(slaveID,MWSR);
/*wait the data transfer complete*/
i2c_Wait();
i2c_get_ack();
/* Write command code*/
i2c_write_byte(cmdCode);
i2c_Wait();
i2c_get_ack();
/* Do a repeated start */
i2c_RepeatedStart();
/* Send Slave Address */
i2c_send_slave_addr(slaveID,MRSW);
i2c_Wait();
i2c_get_ack();
/* Put in Rx Mode */
i2c_EnterRxMode();
/* Dummy read */
dumpbyte = I2C0_D ;
i2c_Wait();
/*2nd to last byte to be read*/
/*set txack*/
i2c_give_nack();
result[0] = I2C0_D;
i2c_Wait();
/*last byte to be read generate stop signal*/
i2c_Stop();
/* Read byte */
result[1] = I2C0_D ;
Pause();
retval = result[1]<< 8 | result[0] ;
return retval;
}
我按照协议写了一个接口,读出来的数据是0Xff,是不是我哪里写的还有问题?我的从设备是一个智能电池的充电芯片,是SMBUS总线。
|
|