在线时间2 小时
UID174379
注册时间2010-3-8
NXP金币0
该用户从未签到
新手上路

- 积分
- 24
- 最后登录
- 2021-7-30
|
发表于 2014-9-24 17:48:35
|
显示全部楼层
回复:MCU i2c读设备问题
<div style="padding:5px;border:1px dashed #ccc;">回复第 13 楼 于2014-09-19 16:20:08发表:
<div style="padding:5px;border:1px dashed #ccc;">回复第 7 楼 于2014-08-11 10:12:45发表:
<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 |
|