0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

采用LPC1752讀取AT24C08C的原理與實現(xiàn)方案

454398 ? 來源:一板網(wǎng) ? 作者:admin ? 2020-10-24 11:18 ? 次閱讀

1 簡介

1.1 LPC1752及AT24C08C簡介

LPC1752是NXP推出的一款Cortex M3的芯片,最高運行頻率可達80M

AT24C08C是Atmel的一款I2C串行EEPROM,代替原來的型號AT24C08B及AT24C08A。共有8K(1024*8 bit)、1024字節(jié)的存儲單元??蛇M行1百萬次的寫操作,數(shù)據(jù)可保存100年。

1.2 連接方式

AT24C08C是通過LPC1752的I2C2連接的,連接圖如下:

圖1 LPC1752連接圖

1.3 AT24C08C設(shè)備地址

The 8K EEPROM only uses the A2 device address bit with the next twobits (P1, P0) being for memory page addressing. The A2 bit must compare to itscorresponding hardwired input pin. The A1 and A0 pins are not connected.

根據(jù)連接圖可得知AT24C08的地址為0xA0。

圖2 AT24C08CDevice Address

1.4 I2C運行時鐘頻率

主機模式下必須通過對I2SCLH和I2SCLL寄存器進行設(shè)置來選擇合適的總線速率和占空比。I2SCLH定義SCL高電平所保持的PCLK_I2C周期數(shù),I2SCLL定義SCL低電平的PCLK_I2C周期數(shù)。位頻率由下面的公式得出(PCLK_I2C是外圍總線APB的頻率):

選用的I2SCLL和I2SCLH值必須確保得出的總線速率在I2C總線速率的范圍之內(nèi)。I2SCLL和I2SLH的值都必須大于或等于4。表1給出了根據(jù)PCLK_I2C頻率和I2SCLL和I2SCLH值計算出來的I2C總線速率的示例。

表1 I2C時鐘速率的實例

2 函數(shù)介紹

2.1 初始化函數(shù)i2c2_init

按照LPC1752用戶手冊(UM10360)中第三章的介紹進行初始化,步驟如下:

a)。 電源:在寄存器PCONP中置位PCI2C2。

b)。 時鐘:在寄存器PCLK_SEL1中選擇PCLK_I2C2。

c)。 引腳: 通過寄存器PINSEL0使能I2C2引腳。通過寄存器PINMODE來配置I2C2引腳模式。

d)。 時鐘頻率:向I2SCLH和I2SCLH寄存器加載頻率值來定義串行時鐘頻率(主機模式)。

e)。 中斷:在NVIC中置位I2C2_IRQn寄存器使能I2C2中斷。

f)。 向寄存器I2CONSET寫入0x40來置位I2EN位。

2.2 中斷函數(shù)I2C2_IRQHandler

通過讀取I2STAT寄存器的值判斷I2C總線上的狀態(tài),并進行下一步操作。

中斷函數(shù)只處理了主機接收模式與主機發(fā)送模式。

1)I2C進入主機進入發(fā)送起始條件時,串行中斷標志(SI)置位,狀態(tài)寄存器(I2STAT)中的狀態(tài)代碼為0x08。此時將從機地址和數(shù)據(jù)方向位(SLA+W)裝入I2DAT,同時復(fù)位I2CON的STA,STO和SI。

2.3 I2C總線進入開始狀態(tài)i2c2_start

可通過置位STA位進入主機發(fā)送模式。一旦總線空閑,I2C邏輯會馬上測試I2C總線并產(chǎn)生一個起始條件。

2.4 I2C停止函數(shù)i2c2_stop:

I2C結(jié)束時發(fā)送停止條件并釋放總線。

a)向I2CONSET寫入0x14來置位STO和AA位;

b)向I2CONCLR寫入0x08來清除SI標志;

2.5主機發(fā)送函數(shù)i2c2_write

啟動主機發(fā)送功能,向從機發(fā)送數(shù)據(jù),通過建立緩沖區(qū)、指針和數(shù)據(jù)計數(shù)然后發(fā)啟起始條件便可執(zhí)行主發(fā)送操作。

a)初始化主機數(shù)據(jù)計數(shù)器;

b)建立數(shù)據(jù)將被發(fā)送到的從機地址,并且添加寫位;

c)向I2CONSET寫入0x20來置位STA位;

d)在主發(fā)送緩沖區(qū)內(nèi)建立要發(fā)送的數(shù)據(jù);

e)初始化主機數(shù)據(jù)計數(shù)器來匹配正在發(fā)送的信息長度;

f)退出。

2.6主機接收函數(shù) i2c2_read

啟動主機接收功能,接收從機發(fā)出的數(shù)據(jù)。

通過建立緩沖區(qū)、指針和數(shù)據(jù)計數(shù)然后發(fā)啟起始條件便可執(zhí)行主接收操作。

a)初始化主機數(shù)據(jù)計數(shù)器;

b)建立數(shù)據(jù)將被發(fā)送到的從機地址,并且添加讀位;

c)向I2CONSET寫入0x20來置位STA位;

d)在主接收緩沖區(qū)內(nèi)建立要發(fā)送的數(shù)據(jù);

e)初始化主機數(shù)據(jù)計數(shù)器來匹配正在發(fā)送的信息長度;

f)退出。

3 測試

通過向0x00地址寫入并回讀固定數(shù)據(jù)驗證有效性。

測試結(jié)果比較

第一次讀取

第二次讀取

經(jīng)驗證可以正常使用。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119206
  • 存儲單元
    +關(guān)注

    關(guān)注

    1

    文章

    62

    瀏覽量

    16115
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1002

    瀏覽量

    81061
  • Cortex M3
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    8534
  • LPC1752
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    3456
收藏 人收藏

    評論

    相關(guān)推薦

    C加密算法的實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《C加密算法的實現(xiàn).pdf》資料免費下載
    發(fā)表于 09-20 11:10 ?0次下載
    <b class='flag-5'>C</b>加密算法的<b class='flag-5'>實現(xiàn)</b>

    探索存儲新未來:為何EVASH EV24C256A EEPROM成為市場新寵

    探索存儲新未來:為何EVASH EV24C256A EEPROM成為市場新寵
    的頭像 發(fā)表于 09-05 15:31 ?155次閱讀

    如何關(guān)閉phy_version: 1163.0, 665d56c, Jun 24 2020, 10:00:08, RTOS new的發(fā)送?

    phy_version: 1163.0, 665d56c, Jun 24 2020, 10:00:08, RTOS new這個無法找到關(guān)閉的地方,也無法在SDK中找到源碼,只在libphy.a里找到一個phy_version_p
    發(fā)表于 07-09 08:01

    玩轉(zhuǎn)STM32和EV24C MCU + EEPROM ST + EVASH

    簡介 本指南旨在幫助您輕松上手使用STM32微控制器和EVASH的EV24C系列EEPROM芯片。通過本教程,您將學習如何在實際項目中使用這些組件,逐步掌握從基本到高級的操作技巧。 必備材料
    的頭像 發(fā)表于 07-01 09:58 ?291次閱讀

    stm32F103使用CubeMX FreeRTOS通過其配置訪問24C16,讀取時會陷入死循環(huán)的原因?

    我是stm32F103,使用CubeMX FreeRTOS,通過其配置訪問24C16,碰到一個非常奇怪的問題: 原生cubeMX生成的代碼,在同樣一批板子上,有大概10%,在代碼第一次讀取24C
    發(fā)表于 04-29 06:51

    24C02/04/08/16/32/64應(yīng)用介紹

    電子發(fā)燒友網(wǎng)站提供《24C02/04/08/16/32/64應(yīng)用介紹.pdf》資料免費下載
    發(fā)表于 12-07 10:38 ?2次下載

    c語言gets函數(shù)可以輸入數(shù)字嗎

    C語言中的gets函數(shù)是用來讀取字符串的,而不是用來讀取數(shù)字的。它會讀取輸入的字符直到遇到換行符或者文件結(jié)束符。因此,如果你嘗試使用gets函數(shù)來
    的頭像 發(fā)表于 11-24 10:00 ?1064次閱讀

    單片機IIC總線及AT24C02的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《單片機IIC總線及AT24C02的應(yīng)用.doc》資料免費下載
    發(fā)表于 11-16 09:24 ?2次下載
    單片機IIC總線及AT<b class='flag-5'>24C</b>02的應(yīng)用

    無法讀取I2C地址的調(diào)試案例

    引言:調(diào)試I2C從器件的第一步就是嘗試去讀它的地址,如果無法讀取地址或者向其發(fā)送讀寫命令卻沒有收到ACK回饋,都說明與器件通訊失敗。常規(guī)發(fā)生無法讀取I2C地址的情況時,第一懷疑點往往是
    的頭像 發(fā)表于 11-02 18:24 ?1674次閱讀
    無法<b class='flag-5'>讀取</b>I2<b class='flag-5'>C</b>地址的調(diào)試案例

    CW9C08無線充電發(fā)射端控制芯片中文手冊

    電子發(fā)燒友網(wǎng)站提供《CW9C08無線充電發(fā)射端控制芯片中文手冊.pdf》資料免費下載
    發(fā)表于 10-30 14:32 ?0次下載

    STM32速成筆記(11)—EEPROM(AT24C02)

    AT24C01/02/04/08/16...是一個1K/2K/4K/8K/16K位電可擦除PROM,內(nèi)部含有128/256/512/1024/2048個8位字節(jié),AT24C01有一個8字節(jié)頁寫緩沖器,AT
    的頭像 發(fā)表于 10-24 15:12 ?2291次閱讀
    STM32速成筆記(11)—EEPROM(AT<b class='flag-5'>24C</b>02)

    嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應(yīng)用.pdf》資料免費下載
    發(fā)表于 10-23 14:07 ?0次下載
    嵌入式實時操作系統(tǒng)μ<b class='flag-5'>C</b>/OS-Ⅱ在<b class='flag-5'>LPC</b>1788上的移植及應(yīng)用

    基于LPC11C14單片機、可讀取RFID標簽的服裝生產(chǎn)工位機設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于LPC11C14單片機、可讀取RFID標簽的服裝生產(chǎn)工位機設(shè)計.pdf》資料免費下載
    發(fā)表于 10-23 10:48 ?1次下載
    基于<b class='flag-5'>LPC11C</b>14單片機、可<b class='flag-5'>讀取</b>RFID標簽的服裝生產(chǎn)工位機設(shè)計

    lpc1114的i2c監(jiān)聽模式怎么配置?

    lpc1114監(jiān)聽i2c總線上的數(shù)據(jù)怎么配置,不作為通訊用,把總線上數(shù)據(jù)通過串口傳輸?shù)诫娔X
    發(fā)表于 10-07 06:53

    lpc1114如何設(shè)置監(jiān)控i2c數(shù)據(jù)?

    有一條正常通訊的i2c總線,想截取通訊內(nèi)容,看手冊好像是可以用lpc1114監(jiān)聽,然后想用串口輸出數(shù)據(jù),那么單片機i2c需要怎么配置
    發(fā)表于 09-27 07:07