【N32WB031_STB开发板测评】+W25Q16模块的读写
<div class='showpostmsg'><p>在N32WB031的例程中提供了基于W25Q128的读写测试程序,但对于W25Q系列的不同存储芯片,其芯片识别ID是不同的。</p><p >为了测试手头的W25Q16模块,需多例程进行相应的修改。</p>
<p >例如对于W25Q128的定义为:</p>
<p >#define sFLASH_W25Q128_ID 0x00EF4014</p>
<p >而对于W25Q16来说需进行如下的修改:</p>
<p >#define sFLASH_M25Q16_ID 0xEF4015</p>
<p >#define sFLASH_ID sFLASH_M25Q16_ID</p>
<p >W25Q16模块与开发板的连接关系为:</p>
<p >CS---PA0</p>
<p >CLK---PA1</p>
<p >DO---PA3</p>
<p >DI---PA2</p>
<p >为便于以LED来指示测试的结果,对LED的定义为:</p>
<p >#define LED1_PORT GPIOB</p>
<p >#define LED1_PIN GPIO_PIN_0</p>
<p > </p>
<p >#define LED2_PORT GPIOA</p>
<p >#define LED2_PIN GPIO_PIN_6</p>
<p>对W25Q16模块进行读写的测试主程序为:</p>
<pre>
<code class="language-cpp">int main(void)
{
LedInit(LED1_PORT, LED1_PIN);
LedInit(LED2_PORT, LED2_PIN);
LedOff(LED1_PORT, LED1_PIN);
LedOff(LED2_PORT, LED2_PIN);
sFLASH_Init();
FlashID = sFLASH_ReadID();
if (FlashID == sFLASH_ID)
{
sFLASH_EraseSector(FLASH_SectorToErase);
sFLASH_WriteBuffer(Tx_Buffer, FLASH_WriteAddress, BufferSize);
sFLASH_ReadBuffer(Rx_Buffer, FLASH_ReadAddress, BufferSize);
TransferStatus1 = Buffercmp(Tx_Buffer, Rx_Buffer, BufferSize);
sFLASH_EraseSector(FLASH_SectorToErase);
sFLASH_ReadBuffer(Rx_Buffer, FLASH_ReadAddress, BufferSize);
for (Index = 0; Index < BufferSize; Index++)
{
if (Rx_Buffer != 0xFF)
{
TransferStatus2 = FAILED;
}
}
if((TransferStatus1 == SUCCESS) && (TransferStatus2 == SUCCESS))
{
/* OK: Turn on LED1 */
LedOn(LED1_PORT, LED1_PIN);
}
else
{
/* Error: Turn on LED2 */
LedOn(LED2_PORT, LED2_PIN);
}
/* TransferStatus2 = PASSED, if the specified sector part is erased */
/* TransferStatus2 = FAILED, if the specified sector part is not well erased */
}
else
{
/* Error: Turn on LED2 */
LedOn(LED2_PORT, LED2_PIN);
}
while (1)
{
}
}
</code></pre>
<p>在编译下载程序后,其测试效果如图所示,由于LED1被点亮说明测试成功;反之若去掉W25Q16模块的电源,则LED2被点亮说明测试失败。</p>
<p >有了W25Q16模块这样的外挂存储器,可以有效地对存储空间进行扩展。</p>
<p >图1 读写状态</p>
<p > </p>
<p > 图2 未连接状态 </p>
<p > </p>
<p > </p>
<p > </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>W25Q128和W25Q16寄存器应该是一样的吧?就是存储大小不一样?</p>
wangerxian 发表于 2023-5-18 13:59
W25Q128和W25Q16寄存器应该是一样的吧?就是存储大小不一样?
<p>是,此外还应注意其识别ID的不同。</p>
66666
页:
[1]