www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]   在Mcs-51單片機已經(jīng)被廣泛使用的時候,還沒有I2c協(xié)議標準。但今天,I2c已經(jīng)作為IC之間的標準數(shù)據(jù)交換協(xié)議被廣泛采用。沒有I2c接口的Mcs-51單片機也常會涉及和標準I2c器件交換數(shù)據(jù),所以Mcs-51模擬I

  在Mcs-51單片機已經(jīng)被廣泛使用的時候,還沒有I2c協(xié)議標準。但今天,I2c已經(jīng)作為IC之間的標準數(shù)據(jù)交換協(xié)議被廣泛采用。沒有I2c接口的Mcs-51單片機也常會涉及和標準I2c器件交換數(shù)據(jù),所以Mcs-51模擬I2c接口的文章也常見諸報端。

  最近,筆者為了設(shè)計一個基于I2c時鐘的電子打鈴器的方案,先進行了一次MCS-51模擬I2c接口操作的實戰(zhàn)編程。原以為憑著手頭的各種資料,可以輕松完成,沒想到頗費了一番周折,所以特將自己獲得的經(jīng)驗作個小結(jié)。

  1.FG器件的硬件結(jié)構(gòu)

  I2c總線由sDA和scL兩條信號線組成,其中SDA為數(shù)據(jù)線,SCL為時鐘信號線。I2c總線上可以掛接SRAM、E2PROM、ADC/DAC、RTc、I/O口、DTMF、時鐘芯片、溫度芯片等有標準I2c接口的芯片,形成一個完備的數(shù)字化處理系統(tǒng)。上電時,sDA和SCL都由各自線上接的上拉電阻拉到高電平狀態(tài)。

  從上圖可以看出,每一個I2c器件都有sDA出、sDA入、scL出、SCL入四個信號端口。當某一掛接在同一I2c總線的器件scL輸出為低時,SCL總線就會被其拉為低。SDA總線情況也一樣。

  然而,sDA人和scL人信號端口在器件內(nèi)部又是可控制的。

  當主機啟動I2C總線,并向I2c總線發(fā)送器件地址時,各個器件都會接收sDA入和SCL入信號,但只有本器件地址與接收到的器件地址信息一致的那個I2c器件才會繼續(xù)接收后續(xù)的信息,其他器件則會關(guān)閉輸入端口直至下一次主機啟動I2C總線。

  2.I2C傳輸協(xié)議標準

  I2c總線是一條異步串行通訊總線,主機可以隨時啟動I2c總線,并發(fā)送器件地址與相應(yīng)的從器件建立通訊聯(lián)系。每一時刻,只能有主機和一個從器件占用I2C總線。。I2C傳輸協(xié)議允許總線上接入同一I2c總線,在多主機的I2C總線系統(tǒng)中,通過多主競爭的協(xié)調(diào)管理確定在某一時刻唯一的主機,其他主機則被置于從器件位置等待主機發(fā)落。本文僅涉及MCS-5l單片機與I2c從器件的數(shù)據(jù)交換,所以只模擬單個主機操作I2c從器件的過程。

  (1)IIC器件的器件地址和內(nèi)部地址

  每一接入I2C總線的從器件都要有唯一的器件地址,器件地址是主機在啟動I2c總線后發(fā)送的第1個八位二進制數(shù)據(jù)。這個八位二進制數(shù)由三部分組成:四位固有的地址編碼(D7-D4),三位引腳地址編碼(D3-D1)和一位讀/寫選擇位(1/0,Do)。

  四位固有的地址編碼是I2c器件出廠前已固化在芯片內(nèi)的固定編碼,是不能改變的。比如E2PROM芯片24CXX(包括各公司生產(chǎn)的兼容芯片)的器件地址為1010,LED驅(qū)動器sAAl064的器件地址為0111,時鐘芯片PcF8563的器件地址為1010。三位引腳地址編碼可以根據(jù)器件芯片引腳A2、A1、AO接電源或接地(I/0),形成編碼來確定同一總線上從器件芯片個體。24CXX芯片上都有A2、A1、A0引腳,但由于部分芯片內(nèi)部占用了地址編碼資源,所以部分芯片的A2、A1、A0引腳并不全有用,而是空腳。因此,一條總線上可掛接的芯片數(shù)量也不一樣,24C02可以掛接8片,每一片24C02的引腳A2、A1、A0分別置位為000-111,則主機發(fā)送不同的器件地址就能分別訪問到不同的24C02芯片。24C16則可看成8片24C02為一體,主機發(fā)送不同的器件地址則是訪問24c16內(nèi)部的不同區(qū)塊。

  24C32以上的芯片由于其內(nèi)部地址編碼分兩字節(jié),突破了地址編碼資源11位(3位器件地址+8位內(nèi)部地址)的限制,因此總線容量也獲得了擴充。

  器件芯片內(nèi)部都有一定量的數(shù)據(jù)存儲單元,這就要由內(nèi)部地址編碼(也稱子地址)來確定了。一般的I2c器件的內(nèi)部地址編碼為1個八位二進制數(shù)據(jù)(A7~AO),可編址256字節(jié)。如果不夠就需要兩字節(jié)來表示:高字節(jié)(A15~A8)和低字節(jié)(A7-AO)。還不夠的話,還可以擴充。可以看出I2C協(xié)議是有很強的生命力的。

  (2)內(nèi)置地址計數(shù)器

  為了方便對IIC器件內(nèi)部數(shù)據(jù)存儲單元的讀寫操作,24Cxx芯片內(nèi)部還內(nèi)置了一個地址計數(shù)器。在讀寫一個字節(jié)完成后,地址計數(shù)器自動加1。這樣在第一字節(jié)讀寫完成后,第二次進行讀寫時,地址計數(shù)器已經(jīng)指向下一個存儲單元。在讀取數(shù)據(jù)時,先發(fā)送起始單元地址,然后可以連續(xù)讀取任意個字節(jié),直到地址計數(shù)器達到最大值翻轉(zhuǎn)到0,進行下一輪計數(shù)。例如24C16(內(nèi)部地址編碼范圍000H~7FFH)先發(fā)送起始單元地址005H,然后連續(xù)讀取7FFH個字節(jié),則前7FAH個字節(jié)為005H~7FFH單元內(nèi)容,最后5個字節(jié)則是000H~004H單元內(nèi)容。

  但是,進行寫入數(shù)據(jù)操作時,則地址計數(shù)器僅限于低三(或四、五、六)位。以24C01為例,當它計數(shù)到1000B時,實際上并沒有發(fā)生進位,而是又回到000B開始下一輪計數(shù)。所以,如果是單字節(jié)寫,可靠的方式是發(fā)送寫入數(shù)據(jù)前,都先發(fā)送欲寫入單元的地址編碼。如果是寫入連續(xù)的單元(也稱頁寫),則先發(fā)送起始單元地址,然后發(fā)送要寫入的n個字節(jié)。24COI/02/04/08/16/32/64/128/256每次可連續(xù)寫入字節(jié)數(shù)分別為8/16/16/16/16/32/32/64/64個。但這是起始單元地址為0時的連續(xù)個數(shù),如果起始單元地址不是0,則實際這些字節(jié)的存儲位置是不連續(xù)的。例如24C16(內(nèi)部地址編碼范圍000H~7FFH)先發(fā)送起始單元地址005H,然后連續(xù)寫入16個字節(jié),則前11個字節(jié)寫入了005H~OOFH單元,最后5個字節(jié)被寫入了000H~004H單元。如果連續(xù)寫入17個字節(jié),則005H單元所存的第1個字節(jié)內(nèi)容又被最后的第17個字節(jié)覆蓋,造成第1個字節(jié)內(nèi)容丟失。

  這是頁寫方式讓人較難理解的地方。

  (3)讀寫IIC器件的一般過程

  每一次讀寫I2C器件前,主機都要先啟動。I2C總線,如圖2所示。在時鐘線scL為高電平時,數(shù)據(jù)線sDA由高電平向低電平變化即啟動了I2c總線,一般稱此過程為起始信號s。接著,主機將向I2c總線發(fā)送第1個八位二進制數(shù)據(jù)——器件地址(包括最后一位“讀寫選擇位”)。如果被訪I2c器件確認自己被選中,將在主機發(fā)出第9個scL時鐘信號時將SDA拉向低電平,形成一個應(yīng)答信號AcK。此時,主機將sDA置高電平,等待被訪I:c器件送回的應(yīng)答信號。收到應(yīng)答信號后,主機開始執(zhí)行相應(yīng)的讀寫操作。

  一次讀寫完成后,主機發(fā)出終止信號P,所有I2C器件都將恢復sDA和scL為高電平的初始狀態(tài),如下圖所示。在時鐘線SCIJ為高電平時,數(shù)據(jù)線sDA由低到高的電平變化即停止了I2c總線數(shù)據(jù)傳送。

  根據(jù)器件地址最后一位“讀寫選擇位”的不同,可以分為讀和寫兩種情況。但如前所述,讀和寫在操作上還是有所不同的。下面分字節(jié)讀、順序讀、字節(jié)寫、頁寫四種情況分別敘述。

  主機每發(fā)送完一個字節(jié),都有一個將sDA置高電平,等待被訪I2c器件送回的應(yīng)答信號過程,以下過程中將此省略,實際過程中是不可省略的,特作說明。同樣,主機接收完IIC器件發(fā)來的1字節(jié)數(shù)據(jù)后,也會向I2c器件發(fā)出一個信號,即到第9個scL時鐘時將SDA拉為低電平(相當于第九位為0),如下圖。

  送出的1個字節(jié)數(shù)據(jù)→發(fā)出終止信號P。

  如果讀取前未發(fā)送子地址,則讀取的將是上一次讀寫完成后指向的下一字節(jié)內(nèi)容。這一點同樣適用于順序讀過程。需要注意的是,發(fā)送子地址前發(fā)送的器件地址末位應(yīng)為0,屬于寫操作,這是比較容易出錯的。

  順序讀先發(fā)送要讀取單元的子地址:發(fā)出起始信號s→發(fā)送器件地址(末位為0,寫操作)→發(fā)送子地址→發(fā)出終止信號P;再發(fā)送讀取命令:發(fā)出起始信號s→發(fā)送器件地址(末位為1,讀操作)一接收I2c器件送出的1個字節(jié)數(shù)據(jù)一發(fā)出應(yīng)答信號ACK→重復接收和應(yīng)答信號直至讀取完所要讀取的字節(jié)→發(fā)出終止信號P。

  讀取完所要讀取的字節(jié)后,可以在讀取最后一個字節(jié)的第9個SCL時鐘時將sDA置高電平(相當于第九位為1,稱為反態(tài)應(yīng)答位),等于明確告知I2c器件本次讀取已經(jīng)結(jié)束。

  字節(jié)寫先發(fā)送子地址再發(fā)送要寫入的數(shù)據(jù):發(fā)出起始信號s→發(fā)送器件地址(末位為O,寫操作)→發(fā)送子地址→發(fā)送要寫入的數(shù)據(jù)→發(fā)出終止信號P。

  頁寫先發(fā)送起始子地址再連續(xù)發(fā)送要寫入的數(shù)據(jù):發(fā)出起始信號S→發(fā)送器件地址(末位為0,寫操作)→發(fā)送起始子地址→發(fā)送要寫入第一個的數(shù)據(jù)→重復發(fā)送直至發(fā)送完所要連續(xù)寫入的字節(jié)(不同器件可連續(xù)寫入字節(jié)數(shù)有不同的限制)→發(fā)出終止信號P。

  要寫入的字節(jié)超過器件可連續(xù)寫入字節(jié)數(shù)時,應(yīng)通過循環(huán)調(diào)用頁寫過程,逐批將要連續(xù)寫入的字節(jié)寫完。

  3.MCS-51模擬I2C接口

  理解了I2C傳輸協(xié)議標準,我們就可以使用Mcs一51單片機的兩根口線與I2c器件的SDA和scL引腳連接,用軟件模擬I2C傳輸協(xié)議對I2c器件進行讀寫操作了。需要注意的是,I2C器件在Mcs-51系統(tǒng)中只能算比較快的設(shè)備,標準的傳送速率為最高不大于100kbps,SCL低電平時段應(yīng)保持4.7μs以上,高電平時段應(yīng)保持4.0μs以上。因此,程序中應(yīng)加入延時子程序,以滿足I2C器件的反應(yīng)速度。

  為了讀者能更方便地開發(fā)和使用I2C,在本刊的網(wǎng)站(W3NW.eleworld.eom)上給出了Mcs-5l模擬I2c接口的標準完整程序,并編寫了一個配套的vB程序。通過RS232串口連接到MCS-5l串口,可以方便地在計算機上讀寫任何I2C器件。

以89C2051和24Cxx連接為例,如上圖方式連接,P1.7為scL線,P1.6為sDA線。89C2051的串口通過MAX232與計算機RS232串口三線連接。將模擬I2c接口的I2c 51.a(chǎn)sm文件編譯后,燒錄

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉