为什么我的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我都试过了都不行,并且这两根通讯线很短,这到底是为什么呢?原子哥!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
xiaoyan
1楼-- · 2019-07-25 16:35
回复【楼主位】47933673:
---------------------------------
一般I2C的传感器没那么慢吧,看下传感器的I2C时序。
八度空间
2楼-- · 2019-07-25 21:05
回复【楼主位】47933673:
---------------------------------
IIC一般是不超所400K的频率都没问题,不过有些器件就很蛋疼了,手册上限制在什么100K以内的,实际用300K传输都可以的。

楼主还是仔细看看相关的数据手册,了解下他的传输频率吧,不同的器件有设定不同的频率范围的,呵呵
47933673
3楼-- · 2019-07-25 22:09
这个传感器手册上面说的是可以达到400kHZ,如果要说这个传感器速率低的话,为什么我发送程序频率都是很高的,都是用原子哥的程序,为什么就接受程序需要延时这么长时间
团长前人
4楼-- · 2019-07-25 23:33
 精彩回答 2  元偷偷看……
aiyeba
5楼-- · 2019-07-26 05:09
团长前人 发表于 2017-11-15 08:58
亲,我遇到了和你一样的问题,请问您的问题解决了吗?

你没看到他的  发送函数里面用的是延时 是  ms级别的吗    我只能呵呵。

团长前人
6楼-- · 2019-07-26 05:22
延时大了影响其他部分,所以希望降低延时

一周热门 更多>