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

IIC的采样方式

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

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

    [LV.3]偶尔看看II

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

    EDA365欢迎您登录!

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

    x
    本来想在老帖里发,想了想还是得发一个新帖:6 ]1 G+ |* }, o

    ) k/ X4 Q% _7 o7 T+ [! Z4 J. p本人一直没搞清楚IIC的采样方式,目前看到了三种采样方法的说明:高电平采样、上升延采样+高电平采样、上下边沿双采样( ^- h6 U% K% ~. t# j
    % j/ s  l* q8 m. Z
    1、高电平采样:许多文献或者帖子都说明了是高电平采样,但是似乎没有找到盖棺定论的决定性文献,如果是根据建立保持时间的时序要求反推,时钟高电平处肯定是有采样的,因为一般边沿采样的建立保持时间都是以某个时钟边沿为参考,但是I2C的保持时间是以下降沿为参考,也就是说上升沿到下降沿之间有采样点,但是无法判断是高电平采样还是边沿采样
    3 I* s6 I9 O3 D" F* f; U5 z: A2、上升延采样+高电平采样:该说法具体内容是,i2c内部有边沿敏感电路,在上升沿会采样数据,而在高电平采样是为了判断是否出现了star、stop信号,因此还是需要保证边缘的单调性
    6 Q6 v' f0 }) h3、上下边沿双采样:该说法来源与本站某贴中的贴友“其实I2C的采样也是边沿采样,只不过是上下沿都采一次”
    $ y& }% q5 n2 U, Y1 N: H  c, n8 I/ ]1 {) K8 d
    因为本人之前一直以为是高电平采样,因此觉得边缘稍微有一点回沟或者平台不会有问题,但实际好像不是这么回事。虽然几种采样形式没有对测试结果没有影响,但是会影响对信号质量的评估,有时候iic边沿就是存在回沟无法消除,最终评估是否可接受时还是需要回到采样的本质,需要从理论和测试的情况下能判断信号质量符合预期。
    1 G5 i9 b4 i% d& X" g1 \  ]' p( t1 |: k+ |$ \2 U
    希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源6 Y- `% ]# U5 Z; G
    / f; G4 j' l: c9 q  y& g  p

    评分

    参与人数 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
    # R  l* b! g9 W: v7 Z/ E找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...

    * \: e" K) x% L9 y' F
    7 }5 W8 b$ e) E8 R/ n, t9 H0 P1 @I2C START / STOP Detector Verilog Code3 I3 W5 W. B2 C+ \; _/ I9 d

    2 H9 T/ v& O( ?  ]5 m: y
    # C" T+ X  Z7 H/ j: n4 R4 Z, x( B
    module i2c_start_stop_detector (
    . Y# I' r& T& I# ]: H1 n6 I  Y/ D6 c    input  wire clk,       // 系統時鐘
    5 Y9 W( S" J+ ^: W+ K' P/ k    input  wire rst_n,     // 非同步 Reset
    4 b! f: E: @. ^3 U2 V* s    input  wire sda,       // I2C 資料線
    ; _+ m& E: `  w    input  wire scl,       // I2C 時鐘線
    , H9 v0 E* g3 s& B9 d& U    output reg  start_detected, // Start 條件偵測到
    & v$ h& U3 f( T% j; r, i    output reg  stop_detected   // Stop 條件偵測到
      W( q9 ~: r, j2 m# L- q);
    $ v0 E7 ^! [, B, x1 u
    3 z; K9 l  _" j+ o" D
    ! Y) G9 l) b5 B  M9 O
        // 前兩個時鐘週期的 SDA 與 SCL 值0 G; I0 y0 U$ _# j9 _/ b
        reg sda_d1, sda_d2;
    : m4 k: u, S) x& U9 o    reg scl_d1;
    % G$ \+ r6 s+ Z5 @  L
    * b5 ?. {$ l" B; |; I- W, i( E% }

      m8 O2 O% j* q- W    wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);% e0 t- R6 A% m; r, H5 W" F
        wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);) V. \4 {6 X! W+ ^; I$ }& P$ p
    / x0 v$ G- P2 C. @2 G& b
    $ X. B7 a/ X! P
        // Sample SDA and SCL
    % c  v3 `1 a5 }    always @(posedge clk or negedge rst_n) begin( ]% u5 S8 J6 b! A# w
            if (!rst_n) begin
    $ Y, {5 i3 ]( a0 ~0 E. H" V            sda_d1 <= 1'b1;$ [1 z1 h' a) D
                sda_d2 <= 1'b1;
    ) m1 P8 ^8 Q5 u. ~& t; n5 \+ q$ s2 E            scl_d1 <= 1'b1;
    , ]7 L3 j( }1 _  u' o        end else begin2 a9 H2 E! \0 d) P
                sda_d2 <= sda_d1;
    " ~5 X0 W% V9 q$ d$ Q4 l  e            sda_d1 <= sda;, }) ?4 E: o+ i" E3 w
                scl_d1 <= scl;
      Y0 a$ e( ^% u& t' b4 w4 R+ U/ U# p! `        end6 J1 r6 r+ f( z% Y: i  A
        end8 Y5 J0 Y& Y  u% H# j

    $ x* F- d' N# _1 f; D% x2 T* a

    ! f8 d# r9 `5 a# }# p    // 偵測 Start / Stop 條件9 y/ F3 P1 u, w
        always @(posedge clk or negedge rst_n) begin4 ]( X: p$ P8 k% m
            if (!rst_n) begin
    3 |$ d2 s! P- s- b            start_detected <= 1'b0;- T4 @9 P9 A3 ], C+ d: i8 _- q- X
                stop_detected <= 1'b0;
    ! \  N1 @8 D& k& P        end else begin
    2 g6 N) x6 M! ~( n/ V) @- D  A            // I2C START: SDA falling while SCL is high
    % m, g$ N8 X; {7 M            start_detected <= sda_falling && (scl_d1 == 1'b1);
    1 W  B( z) V+ R8 X# }            // I2C STOP:  SDA rising while SCL is high
    ! _* J" q! _/ Y0 y$ M6 K# c( T; Z            stop_detected <= sda_rising  && (scl_d1 == 1'b1);
    ) G4 M8 k8 {1 {) X0 d7 ?% s4 r2 I( c        end( s$ i4 V7 k; O1 @$ a: f
        end2 m! z1 L9 ^, P/ v3 u
    : q5 G- C5 j& w3 B7 \
    & H0 B, X- g, D
    endmodule
    & l# [4 E' V. j( p; U9 k8 L! U1 S/ a# o5 q
    & n" g; ?, l4 F0 k

    & y- \% s+ B! {, X( s8 [

    该用户从未签到

    推荐
    发表于 2025-7-11 17:34 | 只看该作者
    本帖最后由 超級狗 于 2025-7-14 10:29 编辑
    ' A8 S$ p7 d6 ?6 q3 }7 w+ M
    xmrxmr 发表于 2025-7-11 16:58
    ' e9 r# y& B8 OI2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...
    " Q, b) s* b/ q9 x( O& U( E
    菜英文規範解讀& N- g, X7 D! [8 S' Y+ M
    它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。
    ) p* k" |- E2 ?9 e9 J! D5 c
    . V2 K9 G" i1 W, yI2C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。
    - \, W+ M% Y$ K9 T% O. t) u
    - Q( k. l$ l  y# s$ Y) [很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。
    ) A5 W, n$ \# x0 {# d
    0 U# z9 o4 ]. ~* x) J  |5 W這是狗弟翻閱許多論壇討論,及技術文檔後得到的心得。% f- U1 \9 a9 _1 \0 e* L

    / T4 k% ^. e, F( ]8 j信者恆信,不信者永不信
    $ f! `2 t; q7 p# z+ ^
      }: l; R/ s; f

    点评

    学到了,感谢狗哥  详情 回复 发表于 2025-7-14 09:37
    爺死踢(ST)Two-Wire Serial EEPROM M24512 規格書。  详情 回复 发表于 2025-7-14 08:56
    踢哀(TI)文檔內容節錄!  详情 回复 发表于 2025-7-14 08:45

    该用户从未签到

    14#
    发表于 2025-7-25 10:22 | 只看该作者
    scl 上升沿读数据

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 狗弟知道您是來要賞銀的!

    查看全部评分

  • TA的每日心情
    开心
    2025-7-23 15:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    13#
    发表于 2025-7-23 15:39 | 只看该作者
    xmrxmr 发表于 2025-7-14 09:37
    3 A( A2 G9 J8 Z) A8 e. X, X' k学到了,感谢狗哥

    ' x" Z: B7 Y& Q感谢狗狗 加油加油
    3 g5 ?  ]: p& g) [* g, A3 V

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 您也加油!

    查看全部评分

  • TA的每日心情
    奋斗
    2025-9-24 15:41
  • 签到天数: 86 天

    [LV.6]常住居民II

    12#
    发表于 2025-7-14 09:44 | 只看该作者
    版主的严谨的态度和博学让人敬佩,每天能学到一点小知识。

    点评

    谢谢分享!: 5.0
    谢谢分享!: 5
    小的並沒有博學,之前從規格書中的波形圖,得到的觀念都認為是邊沿採樣,今天有人發問才去仔細研究了一遍。老實說,這一題光花時間找證據,差點要了我的狗命。@_@!!!  发表于 2025-7-14 12:56

    评分

    参与人数 1威望 +5 收起 理由
    超級狗 + 5 共同學習及成長!

    查看全部评分

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

    [LV.2]偶尔看看I

    11#
    发表于 2025-7-14 09:37 | 只看该作者
    超級狗 发表于 2025-7-11 17:34
    ) H' R2 u, f! C1 r菜英文規範解讀% s+ H/ \+ s4 e$ ]
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    + K3 y- O6 o* a: e+ I学到了,感谢狗哥
    ( B- u# R* `& K

    点评

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

    评分

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

    查看全部评分

    该用户从未签到

    10#
    发表于 2025-7-14 08:56 | 只看该作者
    超級狗 发表于 2025-7-11 17:34
    4 r5 y9 x3 ?( I' F6 R" c菜英文規範解讀
    & l" e0 \0 v) s8 B0 h5 y7 N它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    9 ^, I# q5 C' H- G" k" D: A
    爺死踢ST)Two-Wire Serial EEPROM M24512 規格書。
    1 S5 L/ V8 x- o+ V* m8 q1 C* \/ L" }- P

    ! @& s3 @/ J) ?7 J

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

    ST M24512 I2C Data Input.jpg

    ST M24512.pdf

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

    该用户从未签到

    9#
    发表于 2025-7-14 08:45 | 只看该作者
    超級狗 发表于 2025-7-11 17:34# W# D/ K- [! Y8 g
    菜英文規範解讀2 k% n8 g: }, |- q1 o
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    8 ]  P) F+ l: w3 C0 [& S# U
    踢哀TI)文檔內容節錄!9 m3 h4 M1 I8 N: m" p% C

    - p/ C6 {/ j, \$ D2 h" W: J8 X1 L3 r1 S% @; ?

    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

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

    [LV.2]偶尔看看I

    8#
    发表于 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

    该用户从未签到

    7#
    发表于 2025-7-6 19:19 | 只看该作者
    本帖最后由 超級狗 于 2025-7-8 08:55 编辑 , q/ ?: w) x9 E* N( l
    超級狗 发表于 2025-7-4 09:20" U. M4 `7 l% ^3 E! c
    I2C START / STOP Detector1 n: |2 i: E, }! F$ K

    / e. p9 P: e/ t我知道樓主要講什麼,「不懂!」。
    # a% X) E8 B! F/ p, _/ J9 `
    想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。% f; z. q' w. y5 Z2 O( ]' X( E1 v; E
    2 r1 a8 ?) J  k5 Q

    + C, ^6 h0 h. O$ e4 e+ P) J: |4 m' I
    但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。
    + K. R% j! n$ ]. L% D4 e! Y1 q0 f8 i4 K) C& m7 p

    该用户从未签到

    6#
    发表于 2025-7-4 09:20 | 只看该作者
    本帖最后由 超級狗 于 2025-7-9 08:47 编辑 ) t/ i) \- T2 e. x
    Dc2024101522a 发表于 2025-7-3 23:52
      H; `: T0 ^9 J找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
    ; ^( N/ B) c4 e# c1 b" }9 I- S
    I2C START / STOP Detector5 U( P3 O& N: Y" n  |  @

    ' C4 h7 {& e. d& i1 k" P9 \我知道樓主要講什麼,「不懂!」。
    ) A% H$ F! y, m8 y$ J
    ; F3 H* Z  J/ h: Z; g6 {* ]; ~% g謝謝!再聯絡。4 p+ K, ^. R; v; z6 m
    ; h9 |) W3 i7 x+ }
    @#$%^&*!...
    , P0 k* u& X! l- g. K8 Y. R! O8 U7 f/ m) E
    SDA 當觸發,正、負緣鎖 SCL 狀態啦!! S$ ^: l7 D& f" N; z5 I
    1 R: W0 ~5 B% s4 O" Y  e
    3 J2 h8 r$ ?. ]! a

    2 `9 T. y6 Y/ N! j) j  k) N. v/ R, C

    5 C( f  O; A# w# h7 g2 i9 f

    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

    该用户从未签到

    5#
    发表于 2025-7-4 08:08 | 只看该作者
    高电平采样star、restar和stop这些标志信号

    + Z+ r9 R3 U1 T" a) w9 P6 Z建議訪問一下人工腦殘AI)!$ @' g7 {. y) ]! m
    + M9 T& G. Y9 g" @6 N5 K' v

    % X& d2 q- i: |7 a9 }8 \5 O
  • TA的每日心情

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

    [LV.3]偶尔看看II

    4#
     楼主| 发表于 2025-7-3 23:52 | 只看该作者
    Dc2025042345a 发表于 2025-7-3 16:34+ m+ @$ G0 ]' U
    随便找个支持iic的芯片,去看时序图。

    , \- K' c- z8 [找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号" |6 X7 |) R1 F) W8 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 朋友挖坑補償!

    查看全部评分

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-22 02:49 , Processed in 0.187500 second(s), 30 queries , Gzip On.

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

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

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