flsgavin / SDcard_rw_demo

SD card read/write demo, based on SPI
3 stars 0 forks source link

有关时钟的频率问题 #1

Closed UkiTenzai closed 1 year ago

UkiTenzai commented 1 year ago

hello,我想用我的basys3开发板,完成类似的sd卡读写设计。但是最后led灯闪烁,证明没有读写成功。我注意到你的代码中使用了clk_wiz的ip核来生成另外的时钟信号,但是代码中并没有给出ip核的详细配置,也没有给出有关生成的时钟信号的频率信息。

我想请问一下,这个时钟信号的频率应该是多少比较合适呢?如果我不加ip核,直接用板卡的100MHz的时钟来进行控制,这样可以吗?

btw,我用micropython进行过sd卡读写测试(spi协议),没有问题,证明我的硬件应该没有问题。

flsgavin commented 1 year ago

抱歉,对于这个时钟频率没什么印象了。但我记得应该是低于100MHz的,你可以尝试使用更低频率,例如50MHz的时钟进行测试

UkiTenzai commented 1 year ago

好的,谢谢,我今天用pll的ip核试试看。另外,我现在找到的bug是,sd卡初始化没问题,但是在写入时,一开始sd_mosi不变为0,我还在debug

UkiTenzai commented 1 year ago

还有一个很重要的问题,你当时用的sd卡的存储空间是多大,我这个是512MB。 我看了一下你有关寻址的代码,我猜是4GB?

flsgavin commented 1 year ago

还有一个很重要的问题,你当时用的sd卡的存储空间是多大,我这个是512MB。 我看了一下你有关寻址的代码,我猜是4GB?

我记得是8GB,这个确实会有影响的,SD卡有新旧两个版本的,这个应该是新版本,具体可以看一下SD卡的SPI初始化命令

UkiTenzai commented 1 year ago

我的是新版本(v2),我觉得我或许需要修改一下有关指令的内容,或者买新的卡

flsgavin commented 1 year ago

这个代码是没问题的,但是真正使用sd卡还是要用axi-spi这个ip核,很好用

UkiTenzai commented 1 year ago

好的,我研究一下

UkiTenzai commented 1 year ago

现在倒是灯常亮了,但是又有新的问题,我在Verilog中设置的是向0x0041e000写数据,可是我写完后,用winhex查看sd卡,发现这个地址的位置的数据还是0,有没有可能,写数据时被寻址到了其它位置? 你是否还记得,你测试时写的数据的特点是什么,一个等差数列?

UkiTenzai commented 1 year ago

还有,这个是写一轮,读一轮,就不继续测试了吗

UkiTenzai commented 1 year ago

我大概都明白了,写磁盘不能完全的随机写入,一般需要以块为最小单位写入