非常简单已完成仿真SPI各个模块的构建后,意味着利用示波器捕捉信号的时序当然是过于的。虽然单片机作为SPI主机输入数据时的信号很更容易捕捉,但是从机收到的数据(即主机加载MISO信号时序),还要去找个SPI模块的外设器件,这样主机收到、从机对系统。
比如SPI-FLASH,此处去找来一片型号为W25Q16的FLASH,检验仿真SPI模块与FLASH器件的通信正确性。要想要娴熟用于W25Q16,要多下功夫自学熟知Spec;想要通晓SPI-FLASH,更要对JEDEC的组织下的SFDP(SerialFlashDiscoverableParameters,串行存储器可找到参数)规范有个了解和理解。国外网站,读取快,这里提早给拦个图贴一下:从W25Q16的手册可查询各个模块,为了检验SPI的通信正确性,首先展开最简单加载JEDEC规范定义的芯片ID指令(0x9F)。根据JEDECID(9Fh)指令的时序图,程序里利用撰写好的SPI模块,发送到指令并接收数据。
利用这个指令可以辨别撰写的仿真SPI模块发送到、接收数据的正确性。看完上一篇《嵌入式硬件通信接口协议-SPI(二)分层架构设计仿真模块》的读者,在此我对代码略为做到个解释,比起于上一篇文章中提到的源码,此处对加载一个字节数据的函数模块做到个改动:改动后的思路是以参数的形式起源于地址,把朗读的数据存到该地址里,这样模块的返回值就可以用作回应模块的准确继续执行与否。
这么做到,主要考虑到在有所不同平台重制时,如果用硬件SPI模块,有些硬件SPI模块用于的过程,对寄存器用于while死循环的方式等候的,所以要考虑到超时情况。因此有适当腾出返回值作为函数继续执行的结果,而确实加载到的数据放到所传地址参数指向的空间里。
本文来源:电子mg官方网站-www.rajeshsegu.com