【RISC-V MCU CH32V103测评】W25Q16读写及应用
[复制链接]
在老版的CH32V103开发板上带有W25Q16存储器,可存放图库和字库等相对固定的数据内容。而在新版的开发板上,该器件被去除了,但我们不妨为它配上一个外挂的W25Q16模块来使用。
模块的接口电路如图1所示:
图1 模块接口电路
在老版的开发板上,W25Q16的读写电路如图2所示,为此我们可以为片选引脚CS添加一个10K的上拉电阻。
图2 板上W25Q16读写电路
外挂模块与开发板的连接形式如图3所示:
图3 外挂模块连接
具体的引脚连接关系为:
CS —— PA2
DO —— PA6(SPI1_MISO)
WP —— 3.3V
DI —— PA7(SPI1_MOSI)
CLK —— PA5(SPI1_SCK)
HOLD —— 3.3V
测试程序可直接使用厂家提供的例程,其主程序如下:
int main(void)
{
u8 datap[SIZE];
u16 Flash_Model;
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
SPI_Flash_Init();
Flash_Model = SPI_Flash_ReadID();
switch(Flash_Model)
{
case W25Q80:
printf("W25Q80 OK!\r\n");
break;
case W25Q16:
printf("W25Q16 OK!\r\n");
break;
case W25Q32:
printf("W25Q32 OK!\r\n");
break;
case W25Q64:
printf("W25Q64 OK!\r\n");
break;
case W25Q128:
printf("W25Q128 OK!\r\n");
break;
default:
printf("Fail!\r\n");
break;
}
printf("Start Erase W25Qxx....\r\n");
SPI_Flash_Erase_Sector(0);
printf("W25Qxx Erase Finished!\r\n");
Delay_Ms(500);
printf("Start Read W25Qxx....\r\n");
SPI_Flash_Read(datap,0x0,SIZE);
printf("%s\r\n", datap );
Delay_Ms(500);
printf("Start Write W25Qxx....\r\n");
SPI_Flash_Write((u8*)TEXT_Buf,0,SIZE);
printf("W25Qxx Write Finished!\r\n");
Delay_Ms(500);
printf("Start Read W25Qxx....\r\n");
SPI_Flash_Read(datap,0x0,SIZE);
printf("%s\r\n", datap );
while(1);
}
有程序可以看出,它不但对W25Q16有效,而且几乎对整个W25Q效率都是有效的。
经读写验证,其效果如图4所示,说明验证成功。有了这个基础,我们就可以为开发板构建一个自己的字库了。
图4 读写效果
|