找回密码
 注册
关于网站域名变更的通知
查看: 1717|回复: 22
打印 上一主题 下一主题

IIC的采样方式

[复制链接]
  • TA的每日心情

    2025-7-22 15:01
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    跳转到指定楼层
    1#
     楼主| 发表于 2025-6-27 16:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本来想在老帖里发,想了想还是得发一个新帖:
    6 W3 V0 a$ t) b" z; u3 {' d: a0 ~6 H4 m( a
    本人一直没搞清楚IIC的采样方式,目前看到了三种采样方法的说明:高电平采样、上升延采样+高电平采样、上下边沿双采样
    0 t2 k* v3 n4 K: p; ~1 c- v* P3 ^' L" K8 v
    1、高电平采样:许多文献或者帖子都说明了是高电平采样,但是似乎没有找到盖棺定论的决定性文献,如果是根据建立保持时间的时序要求反推,时钟高电平处肯定是有采样的,因为一般边沿采样的建立保持时间都是以某个时钟边沿为参考,但是I2C的保持时间是以下降沿为参考,也就是说上升沿到下降沿之间有采样点,但是无法判断是高电平采样还是边沿采样+ ~( }9 _- ?, T5 y1 [9 p$ E! }
    2、上升延采样+高电平采样:该说法具体内容是,i2c内部有边沿敏感电路,在上升沿会采样数据,而在高电平采样是为了判断是否出现了star、stop信号,因此还是需要保证边缘的单调性
    : d  g2 ]0 g, c. K  z6 m3、上下边沿双采样:该说法来源与本站某贴中的贴友“其实I2C的采样也是边沿采样,只不过是上下沿都采一次”
    $ i# q0 P4 K, `; t* ?- [' ~% {* T9 i$ U1 P3 u/ o
    因为本人之前一直以为是高电平采样,因此觉得边缘稍微有一点回沟或者平台不会有问题,但实际好像不是这么回事。虽然几种采样形式没有对测试结果没有影响,但是会影响对信号质量的评估,有时候iic边沿就是存在回沟无法消除,最终评估是否可接受时还是需要回到采样的本质,需要从理论和测试的情况下能判断信号质量符合预期。
    % e" n  A5 n1 a: r) w3 j7 f5 B! G) g0 C
    希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源5 a4 F' X: k1 |4 y0 l
    6 T) L+ F* ?) H2 h6 ?$ |  i3 g" G- F

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 不錯的問題!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-7-3 15:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2025-7-3 16:34 | 只看该作者
    随便找个支持iic的芯片,去看时序图。

    点评

    谢谢分享!: 5.0
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号  详情 回复 发表于 2025-7-3 23:52
    谢谢分享!: 5
    混也要混得有品些!^_^  发表于 2025-7-3 16:44

    评分

    参与人数 1威望 +1 收起 理由
    minicizi + 1 来了老弟

    查看全部评分

    该用户从未签到

    推荐
    发表于 2025-7-4 18:21 | 只看该作者
    Dc2024101522a 发表于 2025-7-3 23:52* c8 X; Z1 G; t' g
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...

    1 m, S, }. f& X' b3 m! O8 m: P+ Q$ H1 E3 Y6 F
    I2C START / STOP Detector Verilog Code/ B- i" f* U* m. J  d

    % I( c$ ^+ q! M5 J
    ; R9 h1 S# w9 i( f. Q7 {4 B# G
    module i2c_start_stop_detector (
    & d+ e. L( k$ e+ w9 p    input  wire clk,       // 系統時鐘5 @1 E/ G$ i3 r. J% M5 G
        input  wire rst_n,     // 非同步 Reset6 b8 w: E" Z8 A, V
        input  wire sda,       // I2C 資料線
    6 n# k* Z5 c0 b7 s1 l4 h    input  wire scl,       // I2C 時鐘線
    , T' ^! p  M, _3 J    output reg  start_detected, // Start 條件偵測到$ k6 ?# L" H4 }( v
        output reg  stop_detected   // Stop 條件偵測到
    ' J# M) n/ U" E$ K, c) h);, \' k. z! [) t4 [1 Y, S
      o: V5 Z1 z6 V* N

    8 _8 D' c6 A: x    // 前兩個時鐘週期的 SDA 與 SCL 值5 a  N/ k! r, b; b/ v. B
        reg sda_d1, sda_d2;
    9 R: |# Y# k1 G) d, M  Q, y    reg scl_d1;
    ) E6 Y4 Q2 V: _' e& n% u" w
      ]! Y. A: j' y2 C5 u, x  t$ j

    ( {/ K% w! N3 w! y: `: l- S8 ]    wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);
    ( p. {, P6 y: ]1 r) K( M    wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);# x/ }$ L/ p- A  t5 M; C% g

    & Q" ]! ?: ]( X

    % {( S' M3 x+ X5 _) {9 A    // Sample SDA and SCL
    + H3 }6 \7 u+ N0 O7 h, v  b    always @(posedge clk or negedge rst_n) begin
    ! R' l. ?( k/ M; Z3 K" m2 d        if (!rst_n) begin
    - s/ q' R+ d: i4 N- _( z/ p2 l            sda_d1 <= 1'b1;: {7 M# I% [* L9 P( A' K  @
                sda_d2 <= 1'b1;
    ) N2 v, J6 Z1 U            scl_d1 <= 1'b1;
    1 D& S+ |& a1 S$ Y        end else begin6 U+ k5 i, C+ e. l+ }" s
                sda_d2 <= sda_d1;1 R) X/ e- @3 ~' H9 C8 N
                sda_d1 <= sda;" i/ k: i7 r' }: ]% G0 A+ J# g
                scl_d1 <= scl;
    ' D( z0 _# ~/ b! S4 P        end# B9 Z' I8 B  f2 Y. Z
        end
    ) h4 P2 j  p6 G; v3 a0 T1 ]. I3 f$ ^4 b4 O* z

    + v6 s8 J  P7 }2 `. R7 \* f    // 偵測 Start / Stop 條件
    ! b+ j# j/ e0 g0 f& `    always @(posedge clk or negedge rst_n) begin8 A5 e+ c' X9 s# l# ^. J( J
            if (!rst_n) begin
    4 \) X" S) v- @9 H/ M            start_detected <= 1'b0;
    5 l- M2 M$ g5 K: h            stop_detected <= 1'b0;6 I  T8 D- k4 X( t
            end else begin
    . u! n4 G, `, u3 P" H) l            // I2C START: SDA falling while SCL is high1 ^% C! Z8 K9 K7 b- L, D
                start_detected <= sda_falling && (scl_d1 == 1'b1);
    # I1 O3 A9 V) _- V9 y            // I2C STOP:  SDA rising while SCL is high
    ) u3 C0 j8 W6 B6 w% t            stop_detected <= sda_rising  && (scl_d1 == 1'b1);+ T$ w- c4 A8 M4 {
            end5 k* e) g& t0 }
        end
    $ `& O5 e" L, _1 _3 i* m7 H3 r; C' Z/ s+ Q+ r3 J

    4 f% z) K0 X) u- Y1 O, fendmodule$ ~- O4 \  f, z- C. b6 R
    5 ~! [7 @! L, g" R2 c% J

    9 x- d0 e0 q  H% A
    : d6 Z1 U; q+ M8 {1 t' }# G

    该用户从未签到

    推荐
    发表于 2025-7-11 17:34 | 只看该作者
    本帖最后由 超級狗 于 2025-7-14 10:29 编辑 ) {) {) n9 u1 \+ I' i1 D  ]3 f
    xmrxmr 发表于 2025-7-11 16:58
    ( e6 n& V- ^4 {! S4 eI2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...
    + k, X: ~5 A9 E3 m
    菜英文規範解讀
    0 v1 [4 X; w& M. x7 C它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。
    : _- c' X% r6 B  A2 G  H6 Z3 `( H* r3 @
    I2C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。
    5 P  k7 l! b+ ?: w) ^: o
    $ p/ t# n7 \+ h2 [- l很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。0 G5 V9 d, u; T6 @5 s

    4 ]+ p) B$ r) g2 s' @這是狗弟翻閱許多論壇討論,及技術文檔後得到的心得。: i  I, k0 Z# O. L/ S, q2 j
    ( C0 f2 \7 g* Y3 D
    信者恆信,不信者永不信
    / `7 O( n4 v0 [. v- A
    + u: L* M  }0 H7 {" x7 {' m

    点评

    学到了,感谢狗哥  详情 回复 发表于 2025-7-14 09:37
    爺死踢(ST)Two-Wire Serial EEPROM M24512 規格書。  详情 回复 发表于 2025-7-14 08:56
    踢哀(TI)文檔內容節錄!  详情 回复 发表于 2025-7-14 08:45
  • TA的每日心情
    擦汗
    2024-5-14 15:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2025-6-27 16:39 | 只看该作者
    高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏输出,时钟和数据线都是上拉,空闲的时候释放总线,那么时钟肯定是高电平。-->那就知道了是高电平采样

    点评

    是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第  详情 回复 发表于 2025-6-27 17:27

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 熱心人士!

    查看全部评分

  • TA的每日心情

    2025-7-22 15:01
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    6#
     楼主| 发表于 2025-6-27 17:27 | 只看该作者
    wen11902 发表于 2025-6-27 16:39
    9 D) S* ^0 |5 h) S5 w  r( X高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏 ...

    1 v) e" V* p( m- F+ \( D5 K  B是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第二种采样方式,边沿的质量需要更多的考虑,比如该回沟会不会导致误判或者误采样。
    * w  \3 }9 m, u* h* U

    该用户从未签到

    7#
    发表于 2025-6-28 19:47 | 只看该作者
    本帖最后由 huo_xing 于 2025-6-28 19:51 编辑
    % m% m  p4 f/ O# E3 ^8 B% e8 \" X8 t8 F
    随便找个支持iic的芯片,去看时序图。下面是百度的iic工作时序

    1.png (65.37 KB, 下载次数: 56)

    1.png
  • TA的每日心情

    2025-7-22 15:01
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    8#
     楼主| 发表于 2025-7-3 23:52 | 只看该作者
    Dc2025042345a 发表于 2025-7-3 16:34- u& c; ?1 O  L7 Z# T6 Z
    随便找个支持iic的芯片,去看时序图。

    ; _: x, v) K/ Z# H找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号4 P$ e6 ]  a. }! F' l0 j. X" F

    点评

    I2C START / STOP Detector Verilog Code module i2c_start_stop_detector ( input wire clk, // 系統時鐘 input wire rst_n, // 非同步 Reset input wire sda, // I2C 資  详情 回复 发表于 2025-7-4 18:21
    I2C START / STOP Detector 我知道樓主要講什麼,「不懂!」。 謝謝!再聯絡。 @#$%^&*!... SDA 當觸發,正、負緣鎖 SCL 狀態啦!  详情 回复 发表于 2025-7-4 09:20
    建議訪問一下人工腦殘(AI)!  详情 回复 发表于 2025-7-4 08:08

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 朋友挖坑補償!

    查看全部评分

    该用户从未签到

    9#
    发表于 2025-7-4 08:08 | 只看该作者
    高电平采样star、restar和stop这些标志信号
    * t! K* G0 E5 H3 g- k! T
    建議訪問一下人工腦殘AI)!
    ( S; U: v$ }1 g( O  w) e1 F
    6 b4 x$ ^' D) B/ \- m. d
    ' T0 n& c8 Y' |; @" i! U

    该用户从未签到

    10#
    发表于 2025-7-4 09:20 | 只看该作者
    本帖最后由 超級狗 于 2025-7-9 08:47 编辑
    / K0 m6 w8 j9 Q$ W
    Dc2024101522a 发表于 2025-7-3 23:52* E0 F3 U, P2 P3 ]  f
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...

    7 h3 m3 V/ w, F4 r4 y" z' LI2C START / STOP Detector
    4 x' P7 s5 j9 J9 v% I: v+ I9 o/ U: K" y! z6 Z/ n
    我知道樓主要講什麼,「不懂!」。
    0 P% O' [( B9 J: c& F* ?  F+ ]; I% u- R1 R' c  b
    謝謝!再聯絡。" E) N: x; ]. \

    ! ^0 ~" P5 J$ F1 C+ J" W; {@#$%^&*!...# w6 ]( L1 f. L2 z- T, U

    & a  ^. W! Z8 t. l* w9 sSDA 當觸發,正、負緣鎖 SCL 狀態啦!4 Y0 X' O+ A$ G) O/ q* g7 x

    ! o' B; j7 c- U5 q( b8 H2 U/ f6 Q! ^, T" ?

    8 H! I2 T; m  p% P' P+ A
    $ [- ~& J& Y& d, W4 \4 A+ ?# p% l" M/ R. s

    I2C Start and Stop Detector.jpg (36.22 KB, 下载次数: 31)

    I2C Start and Stop Detector.jpg

    NamNguyenThesis.pdf

    1.36 MB, 下载次数: 1, 下载积分: 威望 -5

    点评

    想不到狗弟塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,小弟決定明天和唐伯虎一樣改賣字畫。 但聽聞唐伯虎的風流倜儻是小說家寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。  详情 回复 发表于 2025-7-6 19:19

    该用户从未签到

    11#
    发表于 2025-7-6 19:19 | 只看该作者
    本帖最后由 超級狗 于 2025-7-8 08:55 编辑 , F' f2 n+ w- e) x# {
    超級狗 发表于 2025-7-4 09:20
    9 E) y# J& x6 x4 e1 N8 z$ HI2C START / STOP Detector
    " ]% C0 e: A' C2 N2 v, ~2 _1 }. x5 t8 b* o  V, a! j$ J* B* E4 m& S
    我知道樓主要講什麼,「不懂!」。
    6 J0 A; ]' s, H
    想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。- `$ V* n. `7 N" \6 P1 j; O6 O& @

    % W+ I6 f7 j7 g6 p1 M
    + w0 I& W9 n1 J4 W- I* Y' `. y3 Q4 h- g
    但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。1 a. n8 d" R( h1 T
    : Q) T9 X- d. M$ M
  • TA的每日心情
    郁闷
    2025-8-29 15:48
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    12#
    发表于 2025-7-11 16:58 | 只看该作者
    I2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以关注Spike Time这个参数

    批注 2025-07-11 165434.jpg (16.73 KB, 下载次数: 4)

    批注 2025-07-11 165434.jpg

    点评

    菜英文規範解讀 它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大家容易陷入的坑。 IC 總線在上升緣(Rising Time)採樣之後,資料就不會變了。時鐘在那邊抖或在那邊跳,都  详情 回复 发表于 2025-7-11 17:34

    该用户从未签到

    13#
    发表于 2025-7-14 08:45 | 只看该作者
    超級狗 发表于 2025-7-11 17:34
    7 T$ U: t8 m2 }& X菜英文規範解讀( n, `1 l( ]7 d7 k
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    7 F0 ^* e$ r* {4 ?; [/ F4 o
    踢哀TI)文檔內容節錄!
    % A( c* s# z7 s- z
    9 G) r& B1 ~; i* g9 T3 f) ~% p/ X+ h8 ^# L2 R3 l3 v( U. q+ A

    I2C Bus Logic Ones and Logic Zeros.jpg (32.5 KB, 下载次数: 5)

    I2C Bus Logic Ones and Logic Zeros.jpg

    sbaa565.pdf

    1.14 MB, 下载次数: 0, 下载积分: 威望 -5

    该用户从未签到

    14#
    发表于 2025-7-14 08:56 | 只看该作者
    超級狗 发表于 2025-7-11 17:34! j( V3 u5 f8 r6 r4 ^% n
    菜英文規範解讀
      n$ ]& E; J8 D7 \& U它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    - z/ f& M% E" _8 r* r3 K爺死踢ST)Two-Wire Serial EEPROM M24512 規格書。
    6 ?, v8 i& q# {" _1 A
    4 n4 }3 {" K+ ?! X9 T
    0 ~! K6 B* ?9 C6 |  }. [9 a: \$ k

    ST M24512 I2C Data Input.jpg (34.09 KB, 下载次数: 1)

    ST M24512 I2C Data Input.jpg

    ST M24512.pdf

    732.79 KB, 下载次数: 0, 下载积分: 威望 -5

  • TA的每日心情
    郁闷
    2025-8-29 15:48
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    15#
    发表于 2025-7-14 09:37 | 只看该作者
    超級狗 发表于 2025-7-11 17:34
    * P0 D. e; h$ P( ]2 @, v. d% b菜英文規範解讀/ x% g1 [/ s! z7 `; R8 `
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    . n: Q" T. l2 j; D+ q
    学到了,感谢狗哥1 X: ?) E2 v5 d& N8 E/ a' F4 _$ T

    点评

    谢谢分享!: 5.0
    感谢狗狗 加油加油  详情 回复 发表于 2025-7-23 15:39
    谢谢分享!: 5
    其實您提到內部設計濾波電路,濾除那些不穩定的狀態,有些技術文檔是有提到的。^_^  发表于 2025-7-14 10:20

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 快樂學習、努力過活!

    查看全部评分

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-1 01:06 , Processed in 0.140625 second(s), 29 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表