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

IIC的采样方式

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

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

    [LV.3]偶尔看看II

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

    EDA365欢迎您登录!

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

    x
    本来想在老帖里发,想了想还是得发一个新帖:
    ; z1 _. Q: r  I  L. T
    3 @* I  G. b: Q本人一直没搞清楚IIC的采样方式,目前看到了三种采样方法的说明:高电平采样、上升延采样+高电平采样、上下边沿双采样
    9 e% ]& [) C  t7 ?5 N4 @' g2 D$ o" r, l: f( Q
    1、高电平采样:许多文献或者帖子都说明了是高电平采样,但是似乎没有找到盖棺定论的决定性文献,如果是根据建立保持时间的时序要求反推,时钟高电平处肯定是有采样的,因为一般边沿采样的建立保持时间都是以某个时钟边沿为参考,但是I2C的保持时间是以下降沿为参考,也就是说上升沿到下降沿之间有采样点,但是无法判断是高电平采样还是边沿采样7 u7 I! R. }. e: Z* F' @/ ~" ?, j
    2、上升延采样+高电平采样:该说法具体内容是,i2c内部有边沿敏感电路,在上升沿会采样数据,而在高电平采样是为了判断是否出现了star、stop信号,因此还是需要保证边缘的单调性
    2 c8 a0 x% W: Z3、上下边沿双采样:该说法来源与本站某贴中的贴友“其实I2C的采样也是边沿采样,只不过是上下沿都采一次”
    9 j  }# \# v2 \0 ]  _9 J$ ^# Y7 K& I
    ! e" o- @9 L7 l' }因为本人之前一直以为是高电平采样,因此觉得边缘稍微有一点回沟或者平台不会有问题,但实际好像不是这么回事。虽然几种采样形式没有对测试结果没有影响,但是会影响对信号质量的评估,有时候iic边沿就是存在回沟无法消除,最终评估是否可接受时还是需要回到采样的本质,需要从理论和测试的情况下能判断信号质量符合预期。( x( D0 S4 R- @. r" I- X  M

    + [3 O8 m, C& ^0 O0 @希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源0 }1 a9 v& I) c$ {' U

    " T& a$ K4 L% ?0 \

    评分

    参与人数 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
    ( L* Z3 b) `8 u* Z$ a1 b( i找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...

    8 s; N2 Q/ a" n" ?# Q) `9 Z' e0 U% T/ `/ [3 r
    I2C START / STOP Detector Verilog Code
    " z' K$ e  L, `9 Z6 C$ u% S. E0 i! W- g

    : @- z$ _4 |6 R" m! E  \module i2c_start_stop_detector (
    1 G- U9 M3 u. @7 o9 d    input  wire clk,       // 系統時鐘
    : ]4 T( `' k5 Q& V% c    input  wire rst_n,     // 非同步 Reset
    6 s  I: Q- O4 U- V. R! L  {    input  wire sda,       // I2C 資料線
    2 q: n7 q6 p6 y1 H    input  wire scl,       // I2C 時鐘線
    * a4 t& T: ~7 P  a2 p( r    output reg  start_detected, // Start 條件偵測到0 C3 W$ J  S  f. p
        output reg  stop_detected   // Stop 條件偵測到
    % i* ]$ e/ M( k$ D6 j* L);3 E/ B  a+ B; _& _7 u; M. E" D
    ) S6 y2 z: h- h5 m
    6 D* h1 d5 I  y' ]/ V
        // 前兩個時鐘週期的 SDA 與 SCL 值3 e2 Y* n: x% R- e# e$ C: k
        reg sda_d1, sda_d2;$ [1 A4 K* M0 S
        reg scl_d1;
    0 n% _" D6 H4 D3 `" n
    ! e) z. Q( H, j. {8 B1 [/ x6 b3 O0 K. {

    / F. ?- f5 S: R6 |/ ?0 b    wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);
    2 |5 F$ r0 a' A% S- t0 ?! W    wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);
    ( l% A0 |6 [! f7 U* y7 E" E- J' m8 w/ U
    % n  Y* a& V. x4 j
        // Sample SDA and SCL
    0 {, J+ D# a, Z5 S; O    always @(posedge clk or negedge rst_n) begin
    ! C  u! i" F, p. m4 \0 ]        if (!rst_n) begin
    8 ?1 H1 x8 l. N# e$ B            sda_d1 <= 1'b1;
    ) e. a$ s' u2 w+ Q3 E- g1 c            sda_d2 <= 1'b1;4 G6 t1 I/ b) v3 `
                scl_d1 <= 1'b1;# O9 d' i, U) j7 \- t; p8 g4 G) p
            end else begin; t. V6 t5 @1 B8 a# r
                sda_d2 <= sda_d1;, s+ G  d$ e7 H) @* [+ u
                sda_d1 <= sda;% w& W! f3 p8 a
                scl_d1 <= scl;4 _9 D5 @* U5 D% X
            end
    9 L" T. y& V8 h" d    end  r* \5 b6 _4 u) P& D  g& O( i# U
    * {4 k0 ?! H7 u3 B* L2 N' t& Q

    6 w! {# P2 q' X4 I& B; A0 Y    // 偵測 Start / Stop 條件% i/ M1 s: F$ }+ w1 p8 ?" [! T. ?4 D/ }
        always @(posedge clk or negedge rst_n) begin
    9 G3 j1 q5 r. a" N        if (!rst_n) begin! {$ n- C! B/ y
                start_detected <= 1'b0;. a' U7 Q- l) P3 |  R8 L! C
                stop_detected <= 1'b0;* W4 N. P  T$ t; |
            end else begin
    $ _2 C2 P+ X2 t6 D            // I2C START: SDA falling while SCL is high
    " ^/ k* ?7 B8 E# {! {- \" G% r7 `5 M            start_detected <= sda_falling && (scl_d1 == 1'b1);
    5 ?* d! @4 r& V5 {' B6 K            // I2C STOP:  SDA rising while SCL is high
    % y1 l% w0 x* V  N" o* _            stop_detected <= sda_rising  && (scl_d1 == 1'b1);  h* m/ l/ f, Q* r
            end! k6 v. D% c6 B9 m# N4 K/ D
        end
    2 d* [) L" U' \/ W! ~0 [: s! V: E6 j* P; M- d

    % c* Z. ~  j/ Mendmodule
    % {# ~5 r- w* R3 F) _1 O  e: g. g- S/ O
    * ?, ]) ^% w# S" a" _  _# J
    2 U% I$ Y7 ~8 h8 w; y. h

    该用户从未签到

    推荐
    发表于 2025-7-11 17:34 | 只看该作者
    本帖最后由 超級狗 于 2025-7-14 10:29 编辑
    0 Q# d4 k5 `& ?
    xmrxmr 发表于 2025-7-11 16:58# p0 u: t- c( Q1 j1 O9 H4 b, G
    I2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...

    ; m. c7 g' D5 ~+ o' y, I$ O菜英文規範解讀7 ^3 x# j& ~6 f3 a7 ?5 C9 T! S2 i8 @
    它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。2 V5 l$ R2 T% ~: A) {; ^/ V

    8 r' |1 a2 Q- ?0 vI2C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。
    $ M2 f! D8 N3 n; F
    1 E0 r2 V7 u8 @7 u' Z5 y* F! B; N1 j很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。7 X  b, W& D% k+ h. h: e

    $ B- Q8 s; m0 n) `9 g7 k5 K這是狗弟翻閱許多論壇討論,及技術文檔後得到的心得。
    ' f2 l- \) j- N# T; S' d) c, _8 |! q: a  ~. f$ r  p
    信者恆信,不信者永不信
    9 e" v: d$ [% J. s* v1 j( V& z6 y+ t3 L# k, L

    点评

    学到了,感谢狗哥  详情 回复 发表于 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
    # j2 _  e7 u3 m高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏 ...
    ; c+ V2 M1 Z0 s
    是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第二种采样方式,边沿的质量需要更多的考虑,比如该回沟会不会导致误判或者误采样。( r0 T$ ?0 ~5 f& B+ W! B, k" O

    该用户从未签到

    7#
    发表于 2025-6-28 19:47 | 只看该作者
    本帖最后由 huo_xing 于 2025-6-28 19:51 编辑
    6 s0 w& l/ i; B* p( }5 a9 a' a5 ?# v& m9 b) x9 c
    随便找个支持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
    $ E+ Y( B/ p! z' e随便找个支持iic的芯片,去看时序图。
    0 C2 J, i) [7 j2 Q" f. r# g3 e
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号
    % o) M: m0 m7 D) u

    点评

    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这些标志信号
    : r4 f. ?2 _+ S" u' g+ \% I
    建議訪問一下人工腦殘AI)!' Z$ G3 s  M/ A2 \

    9 K+ \8 B2 S' C6 s* ~- v3 Q# R- b9 V- o8 {7 @0 ^

    该用户从未签到

    10#
    发表于 2025-7-4 09:20 | 只看该作者
    本帖最后由 超級狗 于 2025-7-9 08:47 编辑
    6 C! k$ e5 @. e7 ~# z8 G) n8 L. d" g
    Dc2024101522a 发表于 2025-7-3 23:52- W) _0 o  N: j8 ~0 ]) c; v0 ]8 E2 o
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
    , w* U5 h6 B# p  X( y) [$ \9 y/ `' Z
    I2C START / STOP Detector* h& L5 K# I% Y& X

    : ]4 u+ O% M8 O. h4 I: I8 p7 j我知道樓主要講什麼,「不懂!」。$ _. o$ A9 o6 j5 ^, \! l8 d

    * E2 t1 V2 U$ c0 N( s謝謝!再聯絡。" C! H% V% L) E; P

    # o6 B' \$ e7 {$ a: q- B@#$%^&*!...
    , F7 `; A5 B: h' }) g' w
    ; B  e' L, i4 CSDA 當觸發,正、負緣鎖 SCL 狀態啦!
    7 ?- n. U$ c) G( C# I1 z
    ' R# d/ h% K' I* B5 h. ?" h
    6 F3 V7 G( e7 t2 Y, [3 F
    : E7 o3 y4 c, b3 z- o% u* h1 q/ ]# O4 w

    . K% f8 x5 H2 ?$ b1 V

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

    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 编辑
    6 s: h) W1 E" A. A6 Y
    超級狗 发表于 2025-7-4 09:208 R$ Q3 I* q" \2 f3 Q
    I2C START / STOP Detector) q9 l. k4 Y9 k& H7 v
    , y) E% M6 ]6 C
    我知道樓主要講什麼,「不懂!」。
    * C- H$ v* e7 |* C- I5 I2 n2 H
    想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。/ I" ^' E- k6 d: O

    % s9 C3 N6 u5 |3 i
    # ?& o. ]& ?5 _+ A& L. z. X; n. r/ j; q' D. d/ c+ d
    但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。
    4 E2 e: D* ~2 F* y; A* S; `+ p
    ) a% Z/ F0 ~) h, j  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, 下载次数: 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: R/ s% v/ m. P8 l! N
    菜英文規範解讀# y6 q! R/ \0 z" r( B7 v
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
    & j( a0 G/ d6 @0 J
    踢哀TI)文檔內容節錄!
    , [2 p; f% s7 p+ _
    . N; ^+ N3 ]3 w) ~' }" m* E! z; }8 b4 E8 e) Z8 f1 u/ r8 ~

    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:346 G: M; |( n  f6 M) Y" C7 _- Z5 _
    菜英文規範解讀
    ! F' O1 Y1 X/ X  W它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    $ [* J; O1 Z; |* j, {爺死踢ST)Two-Wire Serial EEPROM M24512 規格書。
    % {& ^& @3 S. B$ p% H( q. x4 v7 s8 t9 r2 M- J2 |
    # g) q$ Y6 w4 B& w- m& T" 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
    6 C# S& D: g+ l/ U- |  I菜英文規範解讀
    % P. g; i( s' T! j% M* @它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    0 K, _' {% \$ V5 Q% k7 v8 V学到了,感谢狗哥
    ; ^/ G0 E" T% g9 z( S. @0 Y

    点评

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

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

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

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