Johnson
时间:2026-07-09
看波形主机发来的所有ADDR、DATA都没有ACK,说明从机处理从ADDSEND位都没有正常置起;
建议不要用中断的方式处理,从机用最简单的polling模式,例如下:
/* wait until ADDSEND bit is set /
while(!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND));
/ clear ADDSEND bit /
i2c_flag_clear(I2C0, I2C_FLAG_ADDSEND);
for(i = 0; i < 16; i++) {
/ wait until the RBNE bit is set */
while(!i2c_flag_get(I2C0, I2C_FLAG_RBNE));
/* read a data byte from I2C_DATA */
i2c_receiver[i] = i2c_data_receive(I2C0);
}
/* wait until the STPDET bit is set */
while(!i2c_flag_get(I2C0, I2C_FLAG_STPDET));
/* clear the STPDET bit */
i2c_enable(I2C0);
看看卡在哪一步?
P.S. 从主机下发的地址来看,主机在给slave 0x50发送write和read,但你的初始化
I2C0_SLAVE_ADDRESS7)宏定义为0xA0,似乎这个波形不符合你从机的响应需求。
暂无内容
相关内容会显示在这里,期待您的分享与发现。
暂无内容
相关内容会显示在这里,期待您的分享与发现。
暂无内容
相关内容会显示在这里,期待您的分享与发现。
暂无内容
相关内容会显示在这里,期待您的分享与发现。
暂无内容
相关内容会显示在这里,期待您的分享与发现。
确定删除吗?
删除后无法恢复,请确认后操作!
编辑

