找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1714|回復(fù): 2
收起左側(cè)

單片機(jī)模擬SPI讀數(shù)據(jù),讀到的電平一直為0

[復(fù)制鏈接]
ID:491796 發(fā)表于 2023-3-17 22:08 | 顯示全部樓層 |閱讀模式
單片機(jī)用的是dspic33fj256mc710a,eeprom用的是at25128,spi通信;
在在線調(diào)試的時(shí)候正常,可以正常讀取,正常寫入;
但是下載程序到板子里面運(yùn)行就不行,從eeprom里面讀的數(shù)據(jù)都是0x00,通過(guò)邏輯分析儀抓波形發(fā)現(xiàn)eeprom已經(jīng)發(fā)出了正確的回復(fù),但是讀取的時(shí)候全部是0x00;
也就是說(shuō),雖然eeprom發(fā)出了正確的信息,但是我的soft SPI讀取函數(shù)里面讀到的都是0,經(jīng)過(guò)數(shù)據(jù)發(fā)現(xiàn)進(jìn)入(SI == 1)的條件下語(yǔ)句0次,進(jìn)入else的語(yǔ)句8次,所以在代碼里面讀取電平不是為高電平的(我用邏輯分析測(cè)了PIC單片機(jī)引腳端的電平,確實(shí)是有變化的正確電平)
正常結(jié)果.png
下載程序EEPROM有正確輸出.png
錯(cuò)誤結(jié)果.png
代碼.png
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2023-3-18 21:54 | 顯示全部樓層
25系列的EEPROM的基本操作幾乎是完全一樣的
CS的時(shí)序很重要的
這是一個(gè)寫入函數(shù),你參考一下
void Write_Data_25AA(u8 WriteByte,u8 Addr)//向指定地點(diǎn)寫入一個(gè)字節(jié)的數(shù)據(jù)
{
        u8 i;       
       
        CS_SPI_LOW;                                                                                                                                                //CS=0
        SPI_Write_Byte(WREN);                                                                                                        //寫入"寫使能命令"
        CS_SPI_HI;                                                                                                                                                //CS=1       
        delay_us(10);                                                                                                                                        //延時(shí)
       
        CS_SPI_LOW;                                                                                                                                                //CS=0
        SPI_Write_Byte(WRITE);                                                                                                //寫入"寫命令"
        SPI_Write_Byte(Addr);                                                                                                        //SPI寫入地址
        SPI_Write_Byte(WriteByte);                                                                                //寫入數(shù)據(jù)
        CS_SPI_HI;                                                                                                                                                //CS=1,寫入之后要把CS拉高,才能完成寫入
        delay_us(10);                                                                                                                                        //延時(shí)
       
        do
        {               
                CS_SPI_LOW;                                                                                                                                        //CS=0
                SPI_Write_Byte(RDSR);                                                                                                //寫入讀取STATUS狀態(tài)位命令
                i=SPI_Read_Byte();                                                                                                        //讀取STATUS狀態(tài)位中的:寫使能位=WEL,此位為1時(shí),可以寫入
                CS_SPI_HI;                                                                                                                                        //CS=1
        }                                                                                                                                                                                        //讀取STATUS狀態(tài)位中的:寫進(jìn)行位=WIP,此位為1時(shí),正在寫入
        while(i&0x01);                                                                                                                        //等待寫進(jìn)行位變成0*/               
}

回復(fù)

使用道具 舉報(bào)

ID:491796 發(fā)表于 2023-3-19 19:57 | 顯示全部樓層
Y_G_G 發(fā)表于 2023-3-18 21:54
25系列的EEPROM的基本操作幾乎是完全一樣的
CS的時(shí)序很重要的
這是一個(gè)寫入函數(shù),你參考一下

應(yīng)該不是邏輯的問(wèn)題,我試了下,在“下載程序”后,這個(gè)引腳讀高電平根本讀不出來(lái)。在仿真的時(shí)候可以讀出高電平。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表