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Ⅴ| 538国产视频| 在线播放精品一区二区啪视频| 在线观看网站国产| 国产亚洲精久久久久久久91| 一区二区三区四区精品视频 | 91福利在线看| 亚洲第一视频网站| 亚洲欧洲日韩综合色天使| 日韩无码真实干出血视频| 成人午夜久久| 国产欧美日韩18| 免费高清毛片| 国产精品永久久久久| 国产日韩欧美一区二区三区在线| 婷婷午夜天| 99精品影院| 国产精品第一区在线观看| 日韩无码黄色| 国产69精品久久久久孕妇大杂乱| 成人午夜视频在线| 成人精品免费视频| 亚洲女同欧美在线| 国产精品区视频中文字幕| 午夜a视频| 中文字幕第1页在线播| 色播五月婷婷| 色网站免费在线观看| 亚洲国产一成久久精品国产成人综合| 四虎亚洲国产成人久久精品| 国产二级毛片| 一个色综合久久| 五月天在线网站| 粉嫩国产白浆在线观看| 77777亚洲午夜久久多人| 成人自拍视频在线观看| 欧美a在线看| 日韩欧美一区在线观看| 欧美性久久久久| 麻豆精品视频在线原创| 在线观看国产精美视频| 久久黄色影院| 亚洲人人视频| 3D动漫精品啪啪一区二区下载| 毛片免费在线视频| 黄色网页在线播放| 欧美特级AAAAAA视频免费观看| 免费一级毛片完整版在线看| 国产美女在线免费观看| 伊人精品成人久久综合| 国产91视频观看| 99热最新网址| 久久精品人人做人人爽97| 97超级碰碰碰碰精品| 曰AV在线无码| 欧洲在线免费视频| 在线免费无码视频| 久久精品国产在热久久2019| www.国产福利| 亚洲午夜福利精品无码不卡| 国产精品亚洲一区二区三区z| 97影院午夜在线观看视频| 精品国产免费观看一区| 国产玖玖玖精品视频| 97在线观看视频免费| 国产性生大片免费观看性欧美| 伊人激情综合网| 黄色网址免费在线| 国产视频只有无码精品| 91外围女在线观看| 青青久视频| 在线不卡免费视频| 国产精品思思热在线| 亚洲无码精彩视频在线观看| 毛片卡一卡二| 国产高清在线观看| 综合色88| 91免费精品国偷自产在线在线| 亚洲国产系列| 日韩国产高清无码| 欧美中出一区二区| 欧美一区精品|