在线时间2 小时
UID13433
注册时间2007-7-19
NXP金币0
该用户从未签到
注册会员

- 积分
- 83
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2014-8-11 10:12:45
|
显示全部楼层
回复:MCU i2c读设备问题
<div style="padding:5px;border:1px dashed #ccc;">回复第 6 楼 于2014-08-09 09:40:17发表:
还是把程序发上来看一下吧。要先发送硬件地址,再发送读取地址。然后置读取标志位。发送完硬件地址以后要重新发送start信号。
这个是我的读寄存器代码:
void MMA9553L_ReadCfgReg(uint8 RegisterAddress,uint8 *examBuff,uint8 Bytenumber)
{
uint8 i =0;
//发送从机地址
I2C_StartTrans(MMA9553L_I2CX, MMA9553L_DEV_ADDR, I2C_MWSR);
I2C_WaitAck(MMA9553L_I2CX, I2C_ACK_ON);
//写MMA9553L寄存器地址
I2C_WriteByte(MMA9553L_I2CX, RegisterAddress);
I2C_WaitAck(MMA9553L_I2CX, I2C_ACK_ON);
//再次产生开始信号
I2C_ReStart(MMA9553L_I2CX);
//发送从机地址和读取位
I2C_WriteByte(MMA9553L_I2CX, MMA9553L_DEV_READ);
I2C_WaitAck(MMA9553L_I2CX, I2C_ACK_ON);
//转换主机模式为读
I2C_SetMasterWR(MMA9553L_I2CX, I2C_MRSW);
//关闭应答ACK
I2C_WaitAck(MMA9553L_I2CX, I2C_ACK_OFF);//关闭ACK
//读IIC数据
for(i=0;i |
|