音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請教AT24C02的寫入問題

作者:白眼狼 欄目:單片機(jī)
請教AT24C02的寫入問題
我的AT24C02的程序可以正常讀,但是每次寫都是寫了FFH進(jìn)去(實(shí)際上我控制寫入的并不是FFH)。我想啊,既然能夠正常讀,說明主MCU應(yīng)該是正?刂艭02的,因?yàn)樵谧x的過程中也需要向C02發(fā)送命令啊,既然這些都正常,說明MCU向C02發(fā)送字節(jié)的程序是沒有問題的啊,可是為什么寫進(jìn)去的東西都變成FFH了呢?(我有燒片器,所以可以分開調(diào)試讀寫功能)。

2樓: >>參與討論
zhouss
很簡單,沒有寫入,芯片本來的數(shù)據(jù)就是FFH,程序問題
 
3樓: >>參與討論
白眼狼
確定寫入了(有內(nèi)容)
我有燒片器,先用燒片器寫入了不是FFH的數(shù)據(jù),然后再執(zhí)行我的寫程序,然后用燒片器讀出內(nèi)容,我寫的存儲(chǔ)單元就變成FFH了,沒寫的地方就還是沒變。

我想也應(yīng)該是程序問題,可是MCU向24C02發(fā)送字節(jié)的程序應(yīng)該沒錯(cuò)啊,如果要錯(cuò)的話,我的讀程序也不應(yīng)該正常。到底有可能在哪方面出問題呢?

4樓: >>參與討論
WU1980
656
可以把你的chengxu貼出來嗎?

5樓: >>參與討論
eleven11
應(yīng)該是程序問題
把你的chengxu貼出來嗎

6樓: >>參與討論
xin___xin
把你的“寫”程序貼出來看看
 
7樓: >>參與討論
roon2001
注意延時(shí)
EEPROM寫的時(shí)候很慢,注意在寫入時(shí)應(yīng)當(dāng)適當(dāng)延時(shí)。

8樓: >>參與討論
lmp
93C46代替試一下, 和24C02功能一樣但更皮實(shí),
 
9樓: >>參與討論
cxd731
也有可能是硬件問題
  你24C02的寫保護(hù)腳(WP)確定接地了嗎

10樓: >>參與討論
白眼狼
24C02讀寫程序
WP沒有接地,默認(rèn)時(shí)控制為高,寫時(shí)控制為低。
現(xiàn)將程序貼出,請看看為什么總是寫入FFH。
在初始化的時(shí)候(另外一個(gè)文件)還有兩句話:JSR ClrI2CClk; JSR SetI2CWP

外部主要調(diào)用I2CTxStr和I2CRxStr這兩個(gè)函數(shù)。

I2CTxByteBeforeRx:
        JSR I2CDelay
        LDA R_BitStatus
        ORA #BIT0
        JMP I2CTxByteIn

I2CTxByte:
;input: r1=translated byte
;OUTPUT: A=0:error; A=1:success
;effect: r1-r2,X
        LDA R_BitStatus
        AND #BIT0_
I2CTxByteIn:
        STA R_BitStatus

        LDX #08H
I2CTxByte0:
        LDA #80H
        BIT R1
        BEQ I2CTxByteLo
I2CTxByteHi:
        JSR SetI2CDat
        JMP I2CTxByte_
I2CTxByteLo:
        JSR ClrI2CDat
I2CTxByte_:
        JSR I2CDelay
        JSR SetI2CClk
        JSR I2CDelay

        ASL R1

        JSR ClrI2CClk
        JSR I2CDelay
        JSR I2CDelay
        DEX
        BNE I2CTxByte0
I2CTxByteAck:
        JSR SetI2CDat
        NOP
        NOP

        JSR I2CDatDirIn
        JSR I2CDelay

        LDA PIOS
        STA R2
        LDA #C_C02DatBit
        BIT R2
        BNE I2CTxByteErr
I2CTxByteOk:
        LDA #BIT0
        BIT R_BitStatus
        BNE I2CTxByteOk_
        JSR I2CDatDirOut
I2CTxByteOk_:
        JSR SetI2CClk               ;Clk=1
        JSR I2CDelay
        JSR ClrI2CClk               ;Clk=0
        JSR I2CDelay

        LDA #C_OK
        RTS

I2CTxByteErr:
        JSR I2CDatDirOut

        JSR SetI2CClk               ;Clk=1
        JSR I2CDelay
        JSR ClrI2CClk               ;Clk=0
        JSR I2CDelay

        LDA #C_ERROR
        RTS

I2CRxByte:
;input: none
;OUTPUT: r1=received byte
;effect: r1-r2,X
        LDX #08H
        LDA #00H
        STA R1
I2CRxByte0:
        ASL R1

        LDA PIOS
        STA R2
        LDA #C_C02DatBit
        BIT R2
        BEQ I2CRxByte_

        INC R1
I2CRxByte_:
        JSR SetI2CClk               ; Clk=1
        JSR I2CDelay
        JSR ClrI2CClk               ; Clk=0
        JSR I2CDelay

        DEX
        BNE I2CRxByte0

        RTS

;;;;;;;;Write a string to 24C02
I2CTxStr:
;input: r4:C02_Addr; r5-C02Buf offset; r6-Length
;OUTPUT: A=0:error; A=1:success
;        r4-r6 don't changed
;effect: r1-r3,X,Y
        JSR ClrI2CWP
        JSR I2CStart

        LDA #A0H                     ;write mesage
        STA R1
        JSR I2CTxByte
        CMP #00H
        BEQ I2CTxStrErr

        LDA R4
        STA R1                       ;C02_Addr
        JSR I2CTxByte
        CMP #C_ERROR
        BEQ I2CTxStrErr

I2CTxStr1:                           ;Write data
        LDA R6                       ;Length
        STA R3
        LDY R5                       ;offset
I2CTxStr10:
        LDA R_I2CBuf,Y
        STA R1
        JSR I2CTxByte
        CMP #C_ERROR
        BEQ I2CTxStrErr

        INY
        DEC R3
        BNE I2CTxStr10

        JSR I2CStop
      &
11樓: >>參與討論
cxd731
我暈
  如果你把WP接成高電平,那你寫一輩子也寫不進(jìn)去!
  老兄,你就拿起烙鐵把它接至GND試試看吧

12樓: >>參與討論
白眼狼
24C02的寫保護(hù)到底是什么意思?
把寫保護(hù)直接接地就一切正常了,那么這個(gè)寫保護(hù)到底起什么作用?

13樓: >>參與討論
qjy_dali
寫保護(hù)當(dāng)然是只讓你讀不讓你寫啊
不過匯編的程序看起來真是累!

14樓: >>參與討論
cxd731
to:白眼狼
  這是24C02的SPEC上的一段話,仔細(xì)看看:
  WRITE PROTECT(WP):The write protect input,when connected to GND,allows normal write operations.When WP is connected to VCC,all write operations to the MEMORY are inhibited.
  友情提醒:看樣子樓主是寫軟件出生,出了問題第一反應(yīng)就是程序錯(cuò)了,然后就把代碼帖出來讓別人分析;但做我們這一行的,就算你軟件寫得再牛,如果不了解硬件,基本屬于不稱職的軟件工程師(也許我的詞鋒有點(diǎn)犀利,那就得罪了);所以,我還是比較相信我以前那家公司的一個(gè)臺(tái)灣人說的話:在這個(gè)行業(yè)里(電子行業(yè)),沒有真正的SOFTWARE ENGINEER,只有firmware ENGINEER!

15樓: >>參與討論
白眼狼
說得對
cxd說得對,搞我們這行的,必須要軟硬兼施。

通過試驗(yàn),WP腳通過一個(gè)上拉電阻接VCC還是起不了保護(hù)作用,仍然可以正常讀寫。我正在嘗試如何讓MCU來控制WP,可以在程序運(yùn)行期間控制WP的寫保護(hù)和正常讀寫,如果有此經(jīng)驗(yàn)的請告知您的做法,謝謝!


16樓: >>參與討論
cxd731
我不明白您為什么一定要用MCU來控制WP
 只要將WP接地,一切功能就會(huì)正常;I2C首先傳送的器件地址,所以你不用擔(dān)心你在寫別的器件時(shí)會(huì)干擾24C02
我是從來沒有用MCU來控制過WP,我想大部分人應(yīng)該也不會(huì)這樣做;不過你的想法到是很有創(chuàng)意,如果有什么新的發(fā)現(xiàn),帖上來讓大家共享你的成果

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教數(shù)據(jù)采集問題
這段文字出自哪?說明了什么?
用C編程的請進(jìn)
新手求教:單片機(jī)中碼制轉(zhuǎn)換!
各位大蝦看過來
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號