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

IIC的采样方式

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

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

    [LV.3]偶尔看看II

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

    EDA365欢迎您登录!

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

    x
    本来想在老帖里发,想了想还是得发一个新帖:
    # ^9 i6 g: J9 [7 y7 z
    3 g* m4 _$ \( }+ u- E本人一直没搞清楚IIC的采样方式,目前看到了三种采样方法的说明:高电平采样、上升延采样+高电平采样、上下边沿双采样7 ]+ `+ D' ^: f
    . L! Y- w% d* b; ]
    1、高电平采样:许多文献或者帖子都说明了是高电平采样,但是似乎没有找到盖棺定论的决定性文献,如果是根据建立保持时间的时序要求反推,时钟高电平处肯定是有采样的,因为一般边沿采样的建立保持时间都是以某个时钟边沿为参考,但是I2C的保持时间是以下降沿为参考,也就是说上升沿到下降沿之间有采样点,但是无法判断是高电平采样还是边沿采样
    # d5 ^& G9 _- b: H# o, ~! m) D2、上升延采样+高电平采样:该说法具体内容是,i2c内部有边沿敏感电路,在上升沿会采样数据,而在高电平采样是为了判断是否出现了star、stop信号,因此还是需要保证边缘的单调性
      T, F6 ]: m  n3、上下边沿双采样:该说法来源与本站某贴中的贴友“其实I2C的采样也是边沿采样,只不过是上下沿都采一次”% B' l, a! F) P! E! r" x' q

    & h4 g) `5 S* b( C8 L因为本人之前一直以为是高电平采样,因此觉得边缘稍微有一点回沟或者平台不会有问题,但实际好像不是这么回事。虽然几种采样形式没有对测试结果没有影响,但是会影响对信号质量的评估,有时候iic边沿就是存在回沟无法消除,最终评估是否可接受时还是需要回到采样的本质,需要从理论和测试的情况下能判断信号质量符合预期。
    + {* \; G3 @0 U: J  x& O2 u6 K! Y7 _' T8 u8 C
    希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源
    6 C9 H2 d2 w  {1 H) o" C& b3 l7 @1 u+ x0 Z2 F6 K% a

    评分

    参与人数 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
    " j5 ~7 ~3 ?8 t. F, W找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
    1 z' o# G" H1 f6 S, ?) @

    ' x: o% Y9 `4 c1 c8 o( YI2C START / STOP Detector Verilog Code+ X( S2 b# i6 P/ x$ y- J  s

    9 q  v& D! H; b) Y1 K* x* n8 t

    * P$ m, d- ]9 p- ]module i2c_start_stop_detector (% j  c% T! k: _
        input  wire clk,       // 系統時鐘
    , k0 w, r& a/ p' ^- T6 o7 l    input  wire rst_n,     // 非同步 Reset
    " B; ?$ e  r8 P) _0 _# F  f" m2 t4 j    input  wire sda,       // I2C 資料線9 f& y; g' q8 d2 d
        input  wire scl,       // I2C 時鐘線; _" V% s* U' G+ [
        output reg  start_detected, // Start 條件偵測到
    ' Y3 j, Z7 g2 R7 Q5 e: G    output reg  stop_detected   // Stop 條件偵測到
    7 c1 c8 a' M1 U6 i$ K);
    2 r8 k8 i/ m4 e+ O8 C$ j* w& U( j3 M; S7 g$ E5 O( V

    5 Z. F- U6 c, h7 d: K. H( O    // 前兩個時鐘週期的 SDA 與 SCL 值" T9 I7 o+ Y; D8 z$ e
        reg sda_d1, sda_d2;
    3 }% `' g6 ?2 M    reg scl_d1;0 W* i+ G9 f$ L; k& o
    2 ^" u/ R6 ?+ K* D; H7 k/ F
    " t. R: @: T1 p. N' Z( \
        wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);. H" C0 |7 i$ f) D+ I6 t* z5 ]
        wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);! N  |2 i, o! T) k

    ' Y8 P. v$ z% T; J

    - k# J4 v# z+ z% B! J    // Sample SDA and SCL
    : n+ r% i! u% ^# g    always @(posedge clk or negedge rst_n) begin. s4 W$ v: i: Y" e" X2 ?
            if (!rst_n) begin
    & o# ?' \0 r( u- Y+ ~. n. q            sda_d1 <= 1'b1;! p! M% [' x$ o5 j/ d" B; j
                sda_d2 <= 1'b1;8 @; z( H" w* Z, W- `
                scl_d1 <= 1'b1;
    : d5 o  W9 |4 r$ b        end else begin0 P5 d' Z' ~( V% z8 [; @
                sda_d2 <= sda_d1;
    + s' ]) F8 G8 D! F            sda_d1 <= sda;/ K2 J: b; I- z% e3 W# J
                scl_d1 <= scl;8 O. M0 u; J4 ~2 E, g" O
            end
    3 D" [( c" w& o6 R. Q    end
    5 q) {1 p: B2 b- y& G+ `
    9 a( j7 O8 J4 G, f: i) z( {
    " H# ~! g- q4 t) ?0 ~) p" D
        // 偵測 Start / Stop 條件
    5 Y! L+ x/ O  ]; N/ _/ p5 u6 c    always @(posedge clk or negedge rst_n) begin
    ' v/ d; ^+ y6 y. L* q        if (!rst_n) begin
    8 o; W# }& T: |) X# `            start_detected <= 1'b0;  s2 A/ B0 B3 G  B: [1 W  q1 C
                stop_detected <= 1'b0;3 r* m1 q, U& }; F
            end else begin
    5 P- d6 Z" S/ Y4 _! |, I) i  H4 h            // I2C START: SDA falling while SCL is high
    ) q1 r9 I+ T) y6 u            start_detected <= sda_falling && (scl_d1 == 1'b1);" j" b' v% ?2 [- |% @8 [
                // I2C STOP:  SDA rising while SCL is high
    3 i5 I9 z- Q0 m) `            stop_detected <= sda_rising  && (scl_d1 == 1'b1);
    0 q* q) u5 h+ T: s        end
    , ~: j* }' T1 U& u    end
    " G3 U1 [8 z. w1 L& l/ w4 P9 k0 \' [4 n' E
    % ?' J) g+ q" B
    endmodule$ T: q- U- V$ H1 U  o7 [* y

    , }' ^, C& w( F$ g; A$ e4 {
    : l4 b, p$ Z0 F/ ?( S

    - r- j- u  e$ m7 x5 @

    该用户从未签到

    推荐
    发表于 2025-7-11 17:34 | 只看该作者
    本帖最后由 超級狗 于 2025-7-14 10:29 编辑 & y" G5 J$ Y# t& W3 n4 Z$ C
    xmrxmr 发表于 2025-7-11 16:58
    ' @: o0 ^1 G6 {# A  ?I2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...
    + u5 g, ?+ b1 d- K: V, \
    菜英文規範解讀
    7 Y9 h2 m: |+ w, b' H& a它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。
    + L8 _. ?8 k1 j6 }7 A* H# F2 x
    / N5 y! _) B% X: _4 O8 k  iI2C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。; D5 y# c+ D1 K, h, z

    , Z8 b+ G# P  H: D很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。" \1 M- L) _* V: S! _
    9 J# T* \$ ~. Q$ L
    這是狗弟翻閱許多論壇討論,及技術文檔後得到的心得。$ d7 }: R" A, L: V! Y! e0 S: ?
    3 V+ V7 P1 u. K! }& ?4 k* \
    信者恆信,不信者永不信
    1 M5 F+ _) W; B# R- R- |- J+ c, d$ c

    点评

    学到了,感谢狗哥  详情 回复 发表于 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
    . }  u8 z- u: d% L. D' X( j* r" g高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏 ...
    $ }4 g4 y: m0 K' L
    是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第二种采样方式,边沿的质量需要更多的考虑,比如该回沟会不会导致误判或者误采样。# A/ k2 `% r4 F: b+ {! W; T# ^

    该用户从未签到

    7#
    发表于 2025-6-28 19:47 | 只看该作者
    本帖最后由 huo_xing 于 2025-6-28 19:51 编辑
    ) ~- }5 n, G( b( E2 |# S) M, j
    ! Z+ m8 O& M* m9 ~9 Q4 y随便找个支持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' `2 b% X2 n1 n8 N% [/ l
    随便找个支持iic的芯片,去看时序图。
    , N2 i5 P, j! B) b# n! C1 M* m, d
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号
    ) h0 V1 r1 t" T# a8 r* `1 |- M

    点评

    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这些标志信号

    , |3 ?9 `. S0 f9 I! I7 w8 C. `建議訪問一下人工腦殘AI)!
    $ L8 X0 E6 z. c! g3 I
      m/ w0 F0 [& z% A
    / U5 U1 F( }8 U" m

    该用户从未签到

    10#
    发表于 2025-7-4 09:20 | 只看该作者
    本帖最后由 超級狗 于 2025-7-9 08:47 编辑
    - e, D  L$ G" a3 U: O3 U
    Dc2024101522a 发表于 2025-7-3 23:52
    3 e- H9 C0 S2 Q找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...

      k! k" }7 u0 r% I7 s, K! N# L8 T3 FI2C START / STOP Detector( p! i! i8 Y5 ?$ W/ }
    5 n& k2 l% b% }* C( \  r' ^* ^8 k
    我知道樓主要講什麼,「不懂!」。# S5 J# k  y: j. z) @- k& ^
    6 w- j% y8 v- j, r
    謝謝!再聯絡。1 v! O; f/ x+ L: \
    ! [1 j$ a% I/ ]5 [8 b/ J; \! ~
    @#$%^&*!...' e) J7 N! }( a! u  h  X6 [
    5 p: f1 t2 t4 z0 g, @1 ~
    SDA 當觸發,正、負緣鎖 SCL 狀態啦!3 y/ j, c7 Z% t3 H
    + A5 u/ T8 o& [, D3 s: ~

    & W% i, r( I7 i9 R) k  ~
    0 z; d( o4 a, f2 V( q  Y( j
    3 v( ~0 T! g' Z7 v6 N+ q) \* B  b$ ~; s

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

    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 编辑 5 H# Y4 g' ~. X6 _
    超級狗 发表于 2025-7-4 09:20
    % h8 B  T  B0 WI2C START / STOP Detector
    & [1 `: H+ F& }$ h0 a. `& `+ E4 n+ ^0 C* P! Y2 z7 p9 s
    我知道樓主要講什麼,「不懂!」。
    4 r; V2 X3 w' D3 @% t
    想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。
    ' h8 i: a" r# s9 d6 y6 ^$ x6 y3 N/ ^, l  T
    ' u9 T/ j" b/ x# E, p' x/ g+ n1 D

    5 b$ w( W$ A+ C! L5 M9 n# {  m但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。; e) w8 S* M+ A, S9 i' U2 w0 V5 ?8 Q' m

    2 @8 S: w+ @3 q/ @. N1 D3 C
  • 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, 下载次数: 5)

    批注 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
    ! ^/ A; M  K) K菜英文規範解讀
    : u; a* X0 f1 D) h/ [1 Z) B5 V它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    * F* e/ l6 |; ~3 ?  k% U" n
    踢哀TI)文檔內容節錄!4 o: {( D, B# q3 @3 s4 D, v

    3 c* W- N) Z+ Y. ~! u3 L3 V* K+ i) [  L/ b* b

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

    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
    . v7 }6 g3 Y6 f8 f5 X+ i+ ^+ _菜英文規範解讀- ?% C( I2 Q4 r1 Q
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    ( T9 e3 r: X- A) k. n7 `
    爺死踢ST)Two-Wire Serial EEPROM M24512 規格書。
    # r( Y% E. `* m$ J# D
    % u9 Q# Y% L# I& K+ d$ }  q9 I$ h* q/ i! k# B

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

    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
    ) p7 ~# F/ _0 W! Q5 E. P菜英文規範解讀- ?4 H4 l" h# N! [7 @
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    0 x! m* C: w; r( _: d" g6 |3 R
    学到了,感谢狗哥4 _! ]/ G& b  l

    点评

    谢谢分享!: 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-22 02:53 , Processed in 0.171875 second(s), 29 queries , Gzip On.

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

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

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