如果我們直接控制RA6M5的兩個(gè)GPIO引腳,分別用作SCL及SDA,按照上述信號(hào)的時(shí)序要求,直接像控制LED燈那樣控制引腳的輸出(若是接收數(shù)據(jù)時(shí)則讀取SDA電平),就可以實(shí)現(xiàn)I2C通訊。同樣,假如我們按照USART的要求去控制引腳,也能實(shí)現(xiàn)USART通訊。所以只要遵守協(xié)議,就是標(biāo)準(zhǔn)的通訊,不管您如何實(shí)現(xiàn)它,不管是ST生產(chǎn)的控制器還是ATMEL生產(chǎn)的存儲(chǔ)器,都能按通訊標(biāo)準(zhǔn)交互。
由于直接控制GPIO引腳電平產(chǎn)生通訊時(shí)序時(shí),需要由CPU控制每個(gè)時(shí)刻的引腳狀態(tài),所以稱之為“軟件模擬協(xié)議”方式。
相對(duì)地,還有“硬件協(xié)議”方式,RA6M5的I2C片上外設(shè)專門負(fù)責(zé)實(shí)現(xiàn)I2C通訊協(xié)議,只要配置好該外設(shè),它就會(huì)自動(dòng)根據(jù)協(xié)議要求產(chǎn)生通訊信號(hào),收發(fā)數(shù)據(jù)并緩存起來,CPU只要檢測(cè)該外設(shè)的狀態(tài)和訪問數(shù)據(jù)寄存器,就能完成數(shù)據(jù)收發(fā)。這種由硬件外設(shè)處理I2C協(xié)議的方式減輕了CPU的工作,且使軟件設(shè)計(jì)更加簡(jiǎn)單。
21.2.1.瑞薩RA6M5的I2C外設(shè)簡(jiǎn)介
瑞薩RA6M5的I2C外設(shè)可用作通訊的主機(jī)及從機(jī),支持100Kbit/s和400Kbit/s和1Mbit/s的速率,支持7位、10位設(shè)備地址,支持DMA數(shù)據(jù)傳輸,并具有數(shù)據(jù)校驗(yàn)功能。它的I2C外設(shè)還支持SMBus2.0協(xié)議,SMBus協(xié)議與I2C類似,主要應(yīng)用于筆記本電腦的電池管理中。
表1:瑞薩RA6M5的IIC支持頻率

21.2.1.1.通訊引腳
I2C的所有硬件架構(gòu)都是根據(jù)圖中左側(cè)SCL線和SDA線展開的(其中的SMBA線用于SMBUS的警告信號(hào),I2C通訊沒有使用)。RA6M5芯片有多個(gè)I2C外設(shè),它們的I2C通訊信號(hào)引出到不同的GPIO引腳上,使用時(shí)必須配置到這些指定的引腳,見表22?1。
關(guān)于GPIO引腳的復(fù)用功能,可查閱《RA6M5GroupUser_sManual》,以它為準(zhǔn)。
表22?1:RA6M5的I2C引腳(整理自《RA6M5GroupUser_sManual》)

21.2.2.瑞薩RA6M5的I2C功能框圖


注:
我們這里主要介紹的是瑞薩的fsp庫的使用,所以在這里寄存器我們?cè)谶@里做一些簡(jiǎn)單的介紹。
21.2.3. 時(shí)鐘控制邏輯
下面將介紹時(shí)鐘的控制流程
21.2.3.1. IIC起始信號(hào)與重啟信號(hào)
當(dāng)ICCR2中的RS位被設(shè)置為1時(shí),IIC會(huì)發(fā)出一個(gè)重啟條件請(qǐng)求。當(dāng)ICCR2的BBSY標(biāo)志位為1(總線繁忙狀態(tài)),ICCR2的MST位為1(主模式)時(shí)IIC發(fā)出重啟條件。 發(fā)出重啟條件:
釋放SDAn線路。
確保ICBRL中設(shè)置的SCLn線路的低電平周期已過。
釋放SCLn線(低電平到高電平)。
在SCLn線上檢測(cè)高電平,并確保ICBRL中設(shè)置的時(shí)間和重啟條件設(shè)置時(shí)間經(jīng)過。
將SDAn線拉低(從高電平到低電平)。
確保ICBRH中設(shè)置的時(shí)間和重啟條件保持時(shí)間。
驅(qū)動(dòng)SCLn線低電平(高電平到低電平)。
檢測(cè)SCLn線上的一個(gè)低水平,確保ICBRL中設(shè)置的SCLn線的低水平周期已經(jīng)過去

21.2.3.2. IIC循環(huán)發(fā)送
初始化IIC。
讀取ICCR2中的BBSY標(biāo)志,檢查總線是否打開,然后設(shè)置ICCR2中的ST位為1(啟動(dòng)條件發(fā)出請(qǐng)求)。收到請(qǐng)求后,IIC發(fā)出啟動(dòng)條件。與此同時(shí),BBSY位和START為被設(shè)置為1,ST位自動(dòng)設(shè)置為0。如果檢測(cè)到啟動(dòng)條件,并且SDA輸出狀態(tài)的內(nèi)部電平和SDAn線路上的電平在ST位為1時(shí)匹配,IIC就會(huì)識(shí)別出,由于ST位已經(jīng)成功完成了請(qǐng)求,啟動(dòng)條件已經(jīng)成功發(fā)出。ICCR2的MST和TRS位自動(dòng)設(shè)置為1,IIC處于主發(fā)送模式。當(dāng)TRS位設(shè)置為1時(shí),ICSR2中的TDRE標(biāo)志也會(huì)自動(dòng)設(shè)置為1。
檢查ICSR2中的TDRE標(biāo)志位是否為1,然后將傳輸值(從地址和R/W#位)寫入ICDRT。傳輸數(shù)據(jù)寫入ICDRT后,TDRE標(biāo)志位自動(dòng)設(shè)置為0,數(shù)據(jù)從ICDRT傳輸?shù)絀CDRS后,TDRE標(biāo)志位再次設(shè)置為1。字節(jié)后包含從地址和當(dāng)發(fā)送了R/W#位時(shí),TRS位的值會(huì)根據(jù)發(fā)送的R/W#位的值自動(dòng)更新,選擇主發(fā)送或主接收模式。如果R/W#為0,則IIC繼續(xù)主傳輸模式。如果此時(shí)ICSR2.NACKF標(biāo)志位為1,表示從設(shè)備沒有識(shí)別到該地址,或者通信出現(xiàn)錯(cuò)誤,并向ICCR2.SP位寫入1發(fā)出停止條件。如果要傳輸10位地址格式的數(shù)據(jù),首先將11110b和從地址的高兩位和W寫入ICDRT作為第一個(gè)地址傳輸。然后將從地址低8位寫入ICDRT作為第二個(gè)地址傳輸。
確認(rèn)ICSR2的TDRE標(biāo)志位為1后,將傳輸數(shù)據(jù)寫入ICDRT寄存器。IIC自動(dòng)保持SCLn線路處于低位,直到傳輸數(shù)據(jù)就緒,發(fā)出重啟條件或停止條件。
當(dāng)所有要傳輸?shù)臄?shù)據(jù)字節(jié)寫入ICDRT寄存器后,等待ICSR2中的TEND標(biāo)志位的值返回1。確認(rèn)ICSR2的START標(biāo)志位為1后,將ICSR2的START標(biāo)志位設(shè)置為0。
設(shè)置ICCR2中的RS位為1(重啟條件問題請(qǐng)求)。在接收到請(qǐng)求時(shí),IIC發(fā)出一個(gè)重啟條件。
檢查ICSR2中的START標(biāo)志位為1后,將傳輸值(從地址和R/W#位)寫入ICDRT。

21.3. EEPROM簡(jiǎn)介
EEPROM是一種掉電后數(shù)據(jù)不丟失的存儲(chǔ)器,常用來存儲(chǔ)一些配置信息,以便系統(tǒng)重新上電的時(shí)候加載。 EEPROM芯片最常用的通訊方式就是I^2^C協(xié)議,本小節(jié)以EEPROM的讀寫實(shí)驗(yàn)為例子給大家講解RA6M5的I^2^C使用方法。 實(shí)驗(yàn)中RA6M5的I2C外設(shè)采用主機(jī)模式,分別用作主發(fā)送器和主接收器,通過查詢事件的方式來確保正常通訊。
本實(shí)驗(yàn)板中的EEPROM芯片(型號(hào):AT24C02)的SCL及SDA引腳連接到了瑞薩RA6M5對(duì)應(yīng)的I2C引腳中,結(jié)合上拉電阻,構(gòu)成了I2C通訊總線,它們通過I2C總線交互。EEPROM芯片的設(shè)備地址一共有7位,其中高4位固定為:1010 b,低3位則由A0/A1/A2信號(hào)線的電平?jīng)Q定,見圖22_12,圖中的R/W是讀寫方向位,與地址無關(guān)。

圖 22?12 EEPROM設(shè)備地址(摘自《AT24C02》規(guī)格書)
按照我們此處的連接,A0/A1/A2均為0,所以EEPROM的7位設(shè)備地址是:1010 000b ,即0x50。由于I2C通訊時(shí)常常是地址跟讀寫方向連在一起構(gòu)成一個(gè)8位數(shù),且當(dāng)R/W位為0時(shí),表示寫方向,所以加上7位地址,其值為“0xA0”,常稱該值為I2C設(shè)備的“寫地址”;當(dāng)R/W位為1時(shí),表示讀方向,加上7位地址,其值為“0xA1”,常稱該值為“讀地址”。
EEPROM芯片中還有一個(gè)WP引腳,具有寫保護(hù)功能,當(dāng)該引腳電平為高時(shí),禁止寫入數(shù)據(jù),當(dāng)引腳為低電平時(shí),可寫入數(shù)據(jù),我們直接接地,不使用寫保護(hù)功能。
關(guān)于EEPROM的更多信息,可參考其數(shù)據(jù)手冊(cè)《AT24C02》來了解。若您使用的實(shí)驗(yàn)板EEPROM的型號(hào)、設(shè)備地址或控制引腳不一樣,只需根據(jù)我們的工程修改即可,程序的控制原理相同。
-
瑞薩
+關(guān)注
關(guān)注
37文章
22481瀏覽量
90840 -
I2C
+關(guān)注
關(guān)注
28文章
1556瀏覽量
131211 -
引腳
+關(guān)注
關(guān)注
16文章
2111瀏覽量
55680 -
GPIO
+關(guān)注
關(guān)注
16文章
1328瀏覽量
56213
原文標(biāo)題:I2C的數(shù)據(jù)、地址傳輸和響應(yīng)及瑞薩RA6M5的I2C特性及架構(gòu)——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(65)
文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于瑞薩RA6M5/RA2L1和百度語音云的語音識(shí)別控制與無線通信控制系統(tǒng)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之I2C讀寫EEPROM實(shí)驗(yàn)
瑞薩e2studio(1)----瑞薩芯片之搭建FSP環(huán)境
瑞薩RA6M5中的QSPI可以用作普通SPI使用嗎?
【瑞薩RA6E2地奇星開發(fā)板試用】開發(fā)板介紹及環(huán)境搭建
【瑞薩RA4系列開發(fā)板體驗(yàn)】體驗(yàn)過程
基于瑞薩RA4M2的表盤設(shè)計(jì)
【瑞薩RA MCU創(chuàng)意氛圍賽】3. 硬件I2C驅(qū)動(dòng)OLED顯示漢字
【瑞薩RAMCU創(chuàng)意氛圍賽】基于RA6M5的電子墨水屏微信信息站
瑞薩電子發(fā)布了一款RA6M5群微控制器MCU的相關(guān)特性詳解
瑞薩RA系列MCU選型指南
【視頻教程】瑞薩RA單片機(jī)FSP開發(fā)(3)FSP架構(gòu)-解釋Blinky架構(gòu)[上]
瑞薩RA6系列芯片外擴(kuò)SRAM方法
分享瑞薩RA MCU創(chuàng)意氛圍賽的作品—高壓電網(wǎng)電流監(jiān)測(cè)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之瑞薩RA6M5的I2C特性及架構(gòu)
評(píng)論