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

IIC的采样方式

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

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

    [LV.3]偶尔看看II

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

    EDA365欢迎您登录!

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

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

    ; o* e' ?6 S1 w) G希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源& W* R" w2 I6 s0 B8 Z( e

    " y( _& |8 C+ h+ |% _( @

    评分

    参与人数 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; V, Q. r; q" L
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
    " [# S$ ?8 X1 E& R

    - Y% c9 _- y7 K/ x/ x  u; c% V$ d- LI2C START / STOP Detector Verilog Code2 S% H8 ~0 ]7 o! r  ]# z1 b$ W% e5 p
    : U1 ]- m! M7 m8 f
    ; }5 g, t% v$ n/ n( v
    module i2c_start_stop_detector (
    - i9 k$ V  X) B2 S    input  wire clk,       // 系統時鐘. M7 x8 @  {0 R8 A0 N
        input  wire rst_n,     // 非同步 Reset
      O" c1 R% \. i( ?    input  wire sda,       // I2C 資料線8 |$ j% k1 O+ ?, }, ^
        input  wire scl,       // I2C 時鐘線
    ; I7 x- x& G% p- ?* z* Q    output reg  start_detected, // Start 條件偵測到$ n% D- c5 V4 d3 j/ I1 z" V9 M3 q
        output reg  stop_detected   // Stop 條件偵測到4 j* n9 q2 @- D  z
    );" d: @7 ]" _$ Q; ^
    ! h) |7 H  M+ a. j8 F( _$ s' Q
    $ z- z! W* {5 Q6 U* P  ]
        // 前兩個時鐘週期的 SDA 與 SCL 值" ^3 ?2 m& _1 [& U2 [
        reg sda_d1, sda_d2;
      u" a) q- o* K, c7 M, b    reg scl_d1;
    , K: `$ Z+ W1 t7 p- t. a! n0 ~9 a7 J$ t" O2 P
    1 K9 K' n; Q# N+ a8 s
        wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);) x) |) k. ]  P: O5 ^- X
        wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);! X! C6 W8 C! n( s* G2 w; E. _
    & R8 K8 Z8 j8 `1 D

    5 P/ \) \7 I) u2 E  @% O    // Sample SDA and SCL
      a6 F+ I% Q+ `    always @(posedge clk or negedge rst_n) begin
    ) ^- {; a$ E: l        if (!rst_n) begin: z, r2 m1 ?2 |9 o0 |
                sda_d1 <= 1'b1;1 I6 t0 h: v4 @: T! ~( I. ]
                sda_d2 <= 1'b1;! }) M# _, n- P
                scl_d1 <= 1'b1;. m  c% g6 q2 V: ]! C4 r
            end else begin
    . [2 M+ C% {3 g            sda_d2 <= sda_d1;* e2 ]( R6 P! t( ~
                sda_d1 <= sda;- G3 l; O5 M! F  z+ K& F
                scl_d1 <= scl;
    - ^( @& s5 ~! O: W6 n; f9 K- {        end( K1 d  ?) M- d& |5 z  y
        end
    8 F. \: Y) `9 K4 l( t- {! @  K: h8 M- d1 x7 a. \4 Z1 S  ?2 [

    1 A5 q# O" s8 t8 Z) C( G  D    // 偵測 Start / Stop 條件
    / Z& A7 e9 Z# r2 I    always @(posedge clk or negedge rst_n) begin
    . }% X! Q7 c) p9 d! g2 n7 _- [        if (!rst_n) begin
    3 c% C1 X" F! A" ]            start_detected <= 1'b0;2 \7 j6 d$ b0 g' D+ K  s
                stop_detected <= 1'b0;, z8 P! A$ U9 H6 s/ K
            end else begin! ?7 n' \6 z4 {1 ^: \7 G7 W, j
                // I2C START: SDA falling while SCL is high0 G! b2 U, R6 Q5 _6 g; s$ ]# h
                start_detected <= sda_falling && (scl_d1 == 1'b1);. F; V0 e- ]# Q5 A
                // I2C STOP:  SDA rising while SCL is high/ [2 v0 K1 E/ S# H/ s
                stop_detected <= sda_rising  && (scl_d1 == 1'b1);" C+ ~! T# b$ x. y: l
            end
    9 o6 `  P6 L8 w5 M6 O5 k- N    end8 G9 l' D8 J' `  l" x% e! n
    & X" ]* q' n& _5 Y# L

    ( v& s  Y  _! d- y' z6 lendmodule% |/ y3 A# R. x8 }

    - \: a$ n! \, T! z8 d
    ) N0 c2 T% @6 o* G) e% o$ r
    ; t8 L2 L: M8 o

    该用户从未签到

    推荐
    发表于 2025-7-11 17:34 | 只看该作者
    本帖最后由 超級狗 于 2025-7-14 10:29 编辑
    & L5 h2 G$ _/ w' ?7 e) v) R0 B
    xmrxmr 发表于 2025-7-11 16:58, y& n2 u* l& m$ V/ M" h  M
    I2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...
    - R, O/ V% C; y( T0 ]& l6 z
    菜英文規範解讀
    1 C6 [5 _2 f& v) `它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。
    ) _- C. r- x, C) r$ M  V8 U! n8 K$ p7 \
    I2C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。
    9 F- R6 w4 T- i# ]2 `6 }% l3 c* p% c8 U5 t. M1 u* _$ V7 j, G. v
    很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。
    + l- s9 V5 W/ L( R# |
    6 E+ r+ x# p8 y! J5 _$ t$ l! K這是狗弟翻閱許多論壇討論,及技術文檔後得到的心得。
    9 l$ l5 N& ^8 Q5 H- T8 w
    : M( P6 q( R) k2 m% H信者恆信,不信者永不信7 u) Z! l  Y2 C
    / @3 w$ W; Y, N, \4 u) 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
    3 \& e, M% c* A& w. L" x高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏 ...

    & E3 c3 u- J1 h1 `8 o/ x% u, y是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第二种采样方式,边沿的质量需要更多的考虑,比如该回沟会不会导致误判或者误采样。
    6 Z( P7 }* u$ X9 ~! j' J$ y

    该用户从未签到

    7#
    发表于 2025-6-28 19:47 | 只看该作者
    本帖最后由 huo_xing 于 2025-6-28 19:51 编辑 ) T) J( O& Q2 w3 K8 ?1 I) H7 r7 Q% q
    + f4 r- y" U. d6 G* O
    随便找个支持iic的芯片,去看时序图。下面是百度的iic工作时序

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

    1.png
  • TA的每日心情

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

    [LV.3]偶尔看看II

    8#
     楼主| 发表于 2025-7-3 23:52 | 只看该作者
    Dc2025042345a 发表于 2025-7-3 16:34. ?0 D# q0 z& m- h7 c. p9 V6 w
    随便找个支持iic的芯片,去看时序图。
    8 n7 l9 D/ t$ Q7 m
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号& E' D9 n: G( v  Q9 [

    点评

    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 T. |8 H) n; x6 x建議訪問一下人工腦殘AI)!& O2 H4 K) O, [
    ) [* \8 i7 A$ |6 W* P& u. v; z0 k

    3 C! E/ t5 j: t; ?

    该用户从未签到

    10#
    发表于 2025-7-4 09:20 | 只看该作者
    本帖最后由 超級狗 于 2025-7-9 08:47 编辑
    ' H+ h2 t$ w# W2 D
    Dc2024101522a 发表于 2025-7-3 23:524 S* i+ f. e8 z1 f. c$ r6 \+ v
    找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
    , a8 ~+ ~' N; _: m: C8 ^/ M7 D
    I2C START / STOP Detector
    $ m  C9 R1 S/ |6 {1 I2 U- M/ {& q" l- n, j& d( t' b$ }* P9 g
    我知道樓主要講什麼,「不懂!」。
    / j  \/ W) q! y1 K
    : t. h1 j9 u$ A! q; S' Q* f+ L' i謝謝!再聯絡。
    2 z& }. N& v5 U+ E1 J$ x
    6 |0 h/ ~. Z9 c2 A" T* a% E, a4 I- v@#$%^&*!...6 R1 ^$ E  @% ~

    / P1 J! ^6 _* V3 ]% |; `5 s% T  G! RSDA 當觸發,正、負緣鎖 SCL 狀態啦!! h% K. y; ?  _) m

    8 S$ H! u. Z* L2 I9 Q  e+ a$ t- U" d) g2 r
    ) h* N) Z" `0 l3 K/ Q

    5 ?4 k5 B5 o8 g; S! Y& O  Z9 Z1 a+ z7 @. Q+ J% x7 l5 m

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

    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 编辑 : Q0 u  A; T, q6 E7 E
    超級狗 发表于 2025-7-4 09:20: b5 L2 `: F( d' z6 z/ i
    I2C START / STOP Detector
    , C9 L5 D1 t  T$ x0 g( u3 K
    7 ^# W+ I/ E, ]: L8 ~, H: X我知道樓主要講什麼,「不懂!」。
    1 B6 ^9 {9 m" c0 }
    想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。: Y# m4 U( h6 A) y# W6 X- P

    & a9 P, `) M' U; h
      E6 E1 X) O$ E
    * h% q5 I6 Y+ w; s" R. E但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。0 e/ ^( Z- B# \

    6 a& B' d7 X  ~/ b5 X" w; @
  • 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, 下载次数: 7)

    批注 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
      K. a2 G  N' {) u菜英文規範解讀
    0 j, a0 d9 {" A* B: G/ q+ ?它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    ' F0 W2 |; m/ _" f) }# K. B踢哀TI)文檔內容節錄!0 F. q/ H' Z+ m. `7 S% S7 W
    ! ?( {3 x0 M- s+ j* a
    $ f- {0 S5 y- }* @4 Y" l$ Q

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

    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
    ; Z8 n8 Z5 h  S, o* l: W! ]菜英文規範解讀( ^+ @5 ?1 H7 t2 n6 @8 e
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    " j% v( i9 H$ U" ]' Z3 F5 j爺死踢ST)Two-Wire Serial EEPROM M24512 規格書。. ?- M  z0 G. S# Q4 t
    9 }+ `- Z) n2 ?. E0 X

    ; M6 M  J  l) U2 ?" B

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

    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
    : i3 P% \6 x# F/ B- M菜英文規範解讀& x, W8 f, `7 e1 n1 `
    它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

    3 K- n( E2 T$ L% y8 G学到了,感谢狗哥
    3 [$ p% ]# D* s+ H. z2 f

    点评

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

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

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

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