jennyzhaojie 发表于 2021-2-28 10:32

【RISC-V MCU CH32V103测评】W25Q16读写及应用

<p>在老版的CH32V103开发板上带有W25Q16存储器,可存放图库和字库等相对固定的数据内容。而在新版的开发板上,该器件被去除了,但我们不妨为它配上一个外挂的W25Q16模块来使用。</p>

<p>模块的接口电路如图1所示:</p>

<p></p>

<p>图1 模块接口电路</p>

<p>&nbsp;</p>

<p>在老版的开发板上,W25Q16的读写电路如图2所示,为此我们可以为片选引脚CS添加一个10K的上拉电阻。</p>

<p></p>

<p>图2 &nbsp;板上W25Q16读写电路</p>

<p>&nbsp;</p>

<p>外挂模块与开发板的连接形式如图3所示:</p>

<p></p>

<p>图3 外挂模块连接</p>

<p>&nbsp;</p>

<p>具体的引脚连接关系为:</p>

<p>&nbsp;&nbsp;&nbsp; CS&nbsp;&nbsp; &mdash;&mdash; PA2</p>

<p>&nbsp;&nbsp;&nbsp; DO&nbsp;&nbsp; &mdash;&mdash; PA6(SPI1_MISO)</p>

<p>&nbsp;&nbsp;&nbsp; WP&nbsp;&nbsp; &mdash;&mdash; 3.3V</p>

<p>&nbsp;&nbsp;&nbsp; DI&nbsp;&nbsp; &mdash;&mdash; PA7(SPI1_MOSI)</p>

<p>&nbsp;&nbsp;&nbsp; CLK &nbsp;&mdash;&mdash; PA5(SPI1_SCK)</p>

<p>&nbsp;&nbsp;&nbsp; HOLD &mdash;&mdash; 3.3V</p>

<p>&nbsp;</p>

<p>测试程序可直接使用厂家提供的例程,其主程序如下:</p>

<pre>
<code class="language-cpp">int main(void)
{
         u8 datap;
         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);
}</code></pre>

<p>&nbsp;</p>

<p>有程序可以看出,它不但对W25Q16有效,而且几乎对整个W25Q效率都是有效的。</p>

<p>经读写验证,其效果如图4所示,说明验证成功。有了这个基础,我们就可以为开发板构建一个自己的字库了。</p>

<p></p>

<p>图4 读写效果</p>

Jacktang 发表于 2021-2-28 10:35

<p>看来外挂的外挂的W25Q16也照样用</p>

jennyzhaojie 发表于 2021-2-28 10:37

Jacktang 发表于 2021-2-28 10:35
看来外挂的外挂的W25Q16也照样用

<p>没错!<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>

peter91688 发表于 2021-2-28 22:09

很有实用价值哦,感谢感谢

jennyzhaojie 发表于 2021-3-1 21:34

peter91688 发表于 2021-2-28 22:09
很有实用价值哦,感谢感谢

<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>

freebsder 发表于 2021-3-1 22:00

<p>经典spi设备,谢谢分享!</p>
页: [1]
查看完整版本: 【RISC-V MCU CH32V103测评】W25Q16读写及应用