一拂共、IIC協(xié)議
? ? 1雕欺、I2C(Inter-Integrated Circuit?BUS) 集成電路總線聋丝。該總線由NXP(原PHILIPS)公司設(shè)計(jì)编振,多用于主控制器和從器件間的主從通信缀辩,在小數(shù)據(jù)量場合使用,傳輸距離短踪央,任意時(shí)刻只能有一個(gè)主機(jī)等特性臀玄。
? ? 2、IIC的物理層:
? ? ? ? ①畅蹂、只要求兩條總線線路:串行數(shù)據(jù)線 SDA健无,串行時(shí)鐘線 SCL。IIC 是半雙工液斜,而不是全雙工累贤。
? ? ? ? ②、連接到總線的器件可通過其唯一地址和其它器件通信少漆。主/從機(jī)角色和地址可配置臼膏,主機(jī)可作為主機(jī)發(fā)送器和主機(jī)接收器。
? ? ? ? ③示损、傳輸速率在標(biāo)準(zhǔn)模式下可以達(dá)到100kb/s渗磅,快速模式下可以達(dá)到400kb/s。
? ? ? ? ④检访、連接到總線的設(shè)備數(shù)量始鱼,只受總線的最大負(fù)載電容400pf限制。
? ? ? ? ⑤脆贵、IIC 是真正的多主機(jī)總線医清,它可在通訊過程中改變主機(jī)。如果多個(gè)主機(jī)同時(shí)請求總線丹禀,可通過沖突檢測和仲裁状勤,防止總線數(shù)據(jù)被破壞。而 SPI 每次通信前要把主機(jī)定死双泪。
? ? ? ? ⑥持搜、一個(gè)三極管,使用開集(極電集開發(fā)出去作為輸出)電路焙矛。
? ? ? ? ⑦葫盼、發(fā)送原理:
? ? 3、IIC 協(xié)議:
? ??????①村斟、I2C總線上傳送的數(shù)據(jù)信號是廣義的贫导,既包括地址信號抛猫,又包括真正的數(shù)據(jù)信號。
? ? ? ? ②孩灯、數(shù)據(jù)的有效性:時(shí)鐘SCL在高電平周期內(nèi)闺金,SDA線上的數(shù)據(jù)必須保持穩(wěn)定。數(shù)據(jù)線僅可在時(shí)鐘SCL為低電平時(shí)改變峰档。
? ? ? ? ③败匹、起始和結(jié)束條件:
????????????Ⅰ、起始條件:當(dāng)SCL為高電平時(shí)讥巡,SDA線上由高到低的跳變掀亩。總線在起始條件后視為忙狀態(tài)欢顷。
? ? ? ? ? ? Ⅱ槽棍、結(jié)束條件:當(dāng)SCL為高電平時(shí),SDA線上由低到高的跳變抬驴。在停止條件之后視為空閑狀態(tài)炼七。
? ? ? ? ? ? Ⅲ、若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送怎爵,則可以不產(chǎn)生終止信號特石,馬上再次發(fā)出起始信號對另一從機(jī)進(jìn)行尋址。
????????④鳖链、起始和終止信號都是由主機(jī)發(fā)出姆蘸。需要進(jìn)行數(shù)據(jù)的收或發(fā)也是由主機(jī)所控制的。
? ? ? ? ⑤芙委、應(yīng)答:每當(dāng)傳輸完一個(gè)字節(jié)的數(shù)據(jù)逞敷,主機(jī)需等待從機(jī)給出應(yīng)答信號 ACK。從機(jī)應(yīng)答主機(jī)所需要的時(shí)鐘仍是主機(jī)提供的灌侣,應(yīng)答出現(xiàn)在每一次主機(jī)完成8個(gè)數(shù)據(jù)位傳輸后緊跟著的時(shí)鐘周期推捐。(即接收器 接收到8位數(shù)據(jù)后,在第9個(gè)時(shí)鐘周期侧啼,拉低 SDA)
? ? 4牛柒、數(shù)據(jù)幀格式:
二、硬件 IIC 初始化
? ? 1痊乾、實(shí)例框圖:
? ? 2皮壁、發(fā)送流程:
????????①、發(fā)出start信號
? ? ? ? ②哪审、把地址數(shù)據(jù)寫入到發(fā)送寄存器蛾魄,一寫入就會自動(dòng)的發(fā)出時(shí)鐘,并把這8位數(shù)據(jù)從SDA發(fā)送給從設(shè)備。
? ? ? ? ③滴须、第九個(gè)時(shí)鐘會收到回應(yīng)信號舌狗,查詢寄存器看是否有ACK。有ACK表示數(shù)據(jù)發(fā)送成功了扔水。
? ??????④痛侍、第九個(gè)時(shí)鐘后會產(chǎn)生中斷,IIC 控制器會拉低 CSL 信號铭污,阻止主或從使用總線恋日。
? ??????⑤、如果還需傳輸數(shù)據(jù)嘹狞,則隨后清中斷來恢復(fù)時(shí)鐘,使總線恢復(fù)使用來重復(fù)發(fā)送數(shù)據(jù)誓竿。否則結(jié)束(應(yīng)該是結(jié)束流程中進(jìn)行清中斷操作磅网,而非手動(dòng)操作)。
? ? ? ? ⑤筷屡、發(fā)完后設(shè)置寄存器涧偷,讓它發(fā)出終止信號。
? ? 3毙死、初始化步驟:
? ? ? ? ①燎潮、設(shè)置時(shí)鐘:時(shí)鐘源PCLK(50MHZ)太快,需設(shè)置分頻系數(shù)降低時(shí)鐘至需要的 SCL扼倘。
? ? ? ? ②确封、