你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F0的I2C时序

[复制链接]
stanleysit 发布时间:2018-3-31 14:41
这个问题,我在论坛发过帖子,也在群里问过,问题还是没能解决,于是恳请FAE支持。
# D& ^, U% [7 @' G5 h" f% _; }  j, y在看STM32F0的用户手册中发现一个困惑不已的时序,如下图所示,其中红色线条是我自己画的。
4 ^( q7 s: y6 T& X0 R# J; V  k以我的理解,EV4这个事件应该发生在红线那个时间点,而手册中却不是这样,这是什么原因?是文档的作者刻意为了体现时钟延展的功能而设计的?还是说实际上就是文档中所示的?
. N: ?* M  Y/ @3 W* S- n QQ截图20180329225659-01.jpg
! Q3 R+ v+ M2 L( K' L  c
赞 收藏 1 评论11 发布时间:2018-3-31 14:41

举报

11个回答
butterflyspring 回答时间:2018-4-2 10:54:25
首先TXE为1时,说明DR寄存器为空,DATA2那段为什么会立刻拉低呢?没有到当前数据的ACK为什么要放数据到DR?如果没放,TXD为何会拉低?EV4,EV5同理..

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

stanleysit 回答时间:2018-4-2 14:47:14
本帖最后由 stanleysit 于 2018-4-2 14:52 编辑 - i! ?9 y7 m0 D
butterflyspring 发表于 2018-4-2 10:54
3 d# S" h- b( ?1 _1 Z$ F  r8 t1 Q1 g. C首先TXE为1时,说明DR寄存器为空,DATA2那段为什么会立刻拉低呢?没有到当前数据的ACK为什么要放数据到DR?如果 ...

' W4 `: _7 _6 H, z4 ^3 c# bTXE位在DATA2那段不是立刻拉高,是等到DR中的数据转移到移位寄存器时拉高,然后DR空,TXIS也置位,这时就发生EV4事件,写入DATA3,紧接着TXE拉低。EV4事件应当发生在类似EV3的位置,而不是官方文档中跑到DATA2的ack信号之后,除非在之前没有来得及处理才会到官方文档中的位置。不知道我理解的对不对
stanleysit 回答时间:2018-4-2 14:55:01
butterflyspring 发表于 2018-4-2 10:544 g" e! N( S4 e! t3 ]; L
首先TXE为1时,说明DR寄存器为空,DATA2那段为什么会立刻拉低呢?没有到当前数据的ACK为什么要放数据到DR?如果 ...

! N2 h3 H, h! Z# s% p8 b至于官方文档中的时序图data2转移到移位寄存器后要不要立刻写data3,这是软件处理的问题,可以这时候写,也可以等对方应答后再写,但EV4事件是发生在data2转移到移位寄存器后就发生
stanleysit 回答时间:2018-4-2 14:59:00
butterflyspring 发表于 2018-4-2 10:54
' y* e, k1 Y8 D( @  b5 o首先TXE为1时,说明DR寄存器为空,DATA2那段为什么会立刻拉低呢?没有到当前数据的ACK为什么要放数据到DR?如果 ...

: _7 c+ K* p2 q% r) h; ]如果按您说的一定要等到对方应答后再写,那么该时序图中的EV5事件也不用写入data4了
butterflyspring 回答时间:2018-4-2 15:21:35
stanleysit 发表于 2018-4-2 14:47/ x! \/ k3 G# c8 r/ ?
TXE位在DATA2那段不是立刻拉高,是等到DR中的数据转移到移位寄存器时拉高,然后DR空,TXIS也置位,这时就 ...
1 D) l& {8 j- Y+ ^5 B  s8 z
我没看明白你说的意思,首先你第一个修改的红色线,TXD为什么在Data2会下降?肯定是在收到ACK之后才开始处理下一个数据呀
butterflyspring 回答时间:2018-4-2 15:29:16
我大概明白你的意思,如果data2那里,你要在没ACK就放数据,这没关系,根据自己应用就好.如果你提前放了,那EV4上面的TXIS就和DATA2那个TXIS一样.
stanleysit 回答时间:2018-4-2 15:39:43
butterflyspring 发表于 2018-4-2 15:29
1 V7 C+ t$ d8 y% }8 N我大概明白你的意思,如果data2那里,你要在没ACK就放数据,这没关系,根据自己应用就好.如果你提前放了,那EV4 ...

3 ^/ ?. w6 @& P9 j( w+ G0 u其实我是想表达的时官方文档的那个时序图有问题,真正的EV4并不是发生在官方文档指出的那个位置,而是我画的红线第一处与官方时序不同的那个位置,至于什么时候处理EV4这是另一回事,可以在官方指出的那个位置处理。EV4发生在什么位置与什么时候处理是两回事,所以我觉得官方的文档会在一定程度误导读者,请您指点
butterflyspring 回答时间:2018-4-2 15:55:53
stanleysit 发表于 2018-4-2 15:39" q* `6 _* q4 M9 ~1 U. O+ }
其实我是想表达的时官方文档的那个时序图有问题,真正的EV4并不是发生在官方文档指出的那个位置,而是我 ...

5 y6 w! ^' c! }! }7 V6 J所以就说,看你什么时候放那个data3了
stanleysit 回答时间:2018-4-2 16:03:25
butterflyspring 发表于 2018-4-2 15:555 `4 d# p: L) \6 J1 `/ L( [
所以就说,看你什么时候放那个data3了
. E, r5 g, W6 e3 t* e1 d7 Z
写入data3可以在我画的红线第一次与官方文档不同的位置,也可以在官方文档所指的位置,但EV4这个事件,是发生在data2转移至移位寄存器后立刻就发生的,官方文档并没有强调这一点,这对读者的理解是存在误导的,会让人误以为EV4就是在官方文档所指的位置发生。
butterflyspring 回答时间:2018-4-2 16:08:14
stanleysit 发表于 2018-4-2 16:03! `7 z- G+ }3 P$ F( v4 e+ ?/ r4 p+ h
写入data3可以在我画的红线第一次与官方文档不同的位置,也可以在官方文档所指的位置,但EV4这个事件,是 ...
, G1 k! H0 f5 a, w- V) d& J
EV3是data2,EV4是data3呀.....
stanleysit 回答时间:2018-4-4 12:52:30
butterflyspring 发表于 2018-4-2 16:081 p) C4 _$ x$ p/ A2 k) J
EV3是data2,EV4是data3呀.....
( p. \" U% d2 z7 x, X. I
这个我知道啊,我表达的是对的啊

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版