色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

 

輕松學ARM系列之I2C總線

作者:熊老師,華清遠見教育科技集團講師。

今天我們來一起學習,arm裸機中對I2C設備學習。包括GPIO,IIC控制器學習。

一、總體架構圖

二、I2C操作的一般步驟

2.1  查看s5pv210開發板的I2C相關的硬件原理圖

開發板上IIC實際連接電路,AT24C02為EEPROM,大小為2k位,256字節

核心板對應的原理圖

2.2  設置GPIO寄存器為I2C功能

配置GPD1CON[0] 和 GPD1CON[1] 為I2C 功能:

GPDCON.GPD1CON = (GPDCON.GPD1CON & (~0xff))| 0x22

2.3 查看I2C控制器相應的章節,對相關的寄存器進行配置

選擇設備的發送方式,主發射,從接收模式(這個是由從設備自動決定的)

向寄存器中寫入。每個IIC獨有的設備地址

數據移位寄存器

2.3.1 查看AT24C02相關的芯片手冊,查看操作的順序

操作的設備的地址為0xa0 , 對應的是寫操作, 0xa1 對應的是讀操作

2.3.2 對AT24C02按照字節的寫操作

對EEPROM 按字節寫的操作順序,先由主設備發送一個start起始信號,發一個字節的設備地址(7 + 1 位 ,寫),第9位為ACK應答位,發一字節的地址(表示要往哪個地址空間寫數據,一共256個字節地址),接著傳送一字節的數據。發一個ACK信號,發送停止信號stop。多存放256字節的數據

對s5pv210上相關的IIC控制器,進行相應的配置。

2.3.3  對于主設備發送,從設備接收。寫操作,往EEPROM中寫數據

① 寫設備地址
        I2C0.I2CCON0 = 0xe0 ,512分頻,使能ACK信號,使能中斷
        I2C0.I2CDS0 = 0xa0;//寫從機設備地址
        I2C0.I2CSTAT0 = 0xf0;主設備發送,產生start信號
        while (!((I2C0.I2CCON0)& (1 <<4)));如果發送完畢第5位,中斷標志位 值為1,表示寫設備地址成功。否側,相當于具有延時的功能。

②寫數據的地址,表示要對那一個字節的地址,要對他進行存放數據
        I2C0.I2CCON0 = I2C0.I2CCON0 &( ~(0x1 << 4));表示清除pend狀態位,復位操 作寫;
        I2C0.I2CDS0 = addr; 從機的地址,0 ~ 255 之間,一個256個字節,因為該芯 片的大小就是2k位,256個字節
        while (!((I2C0.I2CCON0)& (1 <<4)));如果發送完畢第5位,中斷標志位 值為1,表示寫數據地址成功。否側,相當于具有延時的功能。

③ 在相應的地址上寫上相應的數據
        I2C0.I2CCON0 = I2C0.I2CCON0 &( ~(0x1 << 4));表示清除pend狀態位,復位 操作寫;
        I2C0.I2CDS = data;
        while (!((I2C0.I2CCON0)& (1 << 4)));如果發送完畢第5位,中斷標志位 值為1,表示寫數據地址成功。否側,相當于具有延時的功能。

④發送一個stop信號
        I2C0.I2CSTAT0 &= ~(1<<5); /*STOP signal generation,free bus */
        I2C0.I2CCON0 &= ~(1<<4); /*clean interrup pending bit */

⑤ 至此一次寫操作順利完成,按字節寫數據的

2.3.4 對于讀數據,主機發送模式,后接收模式,選取的是隨機讀的相應地址中的數據的方式

① 寫設備地址,開啟start啟動信號
        I2C0.I2CCON0 = 0xe0 ,512分頻,使能ACK信號,使能中斷
        I2C0.I2CDS0 = 0xa0;//寫從機設備地址
        I2C0.I2CSTAT0 = 0xf0;主設備發送,產生start信號
        while (!((I2C0.I2CCON0)& (1 <<4)));如果發送完畢第5位,中斷標志位 值為1,表示寫設備地址成功。否側,相當于具有延時的功能。

② 寫存放的數據的地址
        I2C0.I2CCON0 = I2C0.I2CCON0 &( ~(0x1 <<4));表示清除pend狀態位,復位操 作寫;
        I2C0.I2CDS0 = addr & 0xff; 從機的地址,0 ~ 255 之間,一個256個字節,因 為該芯片的大小就是2k位,256個字節
        while (!((I2C0.I2CCON0)& (1 <<4)));如果發送完畢第5位,中斷標志位 值為1,表示寫數據地址成功。否側,相當于具有延時的功能。

③ 讀設備地址,清pend寄存器,發送一個start信號, 此時主機接收
        I2C0.I2CCON0 = I2C0.I2CCON0 &( ~(0x1 <<4));表示清除pend狀態位,復位操作寫;
        I2C0.I2CDS0 = 0xa0 | 0x01; //寫設備地址,讀操作
        I2C0.I2CSTAT = 0xb0; //1011 0000
        while(!(I2C0.I2CCON0&(1<<4))); /*The end of the waiting to be sent */

④讀取數據,讀數據時不產生ACK信號
        I2C0.I2CCON0 &= ~((1 << 7)| (1 << 4)); 清中斷標志位,關閉ACK應答信號
        while (!(I2C0.I2CCON0 & (1 <<4))); 每次操作成功都會產生一個中斷標志位
        data = I2C.I2CDS0;

⑤ 發送stop信號
        I2C0.I2CSTAT0 &= ~(1<<5); /*STOP signal generation,free bus */
        I2C0.I2CCON0 &= ~(1<<4); /*clean interrup pending bit */

⑥ 至此完成了一次 隨機的讀操作

主站蜘蛛池模板: 国产又粗又大又黄AA片爱豆 | 日本免费无遮挡吸乳视频网站 | 91热播| 天天av天天翘天天综合网色鬼 | 国产色欲AV一区二区三区 | 国产精品WWW夜色视频 | 日本一区二区三区在线观看视频 | 日日摸日日碰夜夜爽AV | 国产精品自产拍在线观看 | 在线观看亚洲AV每日更新无码 | 777米奇影视第四色 欧美无砖专区一中文字 | 亚洲AV高清在线观看一区二区 | 中文字幕不卡二区 | 国产成人AV片在线观看 | 人妻av资源先锋影音av资源 | 日韩系成人影片成首选 | 亚洲首页一区任你躁XXXXX | 给我播放片在线 | 免费看奶头视频的网站 | 亚洲AV永久无无码精品一区二区三区 | 九九久久自然熟的香蕉图片 | 国产麻豆视频在线观看 | 久草综合在线视频 | 无码三级香港经典三级在线视频 | 国产短视频在线观看 | 亚洲av狠狠爱一区二区三区 | 国产黄色片一级三级 | 亚洲精品国产精品成人不卡 | av中出| 少妇激情艳情综合小视频 | 亚洲第一网站男人都懂 | 男人a天堂2814 | 国内精品伊人久久久久影院麻豆 | 免费观看欧美猛交视频黑人 | 国产在线视频www色 幻女bbwxxxx | 亚洲人成色4444在线观看 | 欧美毛片免费看 | 被仇人调教成禁脔hhh虐 | 麻豆精品免费在线观看 | 夜夜高潮夜夜爽精品欧美做爰 | 中文亏日产幕无线码一区 |