999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

I2C通信協(xié)議應用及其注意事項

2015-07-09 10:55:40葉敬昌
家電科技 2015年1期
關鍵詞:記憶信號

葉敬昌

(珠海格力電器股份有限公司 廣東珠海 519070)

1 概述

I2C總線只要求2條雙向通信線路SDA(串行數(shù)據(jù))和SCL(串行時鐘)。每個器件都有一個唯一的地址,而且都可以作為一個發(fā)送器或接收器。如常用的存儲器既可以接收又可以發(fā)送數(shù)據(jù)。除了發(fā)送器和接收器外器件在執(zhí)行數(shù)據(jù)傳輸時也可以被看作是主機或從機。主機初始化總線的數(shù)據(jù)傳輸并產生允許傳輸?shù)臅r鐘信號,此時任何被尋址的器件都被認為是從機。

I2C總線是一個多主機的總線,這就意味著可以連接多個能控制總線的器件到總線。SDA和SCL都是雙向線路,都通過一個電流源或上拉電阻連接到正的電源電壓,因此當總線空閑時,SDA和SCL都是高電平,同時連接到總線的器件輸出級必須是漏極開路或集電極開路。I2C總線上數(shù)據(jù)的傳輸速率在標準模式下可達100kbit/s,在快速模式下可達400kbit/s,在高速模式下可達3.4Mbit/s,但總線電容不能超過400pF。

2 I2C時序基礎

SDA為數(shù)據(jù)信號(數(shù)據(jù)口)、SCL為時鐘信號(高電平有效)。每次時鐘信號SCL有效(高電平)時,表示此時數(shù)據(jù)信號有效,從機可以讀取SDA數(shù)據(jù)信號;當時鐘信號SCL無效(低電平)時,SDA數(shù)據(jù)信號無效,此時數(shù)據(jù)口(SDA)可以翻轉電平、改變IO口(輸入輸出翻轉等)等。見圖1。

數(shù)據(jù)通信需要有起始位(S)和結束位(P)。I2C規(guī)定:在時鐘有效時(高電平)數(shù)據(jù)口產生上升沿表示停止位(P位),產生下降沿表示開始位(S位)或重復開始(Sr位)。見圖2。

I2C規(guī)定:通信以字節(jié)為單位,即一次通信需要發(fā)送8位數(shù)據(jù),從機每收到一個字節(jié)數(shù)據(jù)后需要反饋一個低電平應答信號ACK;若主機需要改變原來的主從關系、讀取關系,則必須由新主機產生一個開始位(S)或重復開始位(Sr)。下面以連續(xù)通信數(shù)據(jù)包為例解析一下I2C標準協(xié)議,見圖3。

通信開始,由主機置位數(shù)據(jù)口、時鐘口,在時鐘信號有效時,數(shù)據(jù)口產生一個下降沿,表示通信開始(S位)。之后在時鐘信號有效期間主機連續(xù)發(fā)送8位數(shù)據(jù),這8位數(shù)據(jù)中前7位表示選中的從機地址,第8位表示操作指令。至此主機翻轉數(shù)據(jù)口(由輸出口翻轉為輸入口),準備讀取被選中的從機的應答信號ACK。從機收到8位數(shù)據(jù)后,在下一個時鐘信號有效前(從機輸出),翻轉IO口(由輸入口翻轉為輸出口)輸出一個低電平應答信號ACK,并輸出有效的時鐘信號給主機,表示一切就緒,準備好了下一字節(jié)的數(shù)據(jù)發(fā)送或接收。至此通信信道建立,以后主機可以和該選中的從機連續(xù)通信,直到主機產生一個停止位(P位)。

當通信過程中需要改變通信的方向,如,主機向從機寫數(shù)據(jù)后,需要讀取從機的數(shù)據(jù),則需要在主機向從機寫完數(shù)據(jù)后,在停止位(P位)之前,再產生一個開始位(此S位叫Sr重復開始位)。從機接收到Sr位后釋放總線等待指令,這時主機就可以重新尋址并發(fā)送操作指令(讀或寫)。尋址過程中可以選擇不同的從機也可以選著同一個從機,通信直到主機發(fā)送停止位(P位)后所有從機結束本次通信。

為了規(guī)范通信格式,I2C協(xié)議詳細規(guī)定了:高低電平保持時間、上升、下降沿斜率等時間要求及其在不同通信速率下的標準值。如:在普通模式下(100K速率以下),開始位的下降沿,必須在時鐘信號有效4uS之后產生才有效;在快速模式下為(400K速率)0.6uS;高速模式下(3.4M速率)為160nS。

3 I2C通信的應用及其注意事項

在家電領域,使用到I2C協(xié)議的地方很多,如:傳感器通信、數(shù)據(jù)存儲等。但對于低成本產品來說,由于使用的MCU等器件受成本限制,不會含有太多片上資源,IO口復用成為這些低成本產品的首先,因而不依賴芯片硬件資源,通過普通IO口用軟件模擬I2C協(xié)議通信是軟件工程師必修的一門課程。

下面以MCU和記憶芯片通信為例,簡要說明一下,軟件模擬I2C的應用及使用中的注意事項。

普通MCU和記憶芯片數(shù)據(jù)交換的通信電路,如圖4所示(為了方便說明這里以IC24C02記憶芯片為例且強制其地址拉地,即地址為“1010000X”,其中X代表操作指令,“0”為寫指令,“1”為讀指令)。

通信過程如下:

(1)主機(MCU)發(fā)送第一個字節(jié)A0H,表示選擇記憶芯片,操作為寫;

(2)主機讀取從機(記憶芯片)發(fā)送的應答信號ACK;

(3)主機發(fā)送第二個字節(jié)00H,告訴記憶芯片將要操作內部00H的存儲地址;

(4)主機讀取從機發(fā)送的應答信號ACK;

(5)主機發(fā)送第三個字節(jié)A1H,表示選擇記憶芯片,操作為讀,(讀取的起始地址為上一字節(jié)的00H)。

(6)從機發(fā)送一個字節(jié)數(shù)據(jù)后,等待主機的應答信號ACK;

(7)主機讀取一個字節(jié)數(shù)據(jù)后,發(fā)送應答信號ACK給從機;

(8)從機收到主機的應答信號后,發(fā)送下一個字節(jié)數(shù)據(jù);

(9)重復(6)、(7)、(8)通信,直到通信結束,主機發(fā)送停止位P;

(10)從機收到停止位P后,結束通信。

在這個通信過程中,特別要注意主機使用軟件模擬I2C協(xié)議,讀取應答信號ACK時需要翻轉IO口(由輸出口變?yōu)檩斎肟冢DIO口過程中輸入、輸出寄存器必須先清零,同時需要在時鐘信號SCL無效時翻轉,否則將出現(xiàn)莫名的高電平,如圖5所示。

究其原因,是主機翻轉IO口為輸入口讀取從機應答信號后再次翻轉為輸出口準備下一字節(jié)數(shù)據(jù)發(fā)送時,輸出寄存器沒有清零(輸出高電平“1”),因而,主機發(fā)送了一個莫名的高電平,經電阻分壓后,就如圖5所示的波形。

軟件模擬I2C通信協(xié)議時,時序問題尤為重要,按照I2C標準協(xié)議,數(shù)據(jù)要在時鐘信號無效時才能改變。若在時鐘為高電平時產生上升沿則表示停止,產生下降沿表示開始(或重新開始)。

操作的流程為:開始(下降沿)——發(fā)送A0H(表示選擇記憶芯片,操作為寫)——讀取應答信號ACK——發(fā)送00H(告訴記憶芯片將要操作內部00H的存儲地址)——讀取應答信號ACK——重新開始(改變操作)——發(fā)送A1H(表示選擇記憶芯片,操作為讀,讀取的起始地址為上一字節(jié)的00H)。

但在“重新開始”的操作過程中,由于時序操作不當,產生了一個不應該的停止位,也就表示了前面的通信結束。將導致后面發(fā)送A1H,讀取操作的時候,究竟讀取記憶芯片存儲器的哪個地址?是00H開始讀還是11H開始讀?I2C協(xié)議沒有規(guī)定,將導致后面讀取操作失敗。如圖6所示。

反應在源代碼上就是程序先使時鐘有效“PEEClock = 1”經延時“nop_1()”后IO口才輸出高電平“PEEDataOut = 1”,這樣就在時鐘有效的前提下產生了一個上升沿,也就是停止位。

數(shù)據(jù)通信的高低電平,需要保持一定的時間,目的在于輸入方能可靠檢測到相應的電平,這就用到了軟件上的延時,但延時并不是越長越好。如圖7所示的通信波形,將導致通信失敗。

主機向從機寫入一個字節(jié)數(shù)據(jù)后,從機發(fā)送應答信號ACK(從機拉低數(shù)據(jù)口),主機讀取應答信號后,準備繼續(xù)寫下一個字節(jié)數(shù)據(jù)。但在此時,從機已經釋放了總線,并翻轉為輸入口,SDA數(shù)據(jù)被上拉電阻拉高,而時鐘信號由于主機輸出延時過長,導致從機接收到了一個停止位,后面主機發(fā)送的數(shù)據(jù),從機不再響應,因此通信失敗。

4 總結

I2C協(xié)議是一種靈活的、簡單易用的、占用系統(tǒng)資源少的通信協(xié)議,因而受到廣大工程師的喜好,應用非常廣泛。即使使用片上的硬件資源實現(xiàn)I2C通信,時序上的配合、數(shù)據(jù)接收和發(fā)送,都需要和相關從機密切關聯(lián),切不可一刀切,因為各種從機對時序的要求、速率的要求均或多或少的有差別,因而不能一概而論。

使用軟件模擬I2C協(xié)議,則更需要時序上的配合,IO的翻轉、寄存器的操作、時鐘信號保持的時間等等都需要通盤考慮,多一個NOP或許將導致整個通信失敗。

[1]Philips.I2C Peripherals [J].Holand,2000.

猜你喜歡
記憶信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
夏天的記憶
完形填空二則
孩子停止長個的信號
記憶中的他們
端午記憶
絲綢之路(2016年9期)2016-05-14 14:36:33
兒時的記憶(四)
兒時的記憶(四)
記憶翻新
海外文摘(2016年4期)2016-04-15 22:28:55
基于LabVIEW的力加載信號采集與PID控制
主站蜘蛛池模板: 欧美日韩精品一区二区视频| 国产在线自揄拍揄视频网站| 亚洲三级a| 欧美亚洲国产视频| 丁香五月婷婷激情基地| 国产日本一区二区三区| 91人人妻人人做人人爽男同| 国产精品久久久久婷婷五月| 伊人激情综合网| 99热这里只有精品久久免费| aaa国产一级毛片| 亚洲欧美激情小说另类| 久久精品中文字幕免费| 久久国产乱子| 综合天天色| 999精品视频在线| 欧美精品xx| 免费啪啪网址| 91国内在线观看| 99精品国产自在现线观看| 色老二精品视频在线观看| 日韩第八页| 国产午夜不卡| 日韩欧美高清视频| 毛片免费视频| 亚洲国产清纯| 国产一在线| 一级毛片免费不卡在线| 欧美性猛交一区二区三区| 国产人免费人成免费视频| a毛片在线| 久久精品这里只有国产中文精品 | 国产成人精彩在线视频50| 一区二区三区四区精品视频| 在线国产综合一区二区三区| 精品福利国产| 波多野结衣一区二区三区四区视频| 欧美国产精品不卡在线观看| 黄色污网站在线观看| 亚洲av无码成人专区| 韩日午夜在线资源一区二区| 日韩精品一区二区三区大桥未久 | 欧美a√在线| 亚洲va在线∨a天堂va欧美va| 国产黄色爱视频| 无码aⅴ精品一区二区三区| 久久黄色毛片| 麻豆国产精品| 国产91高跟丝袜| a级毛片免费看| 国产剧情国内精品原创| 一级一级一片免费| 久久香蕉国产线看观看亚洲片| 99国产精品一区二区| 国产一在线| 亚洲欧美在线综合一区二区三区 | 亚洲综合精品香蕉久久网| 欧美一区二区自偷自拍视频| 亚洲日韩日本中文在线| 九九久久精品免费观看| 色噜噜狠狠色综合网图区| 欧美激情第一区| 欧美精品在线免费| 国产00高中生在线播放| 2021最新国产精品网站| 亚洲中文字幕久久精品无码一区| 国产精品自拍合集| 欧美日韩激情在线| 国产午夜一级毛片| 国产一级在线播放| 无码中字出轨中文人妻中文中| 中文字幕乱妇无码AV在线| 國產尤物AV尤物在線觀看| 欧洲亚洲一区| 热久久国产| 亚洲av成人无码网站在线观看| 国产成人三级在线观看视频| 日韩中文精品亚洲第三区| 3D动漫精品啪啪一区二区下载| 亚洲天堂久久久| 日本五区在线不卡精品| 原味小视频在线www国产|