|
今晚的进展(周六)
记得我以前每次调时序,基本的套路都是
1.看能不能找到一个例程,然后重构它,再利用它更进一步看懂数据手册的一部分内容;
2.把例程变成自己的代码;
3.一般例程,你最后会发现它都是很随心地做成那种不能直接使用的方式
比如 同步方式,比如延时刻意加大,这种保守做法往往使得本来可以很高速很灵活的片子变得很一般。
今晚也就到了这一步。
我还在看其 读写时序,希望能更了解它的具体的读写时间延迟等细节。
这样我可以定位这个 接口到底可以多块,同时也为下一步把它集成到uS中——因为,它首先是一个SPI设备,然后才是M25P系列FLASH存储器,最后才是M25P80 1M FLASH存储器。
此外,我现在是在1M(实际机器周期)系统上跑,对于ns为单位的时序来说,它们几乎可以不考虑,然而我还会考虑到以后我可能会用在上几十M,上百M的系统里。
所以这些都需要考虑。
但今天基本弄得很乏了。所以暂时押下。
不想说太多像借口一样的话,不过,确实可能,调一个接口,即使不考虑上述要求,需要的时间是比较多的。所以很可能这一周只是开了一个头。
完全不知道,也完全没有测试。
4.测试。
一般我都是 以 读写为最基本单元测试——当然一般不会那么好运的。
最后我就会利用逻辑分析仪 一个一个单元,想办法拆开来单独测试,直到测好,再集成起来,直到完成。
这个过程有时比较快,有时很纠结(当然有的也因为犯了一些和时序无关的弱智错误,比如ds18b20,我犯的错误居然是读函数没有返回读到的结果)
比如我调模拟i2c时,虽然犯了很多愚蠢的错误,但前后我就用了一天外加4个小时搞定的。
这次,感觉这个SPI其实比i2c要更简单一些。
情况应该不会更糟糕。![]() |
|