|
發(fā)布時間: 2023-3-17 22:08
正文摘要:單片機(jī)用的是dspic33fj256mc710a,eeprom用的是at25128,spi通信; 在在線調(diào)試的時候正常,可以正常讀取,正常寫入; 但是下載程序到板子里面運行就不行,從eeprom里面讀的數(shù)據(jù)都是0x00,通過邏輯分析儀抓波形發(fā)現(xiàn) ... |
Y_G_G 發(fā)表于 2023-3-18 21:54 應(yīng)該不是邏輯的問題,我試了下,在“下載程序”后,這個引腳讀高電平根本讀不出來。在仿真的時候可以讀出高電平。 |
|
25系列的EEPROM的基本操作幾乎是完全一樣的 CS的時序很重要的 這是一個寫入函數(shù),你參考一下 void Write_Data_25AA(u8 WriteByte,u8 Addr)//向指定地點寫入一個字節(jié)的數(shù)據(jù) { u8 i; CS_SPI_LOW; //CS=0 SPI_Write_Byte(WREN); //寫入"寫使能命令" CS_SPI_HI; //CS=1 delay_us(10); //延時 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); //延時 do { CS_SPI_LOW; //CS=0 SPI_Write_Byte(RDSR); //寫入讀取STATUS狀態(tài)位命令 i=SPI_Read_Byte(); //讀取STATUS狀態(tài)位中的:寫使能位=WEL,此位為1時,可以寫入 CS_SPI_HI; //CS=1 } //讀取STATUS狀態(tài)位中的:寫進(jìn)行位=WIP,此位為1時,正在寫入 while(i&0x01); //等待寫進(jìn)行位變成0*/ } |
Powered by 單片機(jī)教程網(wǎng)