在线时间19 小时
UID3272562
注册时间2016-5-17
NXP金币0
该用户从未签到
注册会员

- 积分
- 146
- 最后登录
- 2019-7-8
|
为什么读操作每次读的都是同一个值0X80,而且这个值不是我写到铁电里面的值啊。代码如下,不知道什么问题。。。
*********************************************************************************************************/
void i2c_read_selective(INT8U slave_add, INT16U mem_add, INT8U* value, INT16U num)
{
volatile INT8U dummy = 0;
i2c_start_fram();
I2C0_D = slave_add;
while((I2C0_S & I2C_S_RXAK_MASK) == I2C_S_RXAK_MASK);
I2C0_D = (INT8U)((mem_add & 0xFF00) >> 8);
while((I2C0_S & I2C_S_RXAK_MASK) == I2C_S_RXAK_MASK);
I2C0_D = (INT8U)(mem_add & 0x00FF);
while((I2C0_S & I2C_S_RXAK_MASK) == I2C_S_RXAK_MASK);
i2c_restart_fram();
I2C0_C1 |= I2C_C1_MST_MASK | I2C_C1_TX_MASK;
I2C0_D = (slave_add) | 0x01;
while((I2C0_S & I2C_S_RXAK_MASK) == I2C_S_RXAK_MASK);
I2C0_C1 &= ~(I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
if (num == 1)
{
I2C0_C1 |= I2C_C1_TXAK_MASK;
}
dummy = I2C0_D;
while((num--))
{
if(num == 0)
{
i2c_stop_fram();
}
if(num == 1)
{
I2C0_C1 |= I2C_C1_TXAK_MASK;
}
*value = I2C0_D;
value++;
}
}
|
|