你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
安 发表于 2018-3-27 11:26 写完以后,记得要STOP一下,可能是因为8563处于忙状态。
安 发表于 2018-3-27 11:36 /* * 函数名: static void I2C_Stop(void) * 描述 : 终止信号
安 发表于 2018-3-27 13:36 我是说每次完整的通讯完成后。
查看全部评分
枫天2015 发表于 2018-3-27 14:29 我调试半天IIC死活不通,后来发现板子引脚反了
您说的这个STOP一下,应该不是发一个停止信号吧,因为I2C的时序不是发送从地址等待ACK,发送要写的数据等ACK,最后发STOP信号啊。还是你说的这个stop是把SDA和SCL都拉高呢?
* 函数名: static void I2C_Stop(void)
* 描述 : 终止信号
* 输入 : 无
* 输出 : 无
* 说明 :
*/
static void I2C_Stop(void)
{
SCL_L;
I2C_delay();
SDA_L;
I2C_delay();
SCL_H;
I2C_delay();
SDA_H;
I2C_delay();
}
可是不对啊,I2C的时序不是发从设备地址等ACK,发寄存器地址等ACK,发要写入的数据等ACK,最后发STOP信号吗?您是想让我在每一个等ACK前都发一个STOP信号吗?
我有啊,有STOP信号
我粘贴的那个图上,不是有stop信号吗,我觉得不是这个原因
评分
查看全部评分
看我抓取的图像,引脚应该没有接反,谢谢您的帮助
I2C通信,首先肯定STM32F103要进行I2C通信,这要设置SDA的方向;
其次,之所以一直接收到NACK ,说明从设备没有收到有效的地址,可是主设备发送没有错,于是用示波器测了从设备的电压,和时钟,发现晶振有问题,竞争给的不正常
评分
查看全部评分