EDA365电子论坛网

标题: IIC的采样方式 [打印本页]

作者: Dc2024101522a    时间: 2025-6-27 16:12
标题: IIC的采样方式
本来想在老帖里发,想了想还是得发一个新帖:5 c6 G. R- Q! K1 }- M) H$ D0 y- V

7 S5 l! g8 Y+ q) v1 }! n" q- F本人一直没搞清楚IIC的采样方式,目前看到了三种采样方法的说明:高电平采样、上升延采样+高电平采样、上下边沿双采样) n/ M3 t0 A3 j8 v
' Y1 G) \9 h  J4 V! r* A" S( N
1、高电平采样:许多文献或者帖子都说明了是高电平采样,但是似乎没有找到盖棺定论的决定性文献,如果是根据建立保持时间的时序要求反推,时钟高电平处肯定是有采样的,因为一般边沿采样的建立保持时间都是以某个时钟边沿为参考,但是I2C的保持时间是以下降沿为参考,也就是说上升沿到下降沿之间有采样点,但是无法判断是高电平采样还是边沿采样
  d- {+ Z% o  `$ l% |2、上升延采样+高电平采样:该说法具体内容是,i2c内部有边沿敏感电路,在上升沿会采样数据,而在高电平采样是为了判断是否出现了star、stop信号,因此还是需要保证边缘的单调性2 J9 g7 R2 J+ m
3、上下边沿双采样:该说法来源与本站某贴中的贴友“其实I2C的采样也是边沿采样,只不过是上下沿都采一次”
7 V) ]8 }- C( r4 W  h4 p5 J
- Z3 K3 [& u0 ?  Z因为本人之前一直以为是高电平采样,因此觉得边缘稍微有一点回沟或者平台不会有问题,但实际好像不是这么回事。虽然几种采样形式没有对测试结果没有影响,但是会影响对信号质量的评估,有时候iic边沿就是存在回沟无法消除,最终评估是否可接受时还是需要回到采样的本质,需要从理论和测试的情况下能判断信号质量符合预期。9 S' M7 m$ k, I* F1 ]

: u* e4 d# K& ~% q. B0 f希望诸位能解答小弟的疑问,或者提供一些可供参考的信息来源
+ M/ V4 C) A" k) z' ]4 j; u# t+ i  ^$ A; B5 O

作者: wen11902    时间: 2025-6-27 16:39
高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏输出,时钟和数据线都是上拉,空闲的时候释放总线,那么时钟肯定是高电平。-->那就知道了是高电平采样
作者: Dc2024101522a    时间: 2025-6-27 17:27
wen11902 发表于 2025-6-27 16:39
& B- t& X! H1 [9 E' K' D高电平采样,你这样想:起始是下降沿触发,停止是上升沿触发,这样就导致了只能是电平采样;然后IIC是开漏 ...
* Y. K8 E6 O% E5 o
是的,我知道有高电平采样,这个我可以理解。其实我更倾向于第一种和第二种采样方式,这两种采样方式会影响对边沿质量的思考,如果只是高电平采样的话,那么其实边沿回沟问题在一些情况上是可以忽视的,但是如果是第二种采样方式,边沿的质量需要更多的考虑,比如该回沟会不会导致误判或者误采样。' ]4 Z) m) A1 g2 g/ a  A" T- d" W

作者: huo_xing    时间: 2025-6-28 19:47
本帖最后由 huo_xing 于 2025-6-28 19:51 编辑 ' H% h! t/ h$ X" R# x9 e
) \7 @% D5 F% `: Q1 o) J7 E
随便找个支持iic的芯片,去看时序图。下面是百度的iic工作时序

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

1.png

作者: Dc2025042345a    时间: 2025-7-3 16:34
随便找个支持iic的芯片,去看时序图。
作者: Dc2024101522a    时间: 2025-7-3 23:52
Dc2025042345a 发表于 2025-7-3 16:34  l+ _# q: F! w! }
随便找个支持iic的芯片,去看时序图。
+ N% g& X5 o' G. s
找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电平采样star、restar和stop这些标志信号
5 ?+ O( c# G! Q0 h% a" M+ u
作者: 超級狗    时间: 2025-7-4 08:08
高电平采样star、restar和stop这些标志信号
0 s' R0 z9 S4 @3 a) l/ L
建議訪問一下人工腦殘AI)!2 Q9 Z0 O1 P, A3 w

1 W2 x* u# K. R6 `2 C& A1 @) ]0 M
' u! ^: U6 m, B1 G5 E! c
作者: 超級狗    时间: 2025-7-4 09:20
本帖最后由 超級狗 于 2025-7-9 08:47 编辑
. Z- r9 k* o) b* G6 j( p! V
Dc2024101522a 发表于 2025-7-3 23:52
- n1 Y8 [/ d" N找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
! y, o# H" y. X) b
I[sup]2[/sup]C START / STOP Detector
/ J4 ?  v# M  \7 L# A( [% u- g' U9 ?' Y# E" W; Q6 C
我知道樓主要講什麼,「不懂!」。' N0 {0 e, O8 w( ?1 f4 d/ g+ H, B

! D" ?+ h* v: c" T7 W; l謝謝!再聯絡。
2 t; d0 a# _- O
, i5 V' E- L1 \6 o4 j@#$%^&*!...
' h8 s! R$ r' x* L, W7 U$ m8 F  q  t' z0 \
SDA 當觸發,正、負緣鎖 SCL 狀態啦!
2 c0 h) s% j+ I( H( t+ ]! G3 F) u& t) J  C

: }3 W$ ^* @8 a6 ]! ]  p# a& A1 i4 ?1 f, K1 M  ]

8 s6 n0 W! ?: f. u1 M! h9 y% h
& h' a5 n7 [1 Q

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

I2C Start and Stop Detector.jpg

NamNguyenThesis.pdf

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


作者: 超級狗    时间: 2025-7-4 18:21
Dc2024101522a 发表于 2025-7-3 23:52) Z3 |0 ^- b8 k0 a( o
找了,但都并没有明说有没有上升沿采样,而我朋友是FPGA工程师,他告诉我说,i2c是上升沿采样数据,高电 ...
) ^- b$ z/ h5 i& ~' H: b

5 B- f, S5 H4 @% f/ F+ HI2C START / STOP Detector Verilog Code# o- C# n5 r/ L. A3 x! G/ M
* Q- K9 `8 ]3 i( P$ W+ k: U- B
9 _2 \+ c3 _4 B; g
module i2c_start_stop_detector (
) \# O& D5 m# K( U" n( ]    input  wire clk,       // 系統時鐘
, s6 m( G$ M2 f# n- y* z% [    input  wire rst_n,     // 非同步 Reset" t9 U; ?( A. c0 e/ ~- F7 Q4 i1 K
    input  wire sda,       // I2C 資料線
5 |8 I, P0 K- g2 `7 |' K. O    input  wire scl,       // I2C 時鐘線
7 O1 b4 P+ @, x0 E0 ]    output reg  start_detected, // Start 條件偵測到
8 U/ G& T- |# j$ n" j; b2 R2 p    output reg  stop_detected   // Stop 條件偵測到
4 J% N" Y% T' h+ N- e);& _) B  E/ @5 }  ^& B
/ F9 a7 L! H$ l3 K/ I! v
0 ]1 ^/ v. Z  Y# ?
    // 前兩個時鐘週期的 SDA 與 SCL 值
- L6 j+ `5 s* W, k. L    reg sda_d1, sda_d2;
5 |, {7 \6 J, w# O5 [7 Y" V    reg scl_d1;, \& w$ q& g) \: n

$ ~3 T% [- ]! ~' y( t: G$ m8 B

; s# t* q: k1 O5 j+ B2 Y    wire sda_rising  = (sda_d2 == 1'b0) && (sda_d1 == 1'b1);' y6 d+ V! H8 e% v
    wire sda_falling = (sda_d2 == 1'b1) && (sda_d1 == 1'b0);
$ q6 k+ a5 c8 p) e# u- F' D5 i4 L0 ]3 T9 e6 h, N

0 Y; ^1 k$ W3 i& V    // Sample SDA and SCL# L4 s& C) u  J9 X) P, E
    always @(posedge clk or negedge rst_n) begin
; [9 [' v% S. P        if (!rst_n) begin
; q6 d* N3 W4 ^! U) q; e            sda_d1 <= 1'b1;( x$ n. `! @2 J$ m1 N
            sda_d2 <= 1'b1;
0 ~0 P# ?9 X. e! E; |8 Q            scl_d1 <= 1'b1;5 t4 P4 M8 H& A6 |, M
        end else begin, y3 j7 d* r4 L4 U5 [8 K7 z
            sda_d2 <= sda_d1;, d; h5 M8 l4 ]2 R  g) q
            sda_d1 <= sda;' [9 O, }( D7 E" |! w! V; p/ F- S
            scl_d1 <= scl;
6 B6 o9 c2 `' o        end
1 V+ D5 P* i- q/ C- V$ H3 j3 b' a    end4 g- |, u1 J) c$ ~# o1 p. t

( j7 s9 J9 W# g5 V

3 z( k1 Q9 i4 G    // 偵測 Start / Stop 條件
5 v2 b& r  v/ t3 y; O# P) h) w3 \9 @    always @(posedge clk or negedge rst_n) begin  {& p# Y# b' o! w  J4 d
        if (!rst_n) begin
( D" m  G% F. I0 Q            start_detected <= 1'b0;' Z  e9 W# j6 L  m% G+ n& a
            stop_detected <= 1'b0;2 w1 i! @& U: V6 O  w! l
        end else begin0 e6 d4 F4 m, p+ v2 S; a
            // I2C START: SDA falling while SCL is high
- k' a- @# c) k/ c6 G, k            start_detected <= sda_falling && (scl_d1 == 1'b1);, v1 L. B) ?; X) Q$ H
            // I2C STOP:  SDA rising while SCL is high
9 {* A1 F: O- S: S            stop_detected <= sda_rising  && (scl_d1 == 1'b1);5 t' c, S- T2 M/ {
        end1 V# f/ ]! Y3 p$ [' N- B8 c& _& }
    end
3 q5 _9 H. p. F" C" A9 g) n
$ t, ]$ W7 f7 ]8 J* _' E0 N  B" k$ o
  `( A' a8 y5 M- a) P, j
endmodule
: U4 Y4 z/ I2 p" A& I" z+ d% E4 B6 F3 T& s8 F

% B( T- m7 A( T3 v( Z; D& R+ G
2 U# ?1 m* a# f; b4 R
作者: 超級狗    时间: 2025-7-6 19:19
本帖最后由 超級狗 于 2025-7-8 08:55 编辑
5 n0 m7 q- y. m# c% e
超級狗 发表于 2025-7-4 09:20
8 [/ t4 ?" z3 r; MI2C START / STOP Detector
1 z" u. r* L& @4 }8 K
2 C- }4 w; H$ ^$ Z我知道樓主要講什麼,「不懂!」。

- ^2 h  J( d+ N' T' t: {8 }5 T想不到狗弟隨便塗鴉的方塊圖這麼多人收藏,出處的文檔反而沒人要,我決定明天開始要和唐伯虎一樣改賣字畫。
( c( v8 b1 y9 m' W0 B
/ I4 C2 n2 F! U" I; t- _! f, m3 D; U, r7 C+ I2 s8 t- l4 i
- w% U, {7 L5 Z
但聽聞唐伯虎風流倜儻是小說家筆下寫的;實際歷史上的唐伯虎因為窮途潦倒,為了生活是在賣春宮圖。
: q8 A9 W4 x% ]! @( G0 B3 z* D% D1 F. ?5 h; ]

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

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

批注 2025-07-11 165434.jpg

作者: 超級狗    时间: 2025-7-11 17:34
本帖最后由 超級狗 于 2025-7-14 10:29 编辑 8 K% d8 Y. V. h: t7 A: s
xmrxmr 发表于 2025-7-11 16:58) V# m) a4 y# X0 k& @+ [7 Q1 s
I2C是SCL高电平采样这一点可以看SPEC,信号边沿的回沟一般也不会有什么影响,很多器件内部都有滤波器,可以 ...

  }" I/ s6 I; N# c) Q菜英文規範解讀
3 D* L$ f% S3 {9 Z它只說 SDA 在時鐘高電平時必須保持穩定Stable),並沒說它是高電平採樣,這是一個大家容易入坑的地方。
( B7 M4 g: P8 X( F4 k
. t& J  S! }5 o# e" x* cI[sup]2[/sup]C 總線在上升緣Rising Time)採樣之後,資料就不會變了。任憑 SDA 在那邊抖或在那邊跳,都不會改變已經採樣的資料。之所以要叫你保持穩定Stable),是因為它雖然不會改變已經採樣的資料,但會觸發 STARTSTOP 偵測造成總線狀態復位Reset),你的資料傳輸會因此中斷。
3 e7 d$ F1 z! X: F4 F5 L3 S" n/ s7 d4 ?& k
很多設計為了保險,也不會剛好在時鐘上升緣Rising Time)進行採樣,會利用 Delay Line 延遲個幾 ns 再採樣。若說這樣就算是高電平採樣,也是有點牽強。
0 c# |) v/ {6 F) i1 d0 Y" l) ]: K9 j3 X7 f( |6 I7 P. w
這是狗弟翻閱許多論壇討論,及技術文檔後得到的心得。2 T$ |5 |# ?8 s' F" S& I4 E( W& Q8 d

- n: }1 l" X% K, @4 z信者恆信,不信者永不信  C! l( u# s* z! M' p
+ y* ~2 [  h% Q) A, a3 Y4 d

作者: 超級狗    时间: 2025-7-14 08:45
超級狗 发表于 2025-7-11 17:34
" Q2 A1 g& w8 L  j6 \5 l6 @菜英文規範解讀
* }0 y% I6 R# @! N! w它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
4 O: ~1 ?& K  z' v- t$ j' W4 r$ r
踢哀TI)文檔內容節錄!( y8 f. x) f: |% i2 p

2 c- r% [; Q; g
" T# _6 ^2 Y( V

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


作者: 超級狗    时间: 2025-7-14 08:56
超級狗 发表于 2025-7-11 17:34
4 o( ^; z; R& h( e2 I菜英文規範解讀
3 \) A7 ?8 l& a" G它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...

4 z0 Z  @) `- c1 i- g3 x! N爺死踢ST)Two-Wire Serial EEPROM M24512 規格書。3 ]7 e4 C$ ?: ^; f! b% ?
* f8 G1 Q1 F" F; M: y( }/ g% Y
" c/ ]" _; z+ O2 @" o

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

ST M24512 I2C Data Input.jpg

ST M24512.pdf

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


作者: xmrxmr    时间: 2025-7-14 09:37
超級狗 发表于 2025-7-11 17:34
) r4 M. `9 C# q菜英文規範解讀* Z) A; A! v5 H
它只說 SDA 在時鐘高電平時必須保持穩定(Stable),並沒說它是高電平採樣,這是一個大 ...
7 e& X" r' r$ i( b( M0 c
学到了,感谢狗哥/ W4 v2 F' Y  ^/ G5 u

作者: db-_-    时间: 2025-7-14 09:44
版主的严谨的态度和博学让人敬佩,每天能学到一点小知识。
作者: minicizi    时间: 2025-7-23 15:39
xmrxmr 发表于 2025-7-14 09:37
  e+ x. f: \  V% ~学到了,感谢狗哥
* c. q+ g% Q. U: \+ }
感谢狗狗 加油加油
2 }" z$ B0 c: u' }1 p2 j: I+ j
作者: wangshilei    时间: 2025-7-25 10:22
scl 上升沿读数据
作者: kingweison    时间: 2025-7-28 09:03
:):)




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2