IIC不能连续读出多个字节

IIC不能连续读出多个字节,只能读出第一个字节,后面读到的都是OXFF

最近使用stm32与MPU6050通信,需要一次传输多个数据,根据例程,在stm32f103上正常实现了功能,一次读出24个数据,但将代码移植到stm32f407上,出现了不能连续读出多个字节,只能读出第一个字节,后面读到的都是OXFF。
IIC不能连续读出多个字节_第1张图片
多次尝试后,发现是f407的主频太快,程序中使用的是一个简单的延迟

// 简单的延时函数
void Delay(unsigned int nCount)	
{
	for(; nCount != 0; nCount--);
} 

系统频率对于这个延迟函数的影响较大,导致IIC时序出现错误,将程序简单粗暴改为如下后,可以正常使用

// 简单的延时函数
void Delay(unsigned int nCount)	
{
	nCount *= 15;
	for(; nCount != 0; nCount--);
} 

IIC不能连续读出多个字节_第2张图片
建议不要使用简易延迟进行通信,更改系统后可能会有问题

你可能感兴趣的:(stm32)