打印
[STM32F4]

STM32F4 I2C通信问题

[复制链接]
1687|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jwater|  楼主 | 2016-5-19 11:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
I2C功能从F1移植到F4后发现,F4的start状态时延比F1的少一个CLK,导致通信不能,程序是ST的标准库,这怎么改啊?

stm32f1.png (50.88 KB )

STM32F1的I2C通信

STM32F1的I2C通信

STM32F4.png (9.02 KB )

STM32F4的I2C通信

STM32F4的I2C通信
沙发
xmshao| | 2016-5-19 16:19 | 只看该作者
那个启动脉冲只是个沿跳变。

如果使用硬件I2C,那个跳变时间基本是固定的,对于STM32F4来说,一般不超过300ns.

是别的原因吧,比方时钟变化导致速率变化了?

使用特权

评论回复
板凳
Jwater|  楼主 | 2016-5-19 22:02 | 只看该作者
找到问题了,是上拉电阻的阻值不对

使用特权

评论回复
地板
huangcunxiake| | 2016-5-20 09:57 | 只看该作者
上拉电阻的值是多少才对啊?

使用特权

评论回复
5
稳稳の幸福| | 2016-5-20 15:45 | 只看该作者
应该是选择5.1KΩ的电阻吧。

使用特权

评论回复
6
稳稳の幸福| | 2016-5-20 15:47 | 只看该作者

I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系

在我们的实际设计中,需要清楚I2C的总线的两个特征:
1、串行数据SDA和串行时钟SCL线都是双向线路,通过一个电流源或上拉电阻Rp连接到正的电源电压+VDD,当总线空闲时这两条线路都是高电平。连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C 总线上数据的传输位速率,在标准模式下可达100kbit/s,快速模式(F/S)下可达400kbit/s,高速模式(Hs)下可达3.4Mbit/s。


2、连接到相同总线的IC数量只受到总线的最大电容400pF限制。如果总线线路的负载电容升高,位速率将逐渐下降。
总线规定使用非标准电源电压,不遵从I2C 总线系统电平规定的器件,必须将输入电平连接到有上拉电阻Rp 的VDD电压。

其中的一些术语描述如下:
1,总线输入电平的定义:低电平噪声容限是0.1VDD,高电平噪声容限是0.2VDD。VOL定义为在漏极开路或集电极开路时,有3mA下拉电流时的低电平输出电压,最大值取VOLmax=0.4V,这个3mA是指定的最小下拉电流。在一定范围内,下拉电流越大,驱动能力越强。Rpmin是电源电压的函数,即电源电压越高,Rpmin值越高。Rpmax是负载电容的函数,总线电容越大,即负载越大,Rpmax越低。


2,总线电容是线路连接和管脚的总电容,规定总线输入电流的最大值是10uA,同时规定了上升时间tr的最大值,由于高电平要求0.2VDD的噪声容限,这个输入电流限制了Rp 的最大值。总的高电平输入电流是Rpmax的函数。在电源电压一定时,总的高电平输入电流越大,Rpmax越小。总线的负载电容和上拉电阻的值决定了信号的上升时间tr,规定
trmax=300ns。时间常数等于源端阻抗和总线电容的乘积,上拉电阻太大会造成时间常数过大,从而使上升沿的斜率变小,增大了总线上升时间。

小结:
1、上拉电阻Rp的值由三个参数决定:电源电压、总线电容和连接器件的数量(输入电流+漏电流)。


2、总线电容Cb是一条总线线路连接和管脚的总,单位是pF。由于规定了上升时间,这个电容限制了上拉电阻Rp 的最大值,而电源电压限制了上拉电阻Rp 的最小值,输出级在VOLmax=0.4V 时指定的最小下拉电流是3mA。
如果总线线路的电容负载升高,位速率将逐渐下降,总线的电容负载是400pF 时的,允许最大位速率是1.7Mbit/s 。总线电容负载在100pF~400pF 时时序参数必须呈线性增加。


使用特权

评论回复
7
稳稳の幸福| | 2016-5-20 15:47 | 只看该作者
I2C的上拉电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2K

使用特权

评论回复
8
xmshao| | 2016-5-20 16:24 | 只看该作者
Jwater 发表于 2016-5-19 22:02
找到问题了,是上拉电阻的阻值不对

上拉电阻是会对通信速率有影响。不要太大,合适就行。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝