打印
[应用相关]

I2C时序学习笔记

[复制链接]
908|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vigous1|  楼主 | 2015-3-29 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
仔细看了下reference manual,需要区分两个名词:
输入时钟频率 peripheral input clock frequency。分为at least 2MHz in Standard mode & 4MHz in Fast mode。需要在I2C_CR2寄存器中写入。
通讯速度 communication speed。分为standard speed (up to 100kHz) & fast speed (up to 400kHz)。需要使用CR2中写入的频率及高低电平持续时间计算得到。计算所得参数写入I2C_CCR寄存器中。

在实现交替往两个从设备读写数据的过程中,常出现I2C总线被挂起的情况,动作无法继续进行。踉踉跄跄地把程序糊好搞定,来整理一下I2C接口的读写时序:
起始条件为SCL为高电平时,SDA线由高至低。ACK为SDA上的低电平,时间大于一个SCL周期。停止条件为SCL为高电平时,SDA由低至高的跳变。

S:起始条件;A:ACK;NA:no ACK;P:停止条件。
地址的最后一位为1时,从机进入发送模式,否则从机默认为接收模式。

上述为I2C接口一般时序,对具体I2C总线上芯片的控制,需要根据芯片数据手册上给出的时序编程。

沙发
vigous1|  楼主 | 2015-3-29 11:13 | 只看该作者
PS:在寄存器中,CR1的最高位SWRST可以用来释放被挂起的总线。

使用特权

评论回复
板凳
energy1| | 2015-3-29 18:13 | 只看该作者
I2C时序很重要

使用特权

评论回复
地板
mmuuss586| | 2015-3-29 18:47 | 只看该作者
学习下,谢谢分享;

使用特权

评论回复
5
powerful1| | 2015-3-29 18:52 | 只看该作者
对具体I2C总线上芯片的控制,需要根据芯片数据手册上给出的时序编程。

使用特权

评论回复
6
lovecat2015| | 2015-3-30 16:50 | 只看该作者
I2C读写flash的速度如何呢?

使用特权

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

本版积分规则

88

主题

427

帖子

15

粉丝