锆石科技开发板例程运行不对的问题
<p>我有锆石科技开发板的资料,正在听视频教程软核部分。</p><p> </p>
<p>听到SPI那一讲,但是锆石科技开发板让我卖了,又买了一个简单的。</p>
<p>芯片型号都一样。</p>
<p>运行SPI_SD卡例程</p>
<p></p>
<p>只是复位成功,初始化和写都失败。不过单独用vreilog程序是可以的。</p>
<p>请问高手,可能是哪里出了问题?谢谢!</p>
<p>初始化代码:</p>
<pre>
<code>alt_u8 Spi_SDInit(void)
{
alt_u8 r1; //响应变量
alt_u8 time = 0; //超时变量
alt_u8 r7; //响应变量
//发送CMD8检测接口条件,若r1返回0x01,r7返回0x000001aa,则表示检测成功
do{
r1 = Spi_SDSendCmd(8,0x000001aa,0x87); //发送CMD8命令
r7= Spi_SDReadByte(); //读取响应0x00
//r7 <<= 8;
r7= Spi_SDReadByte(); //读取响应0x00
//r7 <<= 8;
r7= Spi_SDReadByte(); //读取响应0x01
//r7 <<= 8;
r7= Spi_SDReadByte(); //读取响应0xaa
time++;
if(time > 254) return 1; //超时退出返回1
}while((r1 != 0x01) && (r7 != 0x000001aa)); //等待r1返回0x01,r7返回0x000001aa
time = 0;
//此处省略发送CMD58命令
//发送CMD55+ACMD41,收到0x00表示成功
do{
r1 = Spi_SDSendCmd(55,0,0xff); //发送CMD55命令
if(r1 == 0x01) r1 = Spi_SDSendCmd(41,0x40000000,0xff); //发送ACMD41命令
time++;
if(time > 254) return 1; //超时退出返回1
}while(r1 != 0x00); //等待返回0x00
//此处省略发送CMD58命令
return 0; //初始化成功,则返回0
}</code></pre>
<p>调试发现r1=1,是对的,可是r7是个很大的数。</p>
<p>新买的他们不提供技术支持?</p>
nmg 发表于 2023-7-13 11:06
新买的他们不提供技术支持?
<p>我印象里是不是他们倒闭了, 几年前我记得官网就进不去了, 不知道是不是说的同一家公司<img height="28" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/smiling-face-with-open-mouth-and-cold-sweat_1f605.png" width="28" /></p>
<p>确保开发板和SD卡都获得了足够的电源。SD卡需要特定的电源电压,如果电压不足,可能会导致读写失败。</p>
led2015 发表于 2023-7-13 21:15
确保开发板和SD卡都获得了足够的电源。SD卡需要特定的电源电压,如果电压不足,可能会导致读写失败。
<p>单独用vreilog是可以读写成功的</p>
<div class='shownolgin' data-isdigest='no'>nmg 发表于 2023-7-13 11:06
新买的他们不提供技术支持?
<p>新买的教程里面没有软核</p>
</div><script>showreplylogin();</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>
页:
[1]