测试利用 MK60DN512的SPI接口,之前一贯利用SPI做从机模式正常通信,目前修正成作为主机模式,外接AT26DF081A Flash芯片用于数据参数的保存,SPI四线模式一样平常都具有4个引脚,CS片选,SCK时钟, MISO 主入从出脚,MOSI主出从入引脚。
这里 MCU MK60DN512有片选PCS和时钟SCK管脚,但却没有MISO和MOSI这两个管脚,SIN和SOUT,以是按照SIN脚接SI, SOUT脚接SO。
Flash引脚定义如下:
MCU MK60DN512 做SPI主模式时所用的引脚接线定义如下:
问题详细描述和剖析
硬件连接后,创造SPI始终读不到 Flash的信息,最大略的 ID信息回读的数值返回的 00。通过SPI_POPR寄存器读到的 RXDATA数值始终是不变的。这时担心引脚有非常,将SPI SIN引脚配置成GPIO口模式,去读外部引脚电平,创造能够读到外部引脚的高低电平状态,因此引脚是正常的。是否是接线有问题呢?
查看数据手册,不管是从机还是主机模式,SIN只能做输入而SOUT只能做输出。
那么作为主机模式的时候,SIN是串行时钟输入,那么须要连接从机的输出引脚;SOUT是串行时钟的输出,那么须要连接从机的输入引脚。MK60开拓板测试片外Flash硬件连线修正后连接如下。
将Flash引脚的第2脚 DO连接B19(PTA17) SIN;将Flash引脚的第5脚 DI连接B20(PTA16) SOUT;
将Flash引脚的第6脚 CLK连接B15 (PTA15);将Flash引脚第1脚 CS连接A16(PTA14)
烧录程序后,测试串口打印信息如下,可以显示0x1F, 0x45, 0x01, 0x00解释能够正常读到Flash的ID信息。后面是擦写Flash,然后回读测试。同时仿真调试时,在SPI POPR的RXDATA寄存器里面也可以看到相应的寄存器变革。
问题办理方案
因此,SPI接线的时候,首先要判断SPI是事情在什么模式,MK60的DSPI可以配置成主机或者从机模式,也便是说当DSPI做主模式MSTR=1时,SIN引脚接MISO,SOUT接MOSI,做从机模式,设置MSTR=0时SIN接MOSI,SOUT接MISO,这点在硬件设计时需把稳。
参考文档:
https://www.nxp.com.cn/docs/en/data-sheet/K60P144M100SF2V2.pdf