久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2626|回復: 5
收起左側

51單片機寫I2C總線24C02問題

[復制鏈接]
ID:905876 發表于 2021-5-20 21:05 | 顯示全部樓層 |閱讀模式
最近修改一個程序,原來使用的是SPI總線EEPROM,現在改為I2C總線EEPROM。按照數據手冊和網上的文章修改讀寫程序段。現有問題無法解決。調用寫總線的部分程序如下。大俠幫忙修改一下程序。原程序是正常使用的。就是把讀寫EEPROM的部分修改了。現在是讀EEPROM正常,寫入部分異常。
我用編程器把正確的信息寫入24C02,設備可以正常工作。

調用的DELAY是延時8微秒


WWW:    CLR     TR0                            ;主程序中的一段
        MOV     R6,#0         
        MOV     DPTR,#0F00H
        MOV     R2,#0
WWW1:   MOV     R1,#40H
WWW2:   MOV     A,R2
        MOVC    A,@A+DPTR
        MOV     @R1,A
        INC     R1
        INC     R2
        CJNE    R1,#48H,WWW2
        MOV     ADL,R6                         ;ADL是字地址
        MOV     R1,#40H
        MOV     R5,#8
        LCALL   WREN                           調用寫程序
        MOV     A,#8
        ADD     A,R6
        MOV     R6,A
        CJNE    R6,#0B8H,WWW1
        SETB    TR0
        RET

;頁寫程序

WREN:                         ;連續寫
        LCALL I2C_START       ;起始
        MOV A,#0A0H           ;器件地址+寫
        LCALL I2C_TXBYTE      ;發送一字節數據
        MOV A,ADL             ;字地址
        LCALL I2C_TXBYTE
WREN1:  MOV   A,@R1           ;開始寫數據
        LCALL I2C_TXBYTE
        INC   R1
        DJNZ  R5,WREN1
        LCALL I2C_STOP
        LCALL DELAY
        RET

I2C_START:                  ;
        SETB   SDA
        LCALL  DELAY
        SETB   SCL
        LCALL  DELAY
        CLR    SDA
        LCALL  DELAY
        CLR    SCL
        LCALL  DELAY
        RET


I2C_STOP:                    ;
        CLR    SDA
        LCALL  DELAY
        SETB   SCL
        LCALL  DELAY
        SETB   SDA
        LCALL  DELAY
        RET


I2C_TXBYTE:                 ;主機發送一字節數據
        MOV   R3,#08H
TXNEXT: RLC   A
        MOV   SDA,C
        LCALL DELAY
        SETB  SCL
        LCALL DELAY
        CLR   SCL
        LCALL DELAY
        DJNZ  R3,TXNEXT
        SETB  SDA
        LCALL DELAY
        SETB  SCL
        LCALL DELAY
        MOV   R3,#10H         ;循環一定時間等待應答ACK
REP1:   MOV   C,SDA
        JNC    REP2
        LCALL  DELAY
        DJNZ   R3,REP1
REP2:   CLR   SCL
        LCALL DELAY
        RET

按照這個運行后EEPROM中寫入的數據如下圖(更改后的I2C總線)

ban.jpg


每行只寫了前面的8個字符。后面的8個沒寫丟棄了。


下圖是正常寫入的狀態。(原來SPI總線)
quan.jpg

每行16個字符都寫入了。


回復

使用道具 舉報

ID:401564 發表于 2021-5-20 23:58 | 顯示全部樓層
24C02寫入的緩沖的速度并不快,
先把延時改成1mS
你把這個MOV   R3,#10H         ;循環一定時間等待應答ACK
改為MOV   R3,#255試一下
如果還不行,就不要了
也可以先把延時改成1秒,然后在寫入的時候,每次寫入一個位就閃燈一次,看一下卡在哪里,這樣就能找到問題點了   

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:905876 發表于 2021-5-21 08:14 | 顯示全部樓層
Y_G_G 發表于 2021-5-20 23:58
24C02寫入的緩沖的速度并不快,
先把延時改成1mS
你把這個MOV   R3,#10H         ;循環一定時間等待應答AC ...

延時的時間我調整過。沒有改變。測試使用頁寫8位一個循環,可以正常寫入當前的8位數據,但是后面緊跟的8位數據直接丟失了。16位一個循環后面丟16。使用單獨一個字節循環后面丟一個字節。懷疑是字地址的問題。但是找不出來問題出在那里。
比如寫入0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p等數據。EEPROM寫入的信息是
0,1,2,3,4,5,6,7,FF,FF,FF,FF,FF,FF,FF,FF,
G,H,I,J,K,L,M,N,FF,FF,FF,FF,FF,FF,FF,FF

8,9,A,B,C,D,E,F和O后面的數據沒有寫入。直接丟失了。
回復

使用道具 舉報

ID:401564 發表于 2021-5-21 15:30 | 顯示全部樓層
你這8uS的延時肯定是不夠的
I2C_TXBYTE       這個子程序中的延時只是寫入緩沖的應答
LCALL I2C_STOP      停止信號之后至少是要有5mS的延時,這個是寫入EEPROM的時間,一般是5mS為最大值,數據手冊上是有這個的
回復

使用道具 舉報

ID:905876 發表于 2021-5-24 12:56 | 顯示全部樓層
本帖最后由 635731309 于 2021-5-24 17:01 編輯
Y_G_G 發表于 2021-5-21 15:30
你這8uS的延時肯定是不夠的
I2C_TXBYTE       這個子程序中的延時只是寫入緩沖的應答
LCALL I2C_STOP     ...

感謝大神!  按照你的意見,在I2C_STOP后面增加一個3ms的延時,程序可以正常運行了。

為了保險,還是按照數據手冊上的改為5ms延時了。
再次感謝。

回復

使用道具 舉報

ID:401564 發表于 2021-5-24 21:26 | 顯示全部樓層
635731309 發表于 2021-5-24 12:56
感謝大神!  按照你的意見,在I2C_STOP后面增加一個3ms的延時,程序可以正常運行了。

為了保險,還是按 ...

是的是的,一般保險起見,都是按照數據手冊的極限值來進行預防的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人做人人澡人人爽欧美 | 精品久久久久久久久久久 | 久久免费观看一级毛片 | 成人在线视频一区二区三区 | 国产精品国产三级国产aⅴ中文 | 国产免费一区二区 | 日本精品一区二区三区在线观看视频 | 在线免费观看黄色 | 日韩另类视频 | 亚洲高清一区二区三区 | 欧美多人在线 | 亚洲精品福利在线 | 神马久久久久久久久久 | 久久国产成人 | 操久久| 欧美精品中文字幕久久二区 | 日本亚洲一区二区 | 国产精品免费视频一区 | 色视频在线免费观看 | www.黄网 | 精品国产乱码久久久久久丨区2区 | 91久久国产综合久久 | 黄色一级视频 | 成人网址在线观看 | 成人国产精品久久久 | 亚洲品质自拍视频网站 | 免费欧美视频 | 欧美久久一区二区三区 | 免费久久网 | 中文字字幕在线中文乱码范文 | 少妇黄色 | 欧美一区久久 | 欧美a区| 国产精品一区二区av | 国产线视频精品免费观看视频 | 成人污污视频 | 黄色一级毛片免费看 | 黄视频网址 | 亚洲国产精品一区二区久久 | 国产精品视频一区二区三区四区国 | 日韩欧美一区二区三区在线播放 |