色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

IIC通信的基礎知識

天才小貍花 ? 來源:Sigle_chip ? 作者:Sigle_chip ? 2022-09-27 11:51 ? 次閱讀

[]()# IIC概述

IIC:兩線式串行總線,它是由__數據線SDA__和__時鐘線__SCL構成的串行總線,可發送和接收數據,其使用IO使用較少,

CPU與被控IC之間、IC與IC之間進行雙向傳送,高速IIC總線一般可達400kbs以上。

時鐘線SCL:在通信過程起到控制作用。

數據線SDA:用來一位一位的傳送數據。

IIC分為軟件IIC和硬件IIC

軟件IIC:軟件IIC通信指的是用單片機的兩個I/O端口模擬出來的IIC,用軟件控制管腳狀態以模擬I2C通信波形,軟件模擬寄存器的工作方式。

硬件IIC:一塊硬件電路,硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的,硬件(固件)I2C是直接調用內部寄存器進行配置。

補充

1.硬件I2C的效率要遠高于軟件的,而軟件I2C由于不受管腳限制,接口比較靈活。

2.IIC是半雙工通信方式

[]()# IIC通信協議

IIC通信過程由開始、結束、發送、響應、接收五個部分構成。

1、(在發送、接收數據的時候)當SCL為高電平時,SDA線不允許變化;當SCL線為低電平時,SDA線可以任意0、1變化。

2、(在任意時候)只有當SCL為高電平時,IIC電路才對SDA線上的電平(0或者1)進行記錄,當SCL線為低電平時,無論SDA是高還是低,IIC電路都不對SDA進行采樣。

[]()### 空閑狀態

在介紹上面五個部分前,我們首先說說空閑狀態,什么是空閑狀態,就是__沒有通信時的狀態__( 初始狀態

I2C總線的SDA和SCL兩條信號同時處于高電平時,規定為總線的空閑狀態。此時各個器件的輸出級場效管均處在截止狀態,即釋放總線,由兩條信號線各自的上拉電阻把電平拉高。

[]()### 開始信號與停止信號

開始信號:當SCL為高期間,SDA由高到低的跳變;啟動信號是一種電平跳變時序信號,而不是一個電平。

停止信號:當SCL為高期間,SDA由低到高的跳變;停止信號也是一種電平跳變時序信號,而不是一個電平信號。

1664250641991qfvkns4ev8

開始信號程序

fig:

//產生IIC起始信號

//1.設置SDA輸出

//2.先拉高SDA,再拉高SCL,空閑狀態

//3.拉低SDA

//4.準備接收數據

void IIC_Start(void)

{

SDA_OUT(); //sda線輸出

IIC_SDA=1;

IIC_SCL=1;

delay_us(4);

IIC_SDA=0;//START:when CLK is high,DATA change form high to low

delay_us(4);

IIC_SCL=0;//鉗住I2C總線,準備發送或接收數據

}

停止信號程序

//產生IIC停止信號

//1.設置SDA輸出

//2.先拉低SDA,再拉低SCL

//3.拉高SCL

//4.拉高SDA

//5.停止接收數據

void IIC_Stop(void)

{

SDA_OUT();//sda線輸出

IIC_SCL=0;

IIC_SDA=0;//STOP:when CLK is high DATA change form low to high

 delay_us(4);

IIC_SCL=1; 

IIC_SDA=1;//發送I2C總線結束信號

delay_us(4);

}

[]()### 應答信號

發送器每發送一個字節,就在時鐘脈沖9期間釋放數據先,由接收器反饋一個應答信號。應答信號為低電平時,規定為有效應答位(ACK簡稱應答位),表示接收器已經成功接收了該字節;應答信號為高電平時,規定為非應答位(NACK),一般表示接收器接收該字節沒有成功。

對于反饋有效應答位ACK的要求是,接收器在第9個時鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時鐘的高電平期間位穩定的低電平。如果接收器是主控器,則在它收到最后一個字節后,發送一個NACK信號,以通知被控發送器結束數據發送,并釋放SDA線,以便主控接收器發送一個停止信號P

每當主機向從機發送完一個字節的數據,主機總是需要等待從機給出一個應答信號,以確認從機是否成功接收到了數據,從機應答主機所需要的時鐘仍是主機提供的,應答出現在每一次主機完成8個數據位傳輸后緊跟著的時鐘周期,低電平0表示應答,1表示非應答:

1664250642744w7p9acoced

應答信號程序

//產生ACK應答

//這里就很清楚了,產生應答:SCL在SDA一直為低電平期間完成低高電平轉換

void IIC_Ack(void)

{

IIC_SCL=0;

SDA_OUT();

IIC_SDA=0;

delay_us(2);

IIC_SCL=1;

delay_us(2);

IIC_SCL=0;

}

//不產生ACK應答,購買正品元器件,上唯樣商城

//這里就很清楚了,不產生應答:SCL在SDA一直為高電平期間完成低高電平轉換

void IIC_NAck(void)

{

IIC_SCL=0;

SDA_OUT();

IIC_SDA=1;

delay_us(2);

IIC_SCL=1;

delay_us(2);

IIC_SCL=0;

}

[]()### 發送數據

在I2C總線上傳送的每位數據都有一個時鐘脈沖相對應(或同步控制),即在SCL串行時鐘的配合下,SDA逐位地串行傳送每一位數據。數據位的傳輸是邊沿觸發。

//IIC發送一個字節

//返回從機有無應答

//1,有應答

//0,無應答

//IIC_SCL=0;

//在SCL上升沿時準備好數據,進行傳送數據時,拉高拉低SDA,因為傳輸一個字節,一個SCL脈沖里傳輸一個位。

//數據傳輸過程中,數據傳輸保持穩定(在SCL高電平期間,SDA一直保持穩定,沒有跳變)

//只有當SCL被拉低后,SDA才能被改變

//總結:在SCL為高電平期間,發送數據,發送8次數據,數據為1,SDA被拉高,數據為0,SDA被拉低。

//傳輸期間保持傳輸穩定,所以數據線僅可以在時鐘SCL為低電平時改變。

void IIC_Send_Byte(u8 txd)

{

u8 t;

SDA_OUT();

IIC_SCL=0;//拉低時鐘開始數據傳輸

for(t=0;t<8;t++)

{

//IIC_SDA=(txd&0x80)>>7;

//獲取數據的最高位,然后左移7位

//如果某位為1,則SDA為1,否則相反

if((txd&0x80)>>7)

IIC_SDA=1;

else

IIC_SDA=0;

txd<<=1;

delay_us(2); //對TEA5767這三個延時都是必須的

IIC_SCL=1;

delay_us(2);

IIC_SCL=0;

delay_us(2);

}

}

單片機發送完一個字節后面必須跟一個等外應答函數:

思路:先讓SDA=1,再判斷在一定時間內SDA是否變為0,從而識別出外設有沒有發送應答信號。

//等待應答信號到來

//返回值:1,接收應答失敗

// 0,接收應答成功

//1.設置SDA為輸入

//2.拉高SDA

//3.拉高SCL

//4.等待接收器返回應答信號,如果數據線SDA一直為高,就一直等待,并返回1(無效應答),如果數據線SDA為低,返回0(有效應答)

u8 IIC_Wait_Ack(void)

{

u8 ucErrTime=0;

SDA_IN(); //SDA設置為輸入

IIC_SDA=1;delay_us(1);

IIC_SCL=1;delay_us(1);

while(READ_SDA)

{

ucErrTime++;

if(ucErrTime>250)

{

IIC_Stop();

return 1;

}

}

IIC_SCL=0;//時鐘輸出0

return 0;

}

[]()### 接收數據

發送數據是一位一位發送,接收數據也是一位一位接收進來,最后返回應答信號:

//讀1個字節,ack=1時,發送ACK,ack=0,發送nACK

//先拉低SCL,延時后拉高

//讀取數據

//是否發送應答

u8 IIC_Read_Byte(unsigned char ack)

{

unsigned char i,receive=0;

SDA_IN();//SDA設置為輸入

for(i=0;i<8;i++ )

{

    IIC_SCL=0; 

    delay_us(2);

    IIC_SCL=1;

    receive<<=1;

    if(READ_SDA)receive++;   

    delay_us(1); 

}                     

if (!ack)

    IIC_NAck();//發送nACK

else

    IIC_Ack(); //發送ACK   

return receive;

}

[]()

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6049

    文章

    44680

    瀏覽量

    641014
  • 總線
    +關注

    關注

    10

    文章

    2913

    瀏覽量

    88676
  • IIC
    IIC
    +關注

    關注

    11

    文章

    303

    瀏覽量

    38703
收藏 0人收藏

    評論

    相關推薦

    通信技術基礎知識介紹

    通信技術基礎知識介紹 電信網(telecommunication network)是構成多個用戶相互通信的多個電信系統互連的通信體系,是人類實現遠距離
    發表于 02-23 16:25 ?1.5w次閱讀

    移動通信基站基礎知識 PDF文檔

    移動通信基站基礎知識 PDF文檔下載附件:
    發表于 02-18 09:29

    電子通信技術基礎知識

    電子通信技術基礎知識
    發表于 08-20 09:58

    移動通信基礎知識

    本帖最后由 南海孤雁 于 2012-12-7 12:43 編輯 移動通信基礎知識視頻監控系統發展。
    發表于 12-07 12:35

    無線通信基礎知識介紹

    無線通信基礎知識
    發表于 02-04 06:57

    串行通信基礎知識與UART驅動構件使用方法

    慕課蘇州大學.嵌入式開發及應用.第二章.入門與軟件框架.串行通信基礎知識與UART驅動構件使用方法0 目錄2 入門與軟件框架2.1 串行通信基礎知識與UART驅動構件使用方法2.1.1
    發表于 12-20 06:21

    STM32 IIC和USART接口的基礎知識點匯總,絕對實用

    STM32 IIC和USART接口的基礎知識點匯總,絕對實用
    發表于 02-22 08:00

    IIC通信原理及分析IIC的真實波形

    IIC通信原理。1 IIC基礎知識首先復習一下IIC基礎知識,這部分看不懂的請先帶著疑問,然后
    發表于 02-24 06:01

    通信基礎知識教程

    通信基礎知識 1、電信基礎知識2、通信電源技術3、配線設備結構、原理與防護4、防雷基礎知識5、EMC
    發表于 03-04 16:48 ?33次下載

    電子通信技術基礎知識

    通信技術基礎知識電信網(telecommunication network)是構成多個用戶相互通信的多個電信系統互連的通信體系,是人類實現遠距離通信
    發表于 07-19 17:31 ?46次下載

    單片機基礎知識學習筆記

    單片機基礎知識學習筆記有關總線1.IIC總線2.SPI總線
    發表于 11-14 16:51 ?26次下載
    單片機<b class='flag-5'>基礎知識</b>學習筆記

    IIC實測波形入手,搞懂IIC通信

    IIC通信原理。1 IIC基礎知識首先復習一下IIC基礎知識,這部分看不懂的請先帶著疑問,然后
    發表于 01-12 17:35 ?9次下載
    從<b class='flag-5'>IIC</b>實測波形入手,搞懂<b class='flag-5'>IIC</b><b class='flag-5'>通信</b>

    [轉]從IIC實測波形入手,搞懂IIC通信

    IIC通信原理。1 IIC基礎知識首先復習一下IIC基礎知識,這部分看不懂的請先帶著疑問,然后
    發表于 01-12 17:59 ?17次下載
    [轉]從<b class='flag-5'>IIC</b>實測波形入手,搞懂<b class='flag-5'>IIC</b><b class='flag-5'>通信</b>

    一文深入理解IIC通信基礎知識

    玩單片機的朋友都知道IIC通信這個工具,但好多人只是會用,內部的原理不求甚解,或是想要了解其原理,但卻對抽象的時序描述一頭霧水。本文將從實測的IIC波形入手,帶你看到真實的IIC樣子,
    的頭像 發表于 06-08 09:06 ?2.2w次閱讀
    一文深入理解<b class='flag-5'>IIC</b><b class='flag-5'>通信</b><b class='flag-5'>基礎知識</b>

    光纖通信技術基礎知識

    電子發燒友網站提供《光纖通信技術基礎知識.ppt》資料免費下載
    發表于 03-06 15:53 ?0次下載
    主站蜘蛛池模板: 99视频精品国产免费观看 | 无限资源在线完整高清观看1 | 视频在线免费观看 | 国产成人久视频免费 | 国产99r视频精品免费观看 | 快播官方网站 | 国产精品久久vr专区 | 小小水蜜桃视频高清在线播放 | 国产亚洲精品网站在线视频 | 欧美阿v在线免播播放 | 国产偷国产偷亚洲高清SWAG | 无人影院在线播放视频 | 无限资源网免费看 | 亚洲AV无码乱码在线观看浪潮 | 国产成人自拍视频在线观看 | 中文字幕 日韩 无码 在线 | 亚洲欧洲精品成人久久曰影片 | 色妞色视频一区二区三区四区 | 99热在线视频这里只精品 | 一区二区三区内射美女毛片 | 亚洲精品久久久无码一区二区 | 免费播放美女一级毛片 | 国产精品igao视频网网址 | 亚洲欧美日韩在线码不卡 | 嫩草在线播放 | 成人国产精品日本在线 | 国内精品不卡一区二区三区 | 岛国在线永久免费视频 | 亚洲精品美女久久久久99 | 久久精品热播在线看 | 久久精品99国产精品日本 | 精品国产乱码久久久久久上海公司 | 亚洲 欧美 制服 视频二区 | 69国产精品人妻无码免费 | 破苞流血哭泣 magnet | 内射无码AV-区二区在线观看 | 国产精品久久人妻拍拍水牛影视 | 成人动漫bt种子 | 久久精品男人影院 | 攻把受做哭边走边肉楼梯PLAY | 舔1V1高H糙汉 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品