|
lknlkq2asii6402694429.gif (1.67 KB, 下載次數(shù): 1)
下載附件
保存到相冊
lknlkq2asii6402694429.gif
2024-8-20 11:41 上傳
. ^; t; c! U. f+ C1 }) B
點(diǎn)擊上方名片關(guān)注了解更多
+ j+ z6 Z2 J# B+ u' S" F/ t0 H1 E8 {- V0 |( O. M3 f b
3 f0 K% X* M' N4 b' I4 oUSB接口隨處可見,手機(jī)、電腦、電視,以及各種電子產(chǎn)品充電口(雖然是USB-C,但它也是USB)都有USB的身影。' q" l% d3 h C3 o( f
USB應(yīng)用非常廣泛,很多嵌入式設(shè)備也具有USB通信能力,這里給大家分享一下USB通信協(xié)議主要內(nèi)容,新手都能看明白(當(dāng)然,最好還是有一定通信協(xié)議基礎(chǔ)才行)。
7 ^. j+ q! ]& Z, F- \6 N" }& x. H! L5 d: d
1、基本概念一個【傳輸】(控制、批量、中斷、等時):由多個【事務(wù)】組成;一個【事務(wù)】(IN、OUT、SETUP):由一多個【Packet】組成。USB數(shù)據(jù)在【主機(jī)軟件】與【USB設(shè)備特定的端點(diǎn)】間被傳輸!局鳈C(jī)軟件】與【USB設(shè)備特定的端點(diǎn)】間的關(guān)聯(lián)叫做【pipes】。一個USB設(shè)備可以有多個管道(pipes)。 2 、包(Packet)包(Packet)是USB系統(tǒng)中信息傳輸?shù)幕締卧袛?shù)據(jù)都是經(jīng)過打包后在總線上傳輸?shù)。?shù)據(jù)在 USB總線上的傳輸以包為單位,包只能在幀內(nèi)傳輸。高速USB 總線的幀周期為125us,全速以及低速 USB 總線的幀周期為 1ms。幀的起始由一個特定的包(SOF 包)表示,幀尾為 EOF。EOF不是一個包,而是一種電平狀態(tài),EOF期間不允許有數(shù)據(jù)傳輸。注意:雖然高速USB總線和全速/低速USB總線的幀周期不一樣,但是SOF包中幀編號的增加速度是一樣的,因為在高速USB系統(tǒng)中,SOF包中幀編號實(shí)際上取得是計數(shù)器的高11位,最低三位作為微幀編號沒有使用,因此其幀編號的增加周期也為 1mSUSB總線上的情形是怎樣的?; Z# [# |9 ]1 L' V$ o+ l7 r' |
6 X( B4 C6 l' H3 h0 Q' d
wmfpwzvpamg6402694529.png (23.61 KB, 下載次數(shù): 0)
下載附件
保存到相冊
wmfpwzvpamg6402694529.png
2024-8-20 11:41 上傳
' ~) \! P! `! S& k C; k) v包是USB總線上數(shù)據(jù)傳輸?shù)淖钚挝,不能被打斷或干擾,否則會引發(fā)錯誤。若干個數(shù)據(jù)包組成一次事務(wù)傳輸,一次事務(wù)傳輸也不能打斷,屬于一次事務(wù)傳輸?shù)膸讉包必須連續(xù),不能跨幀完成。一次傳輸由一次到多次事務(wù)傳輸構(gòu)成,可以跨幀完成。
8 Y) ^. g7 k0 YUSB包由五部分組成,即同步字段(SYNC)、包標(biāo)識符字段(PID)、數(shù)據(jù)字段、循環(huán)冗余校驗字段(CRC)和包結(jié)尾字段(EOP),包的基本格式如下圖:" b3 u" g1 h+ s( F0 C) i/ k0 I6 W$ X0 {2 o
ybv0ogmo5e46402694629.png (27.38 KB, 下載次數(shù): 2)
下載附件
保存到相冊
ybv0ogmo5e46402694629.png
2024-8-20 11:41 上傳
+ D) b9 ] }+ s t7 c0 z' s' F5 ~
1.1 PID類型(即包類型)$ t; k1 x& G# V3 { `
cjngvowzqsp6402694729.png (56.36 KB, 下載次數(shù): 0)
下載附件
保存到相冊
cjngvowzqsp6402694729.png
2024-8-20 11:41 上傳
9 q8 P% A) X4 N& V
1 l1 S6 D; Y \6 A7 b+ M# Z: W
e0qcbaft0ax6402694829.png (55.32 KB, 下載次數(shù): 0)
下載附件
保存到相冊
e0qcbaft0ax6402694829.png
2024-8-20 11:41 上傳
, Z8 Z* m! V" Y4 d( B0 r0 J
1.2 Token Packets
4 E4 R3 L; J6 c# r2 k
hs5pkzr4voc6402694929.png (10.87 KB, 下載次數(shù): 0)
下載附件
保存到相冊
hs5pkzr4voc6402694929.png
2024-8-20 11:41 上傳
+ F2 q( L+ x/ S+ p6 J此格式適用于IN、OUT、SETUP、PING。
# ?% U& j3 A& J5 s: ]PID 數(shù)據(jù)傳輸方向IN Device->HostOUT Host->DeviceSETUP Host->DevicePING Device->Host1.3 Start-of-Frame(SOF) PacketsSOF包由Host發(fā)送給Device。對于full-speed總線,每隔1.00 ms ±0.0005 ms發(fā)送一次;5 f+ ~5 ^+ k8 Y
對于high-speed總線,每隔125 μs ±0.0625 μs發(fā)送一次;
% `+ O. v" A. }7 ~[/ol]SOF包構(gòu)成如下圖所示
: T9 i$ G" N( X# q4 Q
g5ebznjokjw6402695029.png (11.4 KB, 下載次數(shù): 2)
下載附件
保存到相冊
g5ebznjokjw6402695029.png
2024-8-20 11:41 上傳
: [- W2 |3 z4 t a3 p" `3 L; C4 K- x- ~+ l
djd3wbbxg2q6402695129.png (36.3 KB, 下載次數(shù): 1)
下載附件
保存到相冊
djd3wbbxg2q6402695129.png
2024-8-20 11:41 上傳
" }! I( R% z1 \+ P1.4 Data Packets
# Z1 x& j; U; ]& j
owyafzmrsfx6402695229.png (12.03 KB, 下載次數(shù): 1)
下載附件
保存到相冊
owyafzmrsfx6402695229.png
2024-8-20 11:41 上傳
O* F+ ~6 j+ Z E6 `) U有四種類類型的數(shù)據(jù)包:DATA0, DATA1, DATA2,and MDATA,且由PID來區(qū)分。DATA0和DATA1被定義為支持?jǐn)?shù)據(jù)切換同步(data toggle synchronization)。2 W* s- J0 I1 F9 y8 t% _, M9 I
1.5 Handshake Packets4 O1 f4 ^& V: I& n2 b$ _5 k* f
vq4q5jkycyy6402695330.png (5.26 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vq4q5jkycyy6402695330.png
2024-8-20 11:41 上傳
8 c; p( R! @4 M4 T
ACK: 對于IN事務(wù),它將由host發(fā)出;對于OUT、SETUP和PING事務(wù),它將由device發(fā)出。
3 L W& o% ]5 o3 p6 q A9 WNAK: 在數(shù)據(jù)階段,對于IN事務(wù),它將由device發(fā)出;在握手階段,對于OUT和PING事務(wù),它也將由device發(fā)出;host從不發(fā)送NAK包。 2、事務(wù)(Transaction)在USB上數(shù)據(jù)信息的一次接收或發(fā)送的處理過程稱為事務(wù)處理(Transaction)即:The delivery of service to an endpoint。一個事務(wù)由一系統(tǒng)packet組成,具體由哪些packet組成,它取決于具體的事務(wù)?赡苡扇缦掳M成:一個token packet可選的data pcket可選的handshake packet可選的special packet2.1 輸入(IN)事務(wù)處理輸入事務(wù)處理:表示USB主機(jī)從總線上的某個USB設(shè)備接收一個數(shù)據(jù)包的過程。【正!康妮斎胧聞(wù)處理/ l' O# Z# ^% f' i1 f
+ [ }9 y' C/ S6 e g0 {( y8 N7 @
z0a1u0yzmwz6402695430.png (6.42 KB, 下載次數(shù): 1)
下載附件
保存到相冊
z0a1u0yzmwz6402695430.png
2024-8-20 11:41 上傳
# c1 ?& O8 h" B. b8 e【設(shè)備忙】時的輸入事務(wù)處理
: _4 f" ?. G' c; I: Q# j7 Y, I) N" n+ c l3 @2 Q* y& \
4a3zu4bhzth6402695530.png (5.05 KB, 下載次數(shù): 1)
下載附件
保存到相冊
4a3zu4bhzth6402695530.png
2024-8-20 11:41 上傳
5 I3 {, v; C6 h: u, N1 @4 \! `8 f
【設(shè)備出錯】時的輸入事務(wù)處理( L2 {/ S F5 Y( g
* Z8 Q. Y1 t+ j+ Y
c31zvfkbwv56402695630.png (3.77 KB, 下載次數(shù): 1)
下載附件
保存到相冊
c31zvfkbwv56402695630.png
2024-8-20 11:41 上傳
" M! S' S9 M8 p! E0 R2.2. 輸出(OUT)事務(wù)處理輸出事務(wù)處理:表示USB主機(jī)把一個數(shù)據(jù)包輸出到總線上的某個USB設(shè)備接收的過程。【正!康妮敵鍪聞(wù)處理
2 {" g# F9 n. ^8 g. @$ z- m( ^2 e W$ G' o) ~* n9 I
y0i0nz5sm3y6402695730.png (5.41 KB, 下載次數(shù): 1)
下載附件
保存到相冊
y0i0nz5sm3y6402695730.png
2024-8-20 11:41 上傳
# d8 ? R& u) ?* U' {3 n! T3 A8 h【設(shè)備忙時】的輸出事務(wù)處理
X7 p9 T1 h! R8 C5 Y9 z0 Z& E, d" p' A8 D, V' |8 s3 G1 t
0nn3of15w5b6402695830.png (3.01 KB, 下載次數(shù): 0)
下載附件
保存到相冊
0nn3of15w5b6402695830.png
2024-8-20 11:41 上傳
1 S1 w6 X% u% G5 H, e% h【設(shè)備出錯】的輸出事務(wù)處理
( d5 d3 x6 c, ^: A3 Z: q5 P# q8 B# _1 e- i( r
5ydmp0t4spk6402695930.png (3.04 KB, 下載次數(shù): 1)
下載附件
保存到相冊
5ydmp0t4spk6402695930.png
2024-8-20 11:41 上傳
/ t4 l: z; R) w$ O: i4 `' y/ V
2.3 設(shè)置(SETUP)事務(wù)處理【正!康脑O(shè)置事務(wù)處理3 O) G7 |4 u4 n' i& n2 ?
, p) j S3 ` T- v9 c
212qszquaaw6402696030.png (5.06 KB, 下載次數(shù): 2)
下載附件
保存到相冊
212qszquaaw6402696030.png
2024-8-20 11:41 上傳
, \! f- j, G6 Q6 |. G【設(shè)備忙時】的設(shè)置事務(wù)處理9 D# f% D& \) U" I8 f4 z: i' U- e" s( J
8 z4 T2 J( Z- J/ c' T& e
235jnktjw1h6402696130.png (4.37 KB, 下載次數(shù): 0)
下載附件
保存到相冊
235jnktjw1h6402696130.png
2024-8-20 11:41 上傳
0 t9 B x2 h+ S2 m) F4 [1 A: w' d3 [【設(shè)備出錯】的設(shè)置事務(wù)處理
5 [- f7 ^+ q# i9 X6 n3 W D6 {: P& v5 ?
sefssy0fx2p6402696230.png (3.16 KB, 下載次數(shù): 0)
下載附件
保存到相冊
sefssy0fx2p6402696230.png
2024-8-20 11:41 上傳
y; k8 X8 A# _4 \8 ], m, A 3、USB傳輸類型 在USB的傳輸中,定義了4種傳輸類型:控制傳輸 (Control Transfer)
, k+ j9 I3 w8 M; m; C, R1 d% r中斷傳輸 (Interrupt Transfer)1 c% I/ v% j: I9 F, L6 \
批量傳輸 (Bulk Transfer)
8 u' g' U$ j+ Q0 ]同步傳輸 (Isochronous)1 v# A+ `& K4 ]$ K7 e
3.1 控制傳輸 (Control Transfer)控制傳輸由2~3個階段組成:建立階段(Setup)2 k# w& T: k4 C# s! b: w8 Y I& k
數(shù)據(jù)階段(無數(shù)據(jù)控制沒有此階段)(DATA)/ [- \! I. Z; U
狀態(tài)階段(Status)0 n9 J, s. u/ {- R
[/ol]每個階段都由一次或多次(數(shù)據(jù)階段)事務(wù)傳輸組成(Transaction)?刂茢(shù)據(jù)由USB系統(tǒng)軟件用于配置設(shè)備(在枚舉時),其它的驅(qū)動軟件可以選擇使用control transfer實(shí)現(xiàn)具體的功能,數(shù)據(jù)傳輸是不可丟失的。3.1.1 建立階段主機(jī)從USB設(shè)備獲取配置信息,并設(shè)置設(shè)備的配置值。建立階段的數(shù)據(jù)交換包含了SETUP令牌封包、緊隨其后的DATA0數(shù)據(jù)封包以及ACK握手封包。它的作用是執(zhí)行一個設(shè)置(概念含糊)的數(shù)據(jù)交換,并定義此控制傳輸?shù)膬?nèi)容(即:在Data Stage中IN或OUT的data包個數(shù),及發(fā)送方向,在Setup Stage已經(jīng)被設(shè)定)。
% _) j: ~+ V( a8 e* k
eevuauomqxo6402696330.png (16.36 KB, 下載次數(shù): 2)
下載附件
保存到相冊
eevuauomqxo6402696330.png
2024-8-20 11:41 上傳
6 i! e6 L% O J; c, [, r2 s3.1.2 數(shù)據(jù)階段根據(jù)數(shù)據(jù)階段的數(shù)據(jù)傳輸?shù)姆较,控制傳輸又可分?種類型:控制讀。ㄗx取USB描述符)
; N2 p+ W2 `" W- B控制寫入(配置USB設(shè)備), W+ }7 l) Q D& |6 H
無數(shù)據(jù)控制8 o# r' O4 n3 K
[/ol]數(shù)據(jù)傳輸階段:用來傳輸主機(jī)與設(shè)備之間的數(shù)據(jù)。控制讀取
" B3 V$ M8 J& ?+ g* \是將數(shù)據(jù)從設(shè)備讀到主機(jī)上,讀取的數(shù)據(jù)USB設(shè)備描述符。該過程如下圖的【Control Read】所示。對每一個數(shù)據(jù)信息包而言,首先,主機(jī)會發(fā)送一個IN令牌信息包,表示要讀數(shù)據(jù)進(jìn)來。然后,設(shè)備將數(shù)據(jù)通過DATA1/DATA0數(shù)據(jù)信息包回傳給主機(jī)。最后,主機(jī)將以下列的方式加以響應(yīng):當(dāng)數(shù)據(jù)已經(jīng)正確接收時,主機(jī)送出ACK令牌信息包;當(dāng)主機(jī)正在忙碌時,發(fā)出NAK握手信息包;當(dāng)發(fā)生了錯誤時,主機(jī)發(fā)出STALL握手信息包。控制寫入, z+ b- A; _; ^) V% t- ?2 y* g
是將數(shù)據(jù)從主機(jī)傳到設(shè)備上,所傳的數(shù)據(jù)即為對USB設(shè)備的配置信息,該過程如下的圖【Control Wirte】所示。對每一個數(shù)據(jù)信息包而言,主機(jī)將會送出一個OUT令牌信息包,表示數(shù)據(jù)要送出去。緊接著,主機(jī)將數(shù)據(jù)通過DATA1/DATA0數(shù)據(jù)信息包傳遞至設(shè)備。最后,設(shè)備將以下列方式加以響應(yīng):當(dāng)數(shù)據(jù)已經(jīng)正確接收時,設(shè)備送出ACK令牌信息包;當(dāng)設(shè)備正在忙碌時,設(shè)備發(fā)出NAK握手信息包;當(dāng)發(fā)生了錯誤時,設(shè)備發(fā)出STALL握手信息包。# ?5 q5 _* u$ \
9 ]3 m# z; C2 R/ S6 K5 y
3.1.3 狀態(tài)階段狀態(tài)階段:用來表示整個傳輸?shù)倪^程已完全結(jié)束。狀態(tài)階段傳輸?shù)姆较虮仨毰c數(shù)據(jù)階段的方向相反,即原來是IN令牌封包,這個階段應(yīng)為OUT令牌封包;反之,原來是OUT令牌封包,這個階段應(yīng)為IN令牌封包。對于【控制讀取】而言,主機(jī)會送出OUT令牌封包,其后再跟著0長度的DATA1封包。而此時,設(shè)備也會做出相對應(yīng)的動作,送ACK握手封包、NAK握手封包或STALL握手封包。相對地對于【控制寫入】傳輸,主機(jī)會送出IN令牌封包,然后設(shè)備送出表示完成狀態(tài)階段的0長度的DATA1封包,主機(jī)再做出相對應(yīng)的動作:送ACK握手封包、NAK握手封包或STALL握手封包。3.2 批量傳輸 (Bulk Transfer)用于傳輸大量數(shù)據(jù),要求傳輸不能出錯,但對時間沒有要求,適用于打印機(jī)、存儲設(shè)備等。批量傳輸是可靠的傳輸,需要握手包來表明傳輸?shù)慕Y(jié)果。若數(shù)據(jù)量比較大,將采用多次批量事務(wù)傳輸來完成全部數(shù)據(jù)的傳輸,傳輸過程中數(shù)據(jù)包的PID 按照 DATA0-DATA1-DATA0-…的方式翻轉(zhuǎn),以保證發(fā)送端和接收端的同步。USB 允許連續(xù) 3次以下的傳輸錯誤,會重試該傳輸,若成功則將錯誤次數(shù)計數(shù)器清零,否則累加該計數(shù)器。超過三次后,HOST 認(rèn)為該端點(diǎn)功能錯誤(STALL),放棄該端點(diǎn)的傳輸任務(wù)。一次批量傳輸(Transfer)由 1 次到多次批量事務(wù)傳輸(Transaction)組成。翻轉(zhuǎn)同步:發(fā)送端按照 DATA0-DATA1-DATA0-…的順序發(fā)送數(shù)據(jù)包,只有成功的事務(wù)傳輸才會導(dǎo)致 PID 翻轉(zhuǎn),也就是說發(fā)送端只有在接收到 ACK 后才會翻轉(zhuǎn) PID,發(fā)送下一個數(shù)據(jù)包,否則會重試本次事務(wù)傳輸。同樣,若在接收端發(fā)現(xiàn)接收到到的數(shù)據(jù)包不是按照此順序翻轉(zhuǎn)的,比如連續(xù)收到兩個 DATA0,那么接收端認(rèn)為第二個 DATA0 是前一個 DATA0 的重傳。它通過在硬件級執(zhí)行“錯誤檢測”和“重傳”來確保host與device之間“準(zhǔn)確無誤”地傳輸數(shù)據(jù),即可靠傳輸。它由三種包組成(即IN事務(wù)或OUT事務(wù)):token1 w! L" N7 w5 _) |( l2 H
data
% }3 O! S- D1 xhandshake
7 W, C/ T0 q$ a9 B+ _[/ol]
% l' l8 a; t. _& Y/ D! d! S( }
1 |7 e3 e. |4 sFor IN Token (即:IN Transaction), c1 n: J) V+ ]$ v: C' i
[/ol]ACK: 表示host正確無誤地接收到數(shù)據(jù)
1 {' v1 L6 O1 X% w6 W) ]% b. eNAK: 指示設(shè)備暫時不能返回或接收數(shù)據(jù) (如:設(shè)備忙)
4 J- O/ [/ i( lSTALL:指示設(shè)備永遠(yuǎn)停止,需要host軟件的干預(yù) (如:設(shè)備出錯)
( ] }- {. n# X4 E5 {4 JFor OUT Token (即:OUT Transaction)
2 k7 L* i- L; \0 y! H) a9 \! ]1 n[/ol]如果接收到的數(shù)據(jù)包有誤,如:CRC錯誤,Device不發(fā)送任何handshake包ACK: Device已經(jīng)正確無誤地接收到數(shù)據(jù)包,且通知Host可以按順序發(fā)送下一個數(shù)據(jù)包/ g( _, k2 f+ a3 i: P4 R: y O6 N
NAK: Device 已經(jīng)正確無誤地接收到數(shù)據(jù)包,且通知Host重傳數(shù)據(jù),由于Device臨時狀況(如buffer滿)
" B% d+ o/ i) E/ {! `( F) x/ uSTALL: 指示Device endpoint已經(jīng)停止,且通知Host不再重傳
9 [: r( R; \/ \8 [. RBulk讀寫序列
+ K$ x1 |+ x* A6 e- T' [9 |[/ol]
2 _1 F: C* @, N2 p6 ]7 h4 J9 \8 ~* m4 R- ~( b
即由一系統(tǒng)IN事務(wù)或OUT事務(wù)組成。3.3 中斷傳輸(Interrupt Transfer)中斷傳輸由IN或OUT事務(wù)組成。中斷傳輸在流程上除不支持PING 之外,其他的跟批量傳輸是一樣的。他們之間的區(qū)別也僅在于事務(wù)傳輸發(fā)生的端點(diǎn)不一樣、支持的最大包長度不一樣、優(yōu)先級不一樣等這樣一些對用戶來說透明的東西。主機(jī)在排定中斷傳輸任務(wù)時,會根據(jù)對應(yīng)中斷端點(diǎn)描述符中指定的查詢間隔發(fā)起中斷傳輸。中斷傳輸有較高的優(yōu)先級,僅次于同步傳輸。同樣中斷傳輸也采用PID翻轉(zhuǎn)的機(jī)制來保證收發(fā)端數(shù)據(jù)同步。下圖為中斷傳輸?shù)牧鞒虉D。中斷傳輸方式總是用于對設(shè)備的查詢,以確定是否有數(shù)據(jù)需要傳輸。因此中斷傳輸?shù)姆较蚩偸菑腢SB設(shè)備到主機(jī)。) h' F+ ^! m2 P
$ n9 w3 ^1 K% c% J& J8 V0 R
DATA0或DATA1中的包含的是中斷信息,而不是中斷數(shù)據(jù)。3.4 同步傳輸(Isochronous Transfer)它由兩種包組成:
" [0 {1 m3 t& Y7 b1 m3 J& [& J6 Ntoken
/ F# U7 {0 o1 j1 f: ~0 `data. d1 A3 o: u7 R6 h5 o
[/ol]同步傳輸不支持“handshake”和“重傳能力”,所以它是不可靠傳輸。同步傳輸是不可靠的傳輸,所以它沒有握手包,也不支持PID翻轉(zhuǎn)。主機(jī)在排定事務(wù)傳輸時,同步傳輸有最高的優(yōu)先級。同步傳輸適用于必須以固定速率抵達(dá)或在指定時刻抵達(dá),可以容忍偶爾錯誤的數(shù)據(jù)上。實(shí)時傳輸一般用于麥 克風(fēng)、喇叭、UVC Camera等設(shè)備。實(shí)時傳輸只需令牌與數(shù)據(jù)兩個信息包階段,沒有握手包,故數(shù)據(jù)傳錯時不會重傳。
I& h3 Z1 s# ~) e& U/ _
6 ?# Q6 E3 [% u* U! v, ]# \9 w) `0 e1 U, G- ?
+ h. m9 [, m! t9 Y* m1 z
來源地址:https://blog.csdn.net/myarrow/article/details/84841132 e/ r% P% D- j
8 l* e: f: h( p
; ^. S) x: n) ^: }3 X. H+ r- l* t' f0 a
聲明:
) l- V- F1 e$ l4 [8 K) x- ?& l聲明:文章來源網(wǎng)絡(luò),作者:Arrow。本號對所有原創(chuàng)、轉(zhuǎn)載文章的陳述與觀點(diǎn)均保持中立,推送文章僅供讀者學(xué)習(xí)和交流。文章、圖片等版權(quán)歸原作者享有,如有侵權(quán),聯(lián)系刪除。投稿/招聘/推廣/宣傳 請加微信:woniu26a推薦閱讀▼6 B4 d0 B7 V$ z! o1 ?" \7 o: }; O
電路設(shè)計-電路分析7 G, A @ J# I/ |; k; @) p+ v
emc相關(guān)文章
% t2 B1 V" f$ z) K# w! f4 t電子元器件
& n" n/ y/ G. f* R2 \0 e; A: m后臺回復(fù)“加群”,管理員拉你加入同行技術(shù)交流群。 |
|