接入碼有三種類型:Channel Access Code(CAC)、Device Access Code(DAC)和Inquiry Access Code(IAC)。CAC用于標(biāo)識一個Piconet,所有在該Piconet中傳送的分組都包含CAC;DAC用于特殊的信令過程,如尋呼和響應(yīng)尋呼;IAC又分為General(GIAC)和Dedicated(DIAC)兩類:GIAC對該區(qū)域內(nèi)所有設(shè)備都是一樣的,用于發(fā)現(xiàn)其它的藍牙單元;DIAC用于根據(jù)某種特性劃分特定用戶群。
分組頭包含鏈路控制信息,由6個字段組成:3比特的AM-ADDR、4比特的TYPE、1比特的FLOW、1比特的ARQN、1比特的SEQN、8比特的HEC,一共18個比特;再加速率為1/3的FEC,編碼保護后一共是54比特。在主節(jié)點與從節(jié)點通信時,需要區(qū)分不同的從節(jié)點,用AM-ADDR來表示激活的從節(jié)點地址。全“0”地址用于廣播,顯然3比特的編碼最多可以支持的激活從節(jié)點數(shù)為7(扣除全0)。4比特的TYPE字段可以區(qū)分16種不同類型的分組,詳細情況見本節(jié)第3點。FLOW字段用于ACL鏈路上的流量控制:如果接收端緩存滿,則FLOW=0指示發(fā)端停止發(fā)送數(shù)據(jù);如果緩存清空,則FLOW=1指示發(fā)端繼續(xù)發(fā)送。ARQN=0時表示NAK;ARQN=1時表示ACK,用于對負載傳送正確性的確認。SEQN比特在每發(fā)送一個新的分組時翻轉(zhuǎn)一次,因為藍牙采用無編號ARQ機制,所以SEQN對于重傳是必需的,這樣可以避免由于 ACK的去失而造成分組重復(fù)接收。分組頭用8比特的校驗碼以檢查分組頭的正確性。
3.分組類型
在16種分組中,有4種是公共的;另外12種根據(jù)SCO和ACL不同鏈路而不同。
(1)公共分組
ID分組:由DAC或IAC組成,長度固定為68比特,用于尋呼、探詢、響應(yīng)。
NULL分組:僅包含 CAC和分組頭,沒有負載,長度固定為126比特。NULL分組用于通過ARQN、FLOW等字段將鏈路信息返回給發(fā)送端。NULL分組無需確認。
POLL分組:POLL分組與NULL分組類似,也沒有負載字段,但是需要接收端的確認。當(dāng)從節(jié)點收到POLL分組后,必須響應(yīng),即使當(dāng)時沒有數(shù)據(jù)信息需要發(fā)送。
FHS分組:是一種特殊的控制分組,它宣告發(fā)端的設(shè)備地址和時鐘信息,以實現(xiàn)跳頻同步。負載字段包含144個信息比特加16比特的CRC校驗碼,然后用速率為2/3的FEC保護,最終長度為240比特。FHC的結(jié)構(gòu)比較復(fù)雜,限于篇幅不作介紹。
DM1分組:DM代表Data Medium rate,該分組僅攜帶數(shù)據(jù)信息,負載包含18個信息字節(jié)和16比特的CRC校驗