SPI,作为芯片间管理总线,简单且效率高。
具体SPI的时序,随便百度一下就可以看到图。理解一下,其工作模式、上升沿下降沿就可以了。
我关心的是:SPI的命令集,如何定义?相对i2c、uart等接口的命令集,是否有可能相同或很类似???
我没有找到专门总结SPI指令集的文档。根据不同的从器件类型,我罗列下列几个命令集:
1、SD卡的SPI命令集
建议参考:http://www.cnblogs.com/lb0620/archive/2011/10/15/2213135.html。
命令详细一定要看:http://blog.tianya.cn/blogger/post_read.asp?BlogID=3928185&PostID=37479966。
写的比较清楚了。我摘要一下:
a、6字节组成,其中Byte1:0 1 x x x x x x是命令字;Byte2-5:Command Arguments,命令参数;Byte6:前7位为CRC校验位,最后一位为停止位0(注:CRC7?不知道多项式)
b、SD卡命令共分为12类,分别为class0到class11,不同的SDd卡,主控根据其功能,支持不同的命令集。
c、命令虽多,可归类为:1、各种寄存器读写;2、单块读写;3、多块读写;4、特殊或系统操作。
借鉴:在写sd卡多块后,如果出现写错误,会查询好块(然后重发坏块吧);读sd卡,如果出现错误,没看到怎么处理??
2、flash的SPI指令集
参考:http://blog.sina.com.cn/s/blog_533074eb0101ast4.html
常用的,SPIFlash都支持的,并且不同厂家都共有的命令有:
01 写状态寄存器 ;02 写 ;03 读 ;05 读状态寄存器 ;06 写使能 ;D8 擦除 。
读芯片ID的指令,各家不同,可尝试9F AB 90 15。
借鉴:flash有ram buffer区;可以对buffer操作,也可以对flash操作(页操作、字节操作)。
今天想看一下M25P80的手册,st公司的,但网站上没有。到micron网站上看,有nor flash的带spi接口。顺便了解了一下:nor flash和 nandflash的区别:见http://www.eepw.com.cn/article/57419.htm。
在1MB-16MB上,主流是nor flash;而nand flash在8MB-GB;nand flash便宜但操作困难;nor flash可直接运行(少坏区)且有ram buffer。
我下载了M25P80的手册,赋值其指令集如下:
从命令上看,只能按页写;没看到怎么下载2个fpga;有section组织;该芯片没有提ram buffer。
3、小结
spi时序,就类似165移位寄存器类的时序。spi上运行的instruction,指令集也是根据各自芯片来得。