初级会员

- 积分
- 131
- 金钱
- 131
- 注册时间
- 2012-1-13
- 在线时间
- 29 小时
|
10金钱
每次都只能读到第一个字节,就是说第一个字节是对的,其他的全部为0.
有谁知道什么原因?或者分享一下连续读写的代码,多谢
uint8_t SW_I2C_ReadMany(SW_I2Cx swi2cx,uint8_t DevAddr,uint8_t RegAddr, uint8_t *Data,uint32_t Length)
{
uint8_t ack;
SW_I2C_Start(swi2cx);
ack = SW_I2C_SendByte(swi2cx,DevAddr | EEPROM_WR);
if(I2C_NOACK == ack)
{
SW_I2C_Stop(swi2cx);
return I2C_NOACK;
}
ack = SW_I2C_SendByte(swi2cx,RegAddr); //êy¾YμØÖ·(8λ)
if(I2C_NOACK == ack)
{
SW_I2C_Stop(swi2cx);
return I2C_NOACK;
}
SW_I2C_Start(swi2cx);
ack = SW_I2C_SendByte(swi2cx,DevAddr | EEPROM_RD);
if(I2C_NOACK == ack)
{
SW_I2C_Stop(swi2cx);
return I2C_NOACK;
}
while(Length)
{
if(Length == 1)
{
*(Data++) = SW_I2C_GetByte(swi2cx,I2C_NOACK);
}
else
{
*(Data++) = SW_I2C_GetByte(swi2cx,I2C_ACK);
}
Length--;
}
SW_I2C_Stop(swi2cx);
return I2C_ACK;
}
|
|