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

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

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

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

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

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

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

ORG 0000H

SCL BIT P3.4;定義24C02的串行時鐘

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

LJMP START

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

MOV R2,#08H;一個數(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位地址+讀/寫。 器件地址一個芯片,是000)

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

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

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

EEPW: MOVP1,#0FFH

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

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個字節(jié)

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

ACALLDELAY ;延時以滿足傳輸速率要求

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

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個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位地址+讀/寫。 器件地址一個芯片,是000)

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

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

EEPR: MOVP1,#0FFH

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

MOVA,R3;送器件地址

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

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

ACALL SUBS

MOVP1,#0FFH

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

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 ;送停止信號

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;若是最后一個字節(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)定下來之后才能進(jìn)行讀寫(即SCL線發(fā)出正脈沖)。另外,在讀最后一數(shù)據(jù)字節(jié)時,置應(yīng)答信號為“1”,表示讀操作即將完成。

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

    關(guān)注

    11

    文章

    881

    瀏覽量

    43050
  • AT24C02
    +關(guān)注

    關(guān)注

    0

    文章

    79

    瀏覽量

    24239
  • E2PROM
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    18564
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    UV三防漆:存儲芯片的隱形盔甲

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

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

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

    英銳芯AD24C02_16-Byte(中性)

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

    存儲芯片有哪些類型

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

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲芯片

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲芯片
    的頭像 發(fā)表于 06-25 17:14 ?476次閱讀

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

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

    致真存儲芯片制造項目正式開工

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

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

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

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

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

    什么是存儲芯片?有什么作用呢?

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

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

    邏輯芯片存儲芯片是計算機(jī)系統(tǒng)中兩種不同類型的芯片,它們在功能和用途上有著明顯的區(qū)別。
    的頭像 發(fā)表于 01-17 18:26 ?2297次閱讀

    半導(dǎo)體芯片研究:中國存儲芯片行業(yè)概覽

    DRAM、NAND Flash、NOR Flash合計約占整體存儲芯片市場的97%;自2022年初起,下游需求市場的萎縮以及宏觀環(huán)境進(jìn)一步惡化導(dǎo)致存儲芯片市場不斷承壓,存儲芯片價格持
    的頭像 發(fā)表于 01-14 09:47 ?2306次閱讀
    半導(dǎo)體<b class='flag-5'>芯片</b>研究:中國<b class='flag-5'>存儲芯片</b>行業(yè)概覽

    什么是SD NAND存儲芯片?

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

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

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