SPI作为一种常见的主控芯片跟从芯片之前通信方式,是广泛使用的。毕竟容易接触到比如存储芯片,驱动芯片,电源芯片等等。
由于我之前有在其他平台上用过W25x系列的存储芯片,于是想试一下STM32开发版跟W25x芯片的SPI通信,而且我查了一下原理图
从原理图上也可以看到是有这个W25X64位置的
然后我在板子上找了U2这个位置,却发现上面没有焊接芯片
也就是说,是预留的,属实有些尴尬
既然没能跟外网芯片通信,那我们就尝试一下简单的SPI发送就好了
根据芯片引脚图,我们可以看到PA5、PA6、PA7分别是SPI1的SCK,MISO和MOSI引脚,然后我们再找个引脚当做CS教,那么就可以通过这4个引脚来测试SPI功能了。
找了个SPI例程,大概配置后,烧录到板子上,接上逻辑分析仪,发现怎么都采集不好波形,连基本的时钟信号都采集不好,是个令人头疼的地方。明明8个时钟信号,却只能采集到3/4个,然后就是多次重新插拔信号线,多次开启关闭软件,甚至怀疑我手里的逻辑分析仪是不是坏了。经过两天断断续续的尝试后,觉得大概率是逻辑分析仪的问题。然后计划上网再买一个逻辑分析仪了。
就在淘宝看逻辑分析仪的时候,看哪个设备好,我就想着,这次买个采样率更高一点的吧,这样也能采集到更高频率的信号,然后看看我手里的设备,最高只支持24M。按照设备的推荐,24M采样率一般就只能采集个2M及以下的信号了。
此时突然顿悟,会不会是设置了ST的SPI频率太高,导致逻辑分析仪采集不好呢。说干就干,把SPI时钟分频由4分频改为64分频。
再编译并烧到板子上, 用逻辑分析仪一采集,立马就好了
输出的值跟程序设置的一致,那就是SPI频率的问题。哈哈哈哈哈犯了一个低级错误,还好及时发现,省下一笔买逻辑分析仪的钱了。
至此,SPI模块测评结束