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

IIC的采样方式

[复制链接]
  • TA的每日心情
    无聊
    2025-6-25 15:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

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

    EDA365欢迎您登录!

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

    x
    本来想在老帖里发,想了想还是得发一个新帖:
    0 X/ T3 g$ g# U6 }" p$ Z1 t9 ^0 ?0 u
    本人一直没搞清楚IIC的采样方式,目前看到了三种采样方法的说明:高电平采样、上升延采样+高电平采样、上下边沿双采样( P/ V. X- u: v1 i$ d
    7 r' {  t! {* e8 w$ R
    1、高电平采样:许多文献或者帖子都说明了是高电平采样,但是似乎没有找到盖棺定论的决定性文献,如果是根据建立保持时间的时序要求反推,时钟高电平处肯定是有采样的,因为一般边沿采样的建立保持时间都是以某个时钟边沿为参考,但是I2C的保持时间是以下降沿为参考,也就是说上升沿到下降沿之间有采样点,但是无法判断是高电平采样还是边沿采样2 p* t2 e8 x( x9 a0 S
    2、上升延采样+高电平采样:该说法具体内容是,i2c内部有边沿敏感电路,在上升沿会采样数据,而在高电平采样是为了判断是否出现了star、stop信号,因此还是需要保证边缘的单调性$ Y" G: @/ N- |" y/ b
    3、上下边沿双采样:该说法来源与本站某贴中的贴友“其实I2C的采样也是边沿采样,只不过是上下沿都采一次”% j5 K, M- W, z/ Y9 w

    $ C  ~  l  H4 C& e! C* B因为本人之前一直以为是高电平采样,因此觉得边缘稍微有一点回沟或者平台不会有问题,但实际好像不是这么回事。虽然几种采样形式没有对测试结果没有影响,但是会影响对信号质量的评估,有时候iic边沿就是存在回沟无法消除,最终评估是否可接受时还是需要回到采样的本质,需要从理论和测试的情况下能判断信号质量符合预期。1 ?. q+ Q* R1 [# a

    & T1 L% E0 W/ m希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源
    ; \8 K8 h! u! P2 F. F' b
    1 L/ D! i* d  `, }( N+ y5 I

    评分

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

    查看全部评分

  • TA的每日心情
    擦汗
    2024-5-14 15:27
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    点评

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

    评分

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

    查看全部评分

  • TA的每日心情
    无聊
    2025-6-25 15:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    3#
     楼主| 发表于 2025-6-27 17:27 | 只看该作者
    wen11902 发表于 2025-6-27 16:394 Q: Y) L+ y5 e+ x' N9 a) v
    高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏 ...

    # o* i0 G3 D# `+ Q是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第二种采样方式,边沿的质量需要更多的考虑,比如该回沟会不会导致误判或者误采样。0 W# y! p: }3 `. u: [  h0 u+ @& p

    该用户从未签到

    4#
    发表于 2025-6-28 19:47 | 只看该作者
    本帖最后由 huo_xing 于 2025-6-28 19:51 编辑
    ' e5 J% Y, r# W6 b5 Z7 }3 s
    8 ?. N- B7 Z( H4 ]随便找个支持iic的芯片,去看时序图。下面是百度的iic工作时序

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

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

    [LV.1]初来乍到

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

    点评

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

    [LV.2]偶尔看看I

    6#
     楼主| 发表于 2025-7-3 23:52 | 只看该作者
    Dc2025042345a 发表于 2025-7-3 16:34
    ) G1 j. i0 U6 o/ _& ^/ T, E7 D7 O随便找个支持iic的芯片,去看时序图。
    % y/ C; n+ K5 F1 Z& V* y+ _
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号
    % c9 n1 c3 ^" g/ N( F" t0 d2 l

    点评

    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 朋友挖坑補償!

    查看全部评分

    该用户从未签到

    7#
    发表于 2025-7-4 08:08 | 只看该作者
    高电平采样star、restar和stop这些标志信号
    & G3 @1 x: G  M4 b; ~
    建議訪問一下人工腦殘AI)!
    " |; ^+ R& T, A7 G' m$ h- o
    # s: ]5 w: x/ ^8 \6 \8 y
    ; e0 d8 _: Q2 J9 Z5 A( L6 w

    该用户从未签到

    8#
    发表于 2025-7-4 09:20 | 只看该作者
    本帖最后由 超級狗 于 2025-7-9 08:47 编辑 6 ~* i9 |2 O6 i
    Dc2024101522a 发表于 2025-7-3 23:52, a. H* ]: v4 u+ G
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
    # c6 ?3 o: a% U* f4 h. Q
    I2C START / STOP Detector' z' a' u; l  i0 G
    % L5 A; O9 R, H: O
    我知道樓主要講什麼,「不懂!」。
    3 g9 F5 v5 |* k! M& S' o0 R% D- ?  A- ^, U
    謝謝!再聯絡。5 T& f* ~5 ^6 l5 J/ \5 @$ h. j, d: Z

    * G% @1 j/ j2 M4 g6 @, S@#$%^&*!...
    7 t8 p9 f# ~) z3 ^4 a& i7 Z1 ^
    ' `% y# l  i/ x" lSDA 當觸發,正、負緣鎖 SCL 狀態啦!
    2 M' E3 q9 }; i' a& g$ A  I$ f7 D
    + J& u3 }8 V5 o7 |3 Y" n
    $ b9 Z. ~" S; {/ p9 f8 E! E  P9 P
    " {% b% P" U; O0 H+ ~' |8 D
    ! z# ]* H0 W, z- _; U& N& r7 P2 @( K
    4 r6 ?  S% Z( \/ q

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

    I2C Start and Stop Detector.jpg

    NamNguyenThesis.pdf

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

    点评

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

    该用户从未签到

    9#
    发表于 2025-7-4 18:21 | 只看该作者
    Dc2024101522a 发表于 2025-7-3 23:52( V7 a; J  p# O/ X; N. R
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...

    * T+ ]/ h  A( b" M
    ( ^) V' k4 g2 b) {1 F+ WI2C START / STOP Detector Verilog Code
    1 X. q2 R" C& q5 ^- @" B. N" a

    , o, m; P% j3 R, S  }* omodule i2c_start_stop_detector (3 l& F( i/ f: S
        input  wire clk,       // 系統時鐘7 O1 b/ u1 q2 h
        input  wire rst_n,     // 非同步 Reset8 D) o; c6 t1 a4 O
        input  wire sda,       // I2C 資料線1 g! s# v9 _6 V/ ^3 }( b) d: R
        input  wire scl,       // I2C 時鐘線
    4 e+ |" }5 i# P! o  I! ~! y6 h  d    output reg  start_detected, // Start 條件偵測到
    ; K7 y) A0 L5 [/ C* p8 J- D. z. U6 J$ N    output reg  stop_detected   // Stop 條件偵測到
    " h, e3 _; a2 m! F, X);! N" j, I4 F5 D) m& o) a

    4 o0 T! x& @5 l! I8 R0 w

    ( D6 C& d( b, C$ p: F    // 前兩個時鐘週期的 SDA 與 SCL 值) |+ {6 N+ W( Z
        reg sda_d1, sda_d2;
    7 \7 v9 h8 l8 G8 n    reg scl_d1;
    + u5 Y$ |1 V# s+ B3 P$ i
    9 a4 _3 t% z0 F0 i1 @1 ?/ v7 b& X
    ) p7 z0 `- W: H+ O7 J
        wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);
    % l8 |' D1 X! N1 _$ e    wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);5 I% I% p2 t2 q

    % x4 i& P$ w* X2 K. R3 w3 o, m
    ( f  K/ `% g' ]+ Q
        // Sample SDA and SCL
    ; ^; }) M# v1 N* W  P! @    always @(posedge clk or negedge rst_n) begin2 p0 }! q+ y5 g' ?6 Q$ g" ?
            if (!rst_n) begin
    ; o) `. i) S9 T' O0 W* V6 a            sda_d1 <= 1'b1;
    ! r) F- X, z9 ]$ y& D8 e" U            sda_d2 <= 1'b1;  j4 _5 K6 N* s; D; i# h
                scl_d1 <= 1'b1;/ C6 k. m& Z  ?0 ~* O5 C: l
            end else begin3 @$ m" T: x0 f: }: M- p
                sda_d2 <= sda_d1;
    - ^6 v) p' c$ s            sda_d1 <= sda;
    5 w: U1 S2 B1 v( v/ j, Q) }3 x            scl_d1 <= scl;
    $ j! }$ p3 l+ Y. }9 p# W# D        end
    : ~9 o) x4 i+ m  P5 }/ }4 Y    end; }+ G$ c4 B8 u% r& o

    / o( u5 z+ l5 v

    ( U8 p; @9 c9 r/ @/ b  E    // 偵測 Start / Stop 條件
    8 \% O- l, g/ h" \    always @(posedge clk or negedge rst_n) begin
    0 V' u- z& I; ^        if (!rst_n) begin
    ! w4 m9 g0 T7 ?% ?            start_detected <= 1'b0;
    3 J  b+ R1 A8 z5 L            stop_detected <= 1'b0;1 F/ j+ m9 |- Q/ u
            end else begin
    9 v9 V! z4 i9 R! A/ \            // I2C START: SDA falling while SCL is high8 w( I6 ^( q/ J8 O" a) e. k- @
                start_detected <= sda_falling && (scl_d1 == 1'b1);  X# G' O# j5 y7 T  U8 v4 D
                // I2C STOP:  SDA rising while SCL is high5 j& l& A( A8 y
                stop_detected <= sda_rising  && (scl_d1 == 1'b1);
    2 \3 _7 V+ f( c" |- s6 r        end
    # O0 u9 K! p; ^/ S6 C    end+ x  {6 q: r, S: I
    0 K! H% M5 ~3 B
    ; U9 o4 H6 Y' H' r9 N3 K8 }
    endmodule
    * i4 M/ J5 k! x* [# T$ I: @
    4 B$ L' X) E$ S

    4 g1 |9 Z" ]% Z
    , D' L8 K9 Z: }+ R/ R

    该用户从未签到

    10#
    发表于 2025-7-6 19:19 | 只看该作者
    本帖最后由 超級狗 于 2025-7-8 08:55 编辑
    ; q/ Y3 A2 V: G
    超級狗 发表于 2025-7-4 09:20
    % E6 \9 J$ J  n( @, v7 k# b- LI2C START / STOP Detector
    & T  Z+ {8 l+ _3 B0 K8 u
    7 `! G2 U* g9 Z( `我知道樓主要講什麼,「不懂!」。
    3 G2 X$ d' {% ]- R3 T0 r, H
    想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。
    . \4 r$ l: n" M
    " R4 ~8 p, w: z0 b& @9 J% I% w: @" X0 y" L6 _8 t8 [% f4 a+ H

    7 X/ h% ]; W- V4 n6 Y但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。+ R* Z2 h* Q% R
    7 G9 a* e5 H+ E
  • TA的每日心情
    郁闷
    2023-11-14 15:45
  • 签到天数: 5 天

    [LV.2]偶尔看看I

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

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

    批注 2025-07-11 165434.jpg

    点评

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

    该用户从未签到

    12#
    发表于 2025-7-11 17:34 | 只看该作者
    本帖最后由 超級狗 于 2025-7-12 21:55 编辑
      a8 t3 Z9 b. T' P9 W6 E. }/ l
    xmrxmr 发表于 2025-7-11 16:586 h+ V5 L, e. C
    I2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...

    & s& g: M  E7 A* l! i* E% i菜英文規範解讀
    8 C" t$ G- I7 v! n4 s0 M( Q, R0 {它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。+ A) f" ~+ i$ g! A7 f. Q$ j9 J

    . n* N5 L& ]2 V  y) EI2C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。3 R: M$ K! C/ F! B
    & h4 h$ U" r+ D! m
    很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。
    + [# N' |/ a5 }9 z- W% N* ^6 d, i1 N  J) T( D
    這是狗弟翻閱許多論壇討論及技術文檔後得到的心得。+ p( D& N* p) f2 G5 F- c" x
    0 O; U; c* \" @7 ^- {
    信者恆信,不信者永不信# n9 i2 `" s. r: P" s; U. Z: y5 a2 ^
    $ U: I* e: m$ r% b! z; |7 I
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-14 04:06 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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