在线时间0 小时
UID180739
注册时间2010-4-9
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 262
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2014-1-24 16:34:35
|
显示全部楼层
回复:KL04 I2C不能读取数据?
回复第 2 楼 于2014-01-24 15:43:11发表:
KL系列I2C的读Data时需要一次dummy read,这一点容易被忽略。以下是KL25例程代码中I2C读取单字节的代码,
u8 hal_dev_mma8451_read_reg(u8 addr)
{
u8 result;
i2c_start(I2C0_B);
i2c_write_byte(I2C0_B, I2C_ADDR_MMA8451 | I2C_WRITE);
i2c_wait(I2C0_B);
i2c_get_ack(I2C0_B);
i2c_write_byte(I2C0_B, addr);
i2c_wait(I2C0_B);
i2c_get_ack(I2C0_B);
i2c_repeated_start(I2C0_B);
i2c_write_byte(I2C0_B, I2C_ADDR_MMA8451 | I2C_READ);
i2c_wait(I2C0_B);
i2c_get_ack(I2C0_B);
i2c_set_rx_mode(I2C0_B);
i2c_give_nack(I2C0_B); //提前给出ACK信号
result = i2c_read_byte(I2C0_B); //空读
i2c_wait(I2C0_B);
i2c_stop(I2C0_B);
result = i2c_read_byte(I2C0_B); //数据实际的读操作
pause();
return result;
}
谢谢回复 |
|