- 论坛徽章:
- 0
|
本帖最后由 liqunfeifei 于 2010-09-30 01:05 编辑
spi nor flash已经可以执行读指令。目前采用手动片选的方式传输数据。
整个调试的过程泥泞坎坷、充满疑惑,不愿意相信任何一个寄存器的默认值,调通之后才豁然开朗。其中有几个值得注意的地方,也是一直牵绊我们的地方:
1. SPI总线是以数据交换的方式进行通信。每一个时钟周期内master和slave必定会发出并且接收到1bit的数据。也就是说,如果同时使能rx fifo和tx fifo,rx fifo收到数据的数量将等于tx fifo发出数据的数量。因此,master发出指令之后需要继续发送数据以换得slave传回的数据。
2. 片选信号的低电平和高电平控制一次指令执行的起始和结束。所以,为保证片选使能之后第一个周期就能发送有效的指令,需要先将指令存入fifo再执行片选。
3. 不知道这块芯片接在SPI总线的channel0还是channel1,还有不清楚其他一些寄存器的值。只有试了。不过到最后它们看上去都变得很自然。
接下来我们的工作可以分成两部分。一是尝试用auto方式传输数据,也许这种方式能大量简化操作;二是根据现有的操作方式完善api,完成page program和sector erase等方法,最终把nor flash注册到flash子系统。
##更正:
前面第二点有错误.片选信号确实是控制指令的起始和结束,尤其是某些指令结束后必须及时把片选拉高.但是,似乎决定数据交换的时钟信号只是在发送数据时才产生.因此先片选,再发送数据到rx fifo也能成功执行指令.而且这样更符合使用习惯,也使代码实现更方便. |
|