本帖最后由 jinglixixi 于 2020-11-21 08:23 編輯
在CH32V103開發(fā)板上配置了W25Q16存儲(chǔ)器,其接口電路如圖1所示。
圖1 接口電路
此外,官方還提供了測(cè)試?yán)。其?shí),從程序看它是一個(gè)W25QXX系列的廣譜測(cè)試程序,所支持的芯片有: W25Q80、 W25Q16、 W25Q32、W25Q64及W25Q128,除了容量不同外,也就剩下名稱不同了。 由于是例程,大家都能得的到,程序就不在這里提供了。 其實(shí)際的測(cè)試過程主要有下列語句實(shí)現(xiàn): printf("Start Write W25Qxx....\r\n"); SPI_Flash_Write((u8*)TEXT_Buf,0,SIZE); printf("W25QxxWrite Finished!\r\n"); Delay_Ms(500); printf("Start ReadW25Qxx....\r\n"); SPI_Flash_Read(datap,0x0,SIZE); printf("%s\r\n", datap ); Delay_Ms(500); printf("Start Erase W25Qxx....\r\n"); SPI_Flash_Erase_Sector(0); printf("W25Qxx EraseFinished!\r\n"); Delay_Ms(500); printf("Start ReadW25Qxx....\r\n"); SPI_Flash_Read(datap,0x0,SIZE); printf("%s\r\n", datap ); 也就是說,它是按照這樣的流程來處理的,即: 寫入-->讀取--->顯示-->刪除-->讀取 在對(duì)程序編譯后,給出的提示為: 天哪,23個(gè)錯(cuò)誤! 仔細(xì)一看,錯(cuò)誤只是一種,原始而又低級(jí),竟像使用單片機(jī)一樣直接通過賦值0和1來輸出高低電平! 以函數(shù)SPI_Flash_ReadID()為例,其原內(nèi)容為:
修改后,其內(nèi)容則為:
經(jīng)再次編譯,其結(jié)果為:
在完成程序下載后,其運(yùn)行結(jié)果如圖2所示。
圖2 運(yùn)行結(jié)果
完了,沒戲呀!讀寫失敗。 看過一遍原理圖之后,才發(fā)現(xiàn)原來片選信號(hào)竟被截流了,起連接作用的電阻R11原來沒有焊。 找到問題就好辦了,較R11的位置直接短接即可。 再進(jìn)行測(cè)試,一切OK,其運(yùn)行效果見圖3所示。
圖3 正確結(jié)果
有了W25Q16存儲(chǔ)器,后面再遇到存儲(chǔ)容量緊張的問題就好辦了,直接扔給W25Q16即可。
|