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

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

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

如何進(jìn)行AT24C02存儲(chǔ)芯片的串行E2PROM讀寫

Wildesbeast ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2020-05-05 16:03 ? 次閱讀

24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。

;這是將0600H地址中以下的8個(gè)數(shù)據(jù)寫到24C02的01H為首址單元中去的匯編程序

ORG 0000H

SCL BIT P3.4;定義24C02的串行時(shí)鐘

SDA BIT P3.5;定義24C02的串行數(shù)據(jù)線

LJMP START

START:LCALL STAR;調(diào)用

MOV R2,#08H;一個(gè)數(shù)據(jù)有8位

MOV DPTR,#0600H;定義源數(shù)據(jù)的位置

LOOP:MOV A,#00H

MOVC A,@A+DPTR

LCALL SDATA

LCALL ACK

JC LOOP

INC DPTR

DJNZ R2,LOOP

LCALL STOP;調(diào)用停止子程序

STAR:SETB SDA

SETB SCL

NOP

NOP

NOP

NOP

CLR SDA

NOP

NOP

NOP

NOP

CLR SCL

RET

SDATA:MOV R0,#08H

LOOP0:RLC A

MOV SDA,C

NOP

NOP

SETB SCL

NOP

NOP

NOP

NOP

CLR SCL

DJNZ R0,LOOP0

RET

ACK:SETB SDA

NOP

NOP

SETB SCL

NOP

NOP

NOP

NOP

MOV C,SDA

CLR SCL

RET

STOP:CLR SDA

NOP

NOP

NOP

NOP

SETB SCL

NOP

NOP

NOP

NOP

SETB SDA

NOP

NOP

NOP

NOP

RET

ORG 0600H

DB 0A0H,10H,01H,02H,03H,04H,05H,06H

END

讀寫子程序如下:

;寫串行E2PROM子程序EEPW

; R3=10100000(命令1010+器件3位地址+讀/寫。 器件地址一個(gè)芯片,是000)

; (R4)=片內(nèi)字節(jié)地址

; (R1)=欲寫數(shù)據(jù)存放地址指針

; (R7)=連續(xù)寫字節(jié)數(shù)n

EEPW: MOVP1,#0FFH

CLRP1.0;發(fā)開始信號(hào)

MOVA,R3;送器件地址

ACALL SUBS

MOVA,R4;送片內(nèi)字節(jié)地址

ACALLSUBS

AGAIN: MOVA,@R1

ACALL SUBS;調(diào)發(fā)送單字節(jié)子程序INC R1

DJNZR7,AGAIN;連續(xù)寫n個(gè)字節(jié)

CLR P1.0;SDA置0, 準(zhǔn)備送停止信號(hào)

ACALLDELAY ;延時(shí)以滿足傳輸速率要求

SETB P1.1 ;發(fā)停止信號(hào)

ACALLDELAY

SETB P1.0

RET

SUBS: MOVR0,#08H ;發(fā)送單字節(jié)子程序

LOOP: CLRP1.1

RLCA

MOVP1.0,C

NOP

SETBP1.1

ACALL DELAY

DJNZR0,LOOP ;循環(huán)8次送8個(gè)bit

CLRP1.1

ACALL DELAY

SETBP1.1

REP: MOVC,P1.0

JCREP;判應(yīng)答到否,未到則等待

CLR P1.1

RET

DELAY: NOP

NOP

RET

;讀串行E2PROM子程序EEPR

;(R1)=欲讀數(shù)據(jù)存放地址指針

;; R3=10100001(命令1010+器件3位地址+讀/寫。 器件地址一個(gè)芯片,是000)

;(R4)=片內(nèi)字節(jié)地址

;(R7)=連續(xù)讀字節(jié)數(shù)

EEPR: MOVP1,#0FFH

CLRP1.0;發(fā)開始信號(hào)

MOVA,R3;送器件地址

ACALL SUBS ;調(diào)發(fā)送單字節(jié)子程序

MOVA,R4;送片內(nèi)字節(jié)地址

ACALL SUBS

MOVP1,#0FFH

CLRP1.0;再發(fā)開始信號(hào)

MOVA,R3

SETBACC.0;發(fā)讀命令

ACALL SUBS

MORE: ACALL SUBR

MOV@R1,A

INCR1

DJNZ R7,MORE

CLRP1.0

ACALL DELAY

SETB P1.1

ACALL DELAY

SETBP1.0 ;送停止信號(hào)

RET

SUBR: MOV R0,#08H ;接受單字節(jié)子程序

LOOP2: SETB P1.1

ACALL DELAY

MOVC,P1.0

RLCA

CLRP1.1

ACALL DELAY

DJNZ R0,LOOP2

CJNE R7,#01H,LOW

SETB P1.0;若是最后一個(gè)字節(jié)置A=1

AJMP SETOK

LOW: CLRP1.0;否則置A=0

SETOK: ACALL DELAY

SETB P1.1

ACALL DELAY

CLRP1.1

ACALL DELAY

SETBP1.0;應(yīng)答畢,SDA置1

RET

程序中多處調(diào)用了DELAY子程序(僅兩條NOP指令),這是為了滿足I2C總線上數(shù)據(jù)傳送速率的要求,只有當(dāng)SDA數(shù)據(jù)線上的數(shù)據(jù)穩(wěn)定下來(lái)之后才能進(jìn)行讀寫(即SCL線發(fā)出正脈沖)。另外,在讀最后一數(shù)據(jù)字節(jié)時(shí),置應(yīng)答信號(hào)為“1”,表示讀操作即將完成。

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

    關(guān)注

    11

    文章

    897

    瀏覽量

    43145
  • AT24C02
    +關(guān)注

    關(guān)注

    0

    文章

    79

    瀏覽量

    24299
  • E2PROM
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    18606
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【AG32開發(fā)板體驗(yàn)連載】智能蒸烤箱--AG32VF407I2C總線測(cè)試

    E2PROM-24LC02BT的訪問,具體電路如下: 二、24LC02BT介紹 24LC02BT-I/SN是一款2Kb的EEPROM(電可擦除可編程只讀
    發(fā)表于 11-20 23:15

    數(shù)據(jù)保存100年!納祥科技國(guó)產(chǎn)EEPROM芯片NX24C02A,兼容替代AT24C02

    可擦可編程只讀存儲(chǔ)器。它是一種特殊的存儲(chǔ)芯片,它允許在有電源的情況下進(jìn)行多次擦除和編程操作,而數(shù)據(jù)一旦保存,即使斷電也不會(huì)丟失。因其具有存儲(chǔ)信息可靠性高、擦寫次數(shù)多的特點(diǎn),廣泛
    的頭像 發(fā)表于 11-14 01:08 ?433次閱讀
    數(shù)據(jù)保存100年!納祥科技國(guó)產(chǎn)EEPROM<b class='flag-5'>芯片</b>NX<b class='flag-5'>24C02</b>A,兼容替代<b class='flag-5'>AT24C02</b>

    一文帶你了解什么是SD NAND存儲(chǔ)芯片

    單片機(jī)的開發(fā)上會(huì)對(duì)簡(jiǎn)單的數(shù)據(jù)進(jìn)行存儲(chǔ)。   這里就以AT24C256存儲(chǔ)芯片來(lái)舉例,下圖是該芯片的內(nèi)部結(jié)構(gòu)圖 。   可以看出主要是以II
    發(fā)表于 11-13 15:20

    pcm2706的iic可以進(jìn)行寫操作嗎?

    pcm2706的iic 可以進(jìn)行寫操作嗎?比如說(shuō):pcm2706通過iic對(duì)外掛的 at24C02 存儲(chǔ)芯片進(jìn)行寫操作?
    發(fā)表于 11-08 07:48

    UV三防漆:存儲(chǔ)芯片的隱形盔甲

    。UV三防漆固化技術(shù),正是這一挑戰(zhàn)中的佼佼者,它以獨(dú)特的防護(hù)性能,為存儲(chǔ)芯片披上了隱形的盔甲,確保了數(shù)據(jù)的準(zhǔn)確讀寫與長(zhǎng)期保存。 ? UV三防漆:存儲(chǔ)芯片的隱形盔甲 UV三防漆:輕盈堅(jiān)韌的隱形防線 UV三防漆,一種基于紫外光固
    的頭像 發(fā)表于 10-31 10:05 ?166次閱讀

    怎么將PPS中已經(jīng)編譯好的圖形才程序,燒寫到TLV320AIC3254EVM-K的E2PROM?

    怎么將PPS中已經(jīng)編譯好的圖形才程序,燒寫到板上的E2PROM???
    發(fā)表于 10-31 07:32

    英銳芯AD24C02_16-Byte(中性)

    AD24C02是一款串行電可擦除編程只讀存儲(chǔ)器(EEPROM)。存儲(chǔ)器可存儲(chǔ)256個(gè)字節(jié)數(shù)據(jù),分為16頁(yè) 每頁(yè)16字節(jié),隨機(jī)字尋址需要8位數(shù)
    發(fā)表于 09-09 15:08 ?0次下載

    存儲(chǔ)芯片有哪些類型

    存儲(chǔ)芯片,又稱為半導(dǎo)體存儲(chǔ)器,是以半導(dǎo)體電路作為存儲(chǔ)媒介的存儲(chǔ)器,廣泛應(yīng)用于計(jì)算機(jī)、消費(fèi)電子、智能終端、固態(tài)存儲(chǔ)硬盤等領(lǐng)域。按照不同的分類標(biāo)
    的頭像 發(fā)表于 07-24 16:40 ?2424次閱讀

    如何通過視覺檢測(cè)確保eMMC存儲(chǔ)芯片質(zhì)量?

    緊湊、高性能和低功耗的存儲(chǔ)解決方案。 檢測(cè)需求 流水線皮帶線視覺檢測(cè)機(jī)對(duì)emmc存儲(chǔ)芯片進(jìn)行視覺檢測(cè),對(duì)其進(jìn)行區(qū)分正反面等進(jìn)行檢測(cè)。 ? ?
    的頭像 發(fā)表于 05-22 17:33 ?751次閱讀
    如何通過視覺檢測(cè)確保eMMC<b class='flag-5'>存儲(chǔ)芯片</b>質(zhì)量?

    致真存儲(chǔ)芯片制造項(xiàng)目正式開工

    據(jù)致真存儲(chǔ)官方聲明,此次致真存儲(chǔ)芯片制造項(xiàng)目選址青島西海岸新區(qū)古鎮(zhèn)口,占地約50畝,旨在建立下一代磁性隨機(jī)存儲(chǔ)芯片生產(chǎn)流程,從而助力磁存儲(chǔ)芯片產(chǎn)業(yè)的快速發(fā)展。
    的頭像 發(fā)表于 05-20 15:26 ?1341次閱讀

    stm8s103k與AT24C02的iic通信不穩(wěn)定是什么原因?qū)е碌模?/a>

    stm8s103k與AT24C02的iic通信不穩(wěn)定,有時(shí)可以讀取數(shù)據(jù),有時(shí)讀不出 是什么原因? 有人與ADS1110用iic通信過嗎?
    發(fā)表于 04-30 07:33

    STM32F103用普通IO口驅(qū)動(dòng)24C02,讀寫不正確的原因?

    以下24C02的驅(qū)動(dòng)好像不穩(wěn)定,不更換24C02時(shí),讀寫都正確,但是更換一個(gè)24C02,數(shù)據(jù)就讀寫不正確,在把之前的正常的
    發(fā)表于 04-19 06:12

    什么是存儲(chǔ)芯片?有什么作用呢?

    存儲(chǔ)芯片是一種用于存儲(chǔ)數(shù)據(jù)的集成電路芯片,也被稱為存儲(chǔ)芯片
    的頭像 發(fā)表于 02-29 09:09 ?3400次閱讀

    邏輯芯片存儲(chǔ)芯片的區(qū)別

    邏輯芯片存儲(chǔ)芯片是計(jì)算機(jī)系統(tǒng)中兩種不同類型的芯片,它們?cè)诠δ芎陀猛旧嫌兄黠@的區(qū)別。
    的頭像 發(fā)表于 01-17 18:26 ?2545次閱讀

    什么是SD NAND存儲(chǔ)芯片?

    前言   大家好,我們一般在STM32項(xiàng)目開發(fā)中或者在其他嵌入式開發(fā)中,經(jīng)常會(huì)用到存儲(chǔ)芯片存儲(chǔ)數(shù)據(jù)。今天我和大家來(lái)介紹一款存儲(chǔ)芯片,我這里采用(雷龍) CS創(chuàng)世 SD NAND 。   SD
    發(fā)表于 01-05 17:54