This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
使用以下代码读取 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
您好 Susan、
我已开始处理您的问题、我将很快返回给您更新。
--
谢谢、此致、
Jagadish。
您好 Susan、
我看不到你的捕获,请你重新附上。
如果您使用 salea 进行捕获、请附上完整的 salea 逻辑捕获文件、以便我可以轻松地进行分析。 如下所示
--
谢谢、此致、
Jagadish。
您好 Jagadish、
这是一个清晰的画面
请帮助分析问题。
谢谢、
安妮
尊敬的 Annie:
您在写入地址后会在代码中给出停止条件、因为只有此停止条件正在生成、请参阅下面突出显示的函数
因此、请删除下面突出显示的内容并进行测试:
--
谢谢、此致、
Jagdish。