为什么我的IIC通讯速度那么低

2019-07-25 11:26发布

 void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
IIC_SCL=0;//拉低时钟开始数据传输
for(t=0;t<8;t++)
{
IIC_SDA=(txd&0x80)>>7;
txd<<=1;
delay_ms(1); //对TEA5767这三个延时都是必须的
IIC_SCL=1;
delay_ms(4);
IIC_SCL=0;
}
}

自从买了原子哥的开发板,我学习了好多,同时也像其他同学推荐了好多,都说很好。在这里要谢谢原子哥了。
今天的这个难题已经好多天了,
最近用STM32F103VET6模拟IIC来和一个传感器通讯,刚开始用原子哥的程序来通讯就是不成功,出现了很多莫名其妙的问题,弄了两个星期之后,今天我才发现
我把发送函数里面的延时时间改长了好多倍就可以正常通讯了,大家看清楚我可是改为毫秒级别的了,程序中的delay_ms(4);
改为3ms就不行,这样数据是读出来了,但是影响了我其他程序,包括按键程序,因为只运行这个IIC程序就要40ms,其他的关于IIC的程序都和原子哥的一模一样没有问题,
也没有改动。
电路上我上拉10k、4.7k、2k、1k我都试过了都不行,并且这两根通讯线很短,这到底是为什么呢?原子哥!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。