大家好、
使用以下代码读取 AT32C256 EEPROM 上的数据、发现在第二个 START 信号之前有一个额外的 STOP 信号、但数据似乎可以顺利读取。 如何不让该 STOP 信号生成?
uint8_t RX_Data_Master[10]={0xAA、0xbb};
/*等待 MST 位被清零,这将进行
*清除总线忙后的几个周期*/
// while (i2cIsMasterReady (i2cREG1)!= true);
/*配置要与*/通话的从机地址
i2cSetSlaveAdd (i2cREG1、SLA_ADDR);
/*将方向设置为发送器*/
/*注意:可选-在 Init 中完成*/
i2cSetDirection (i2cREG1、I2C_transmitter);
/*配置数据计数*/
/*读取之前从器件地址+字地址写入操作*/
i2cSetCount (i2cREG1、2);
/*将模式设置为主设备*/
i2cSetMode (i2cREG1、I2C_MASTER);
/*设置编程计数后停止*/
i2cSetStop (i2cREG1);
/*发送开始条件*/
i2cSetStart (i2cREG1);
/*发送字地址*/
i2cSendByte (i2cREG1、0x00);
i2cSendByte (i2cREG1、0x10);
/*等待总线忙被清除*/
while (i2cIsBusy (i2cREG1)=true);
/*等待直到检测到停止*/
while (i2cIsStopDetected (i2cREG1)=0);
/*清除停止条件*/
i2cClearSCD (i2cREG1);
/********* /
/********* /
/*等待 MST 位被清零,这将进行
*清除总线忙后的几个周期*/
while (i2cIsMasterReady (i2cREG1)!= true);
/*配置要与*/通话的从机地址
i2cSetSlaveAdd (i2cREG1、SLA_ADDR);
/*将方向设置为接收器*/
i2cSetDirection (i2cREG1、I2C_RECEIVER);
/*配置数据计数*/
/*注:可选-在 Init 中完成,除非用户想要更改*/
i2cSetCount (i2cREG1、5);
/*将模式设置为主设备*/
i2cSetMode (i2cREG1、I2C_MASTER);
/*设置编程计数后停止*/
/*发送开始条件*/
i2cSetStart (i2cREG1);
/*轮询模式下的 Transmit data_count 数据数量*/
i2c 接收器(i2cREG1、5、RX_Data_Master);
i2cSetStop (i2cREG1);
/*等待总线忙被清除*/
while (i2cIsBusy (i2cREG1)=true);
/*等待直到检测到停止*/
while (i2cIsStopDetected (i2cREG1)=0);
/*清除停止条件*/
i2cClearSCD (i2cREG1);

此致、
Susan



