STM32芯片IO口状态设置错误不一定会影响程序功能。具体原理我不懂,但是我确实遇到了这种情况,给大家分享一下吧。
用STM32F103芯片去驱动墨水屏,总共就用到了6个IO口,分别作为SCL,SDA,CS,REST,DC,BUSY使用,用20P的灰色排线将这6个IO口连接到墨水屏驱动板上面。
出现问题:
前期一直都是STM32芯片驱1个屏幕时没有任何问题,但是最近需要投RA测试了,需要将5个屏幕及其周边电路并联驱动。并联驱动时就出问题了,当灰色排线缩短(约5cm)可以正常驱动,增长后(约15cm)就无法正常显示,会刷一个画面然后漏掉几个画面。
硬件测试:
所有点位的电流、电压及信号时序,单独和5个并联的是一模一样。
最后没有办法只能让软件找下程序方面的原因,但由于这个项目更新了几代了,程序员也更换了好几个,所以这个程序并不完全是他写的,他前前后后也看了一天,没有发现任何问题。并且他的依据是之前从没有这种问题,所以还是偏向硬件的原因。
最后结局:
最后部门经理知道了这事,他直觉也是软件这边有问题。把代码一行一行撸完后,才发现有一个cs信号(片选信号,高电平有效),程序设置为上拉输入状态!!乍一看是不是没问题??但是STM32是主机,对于STM32来说应该是输出才对!
更改该IO口状态设置后测试,果然不再出现异常。
疑问:MCU的IO口设置状态错误,为什么1V1的时候从来没发现问题,1V5的时候确实100%异常?希望有懂的大佬给解惑一二。 |