今日测试一款2.4G无线芯片YXW6553E-YX-2.4G-7T-TX
,用于控制远端电机。先是写了一段循环测试代码,间隔正转反转,跑起来没问题。
然后将它封装为两个函数up()
和down()
,在业务代码中每次执行一次down()
后间隔5s,然后再执行up()
。结果发现up()
始终无法将信号发出。使用逻辑分析仪检查GPIO已经正确发出脉冲,从芯片引脚测试也能测到正确的电平变化。百思不得其解,原厂的人也不知道原因。
业务代码:
down()
time.sleep(0.25)
stop()
time.sleep(5)
up()
time.sleep(0.25)
stop()
抓到波形是正常的:
经过几乎一天的折腾,期间尝试将脉冲时间改为1s,问题依旧。然后尝试交换两个函数up()
和down()
的顺序,发现变为down()
无法执行。然后思考良久,觉得这两个函数之间唯一的变量就是延时,检查代码发现测试的代码延时与最终业务代码延时不同。于是尝试修改两个函数之间的延时为4s,结果就正常了!尝试改为4.5s也正常!真是诡异!
然后我换了一另外一款MCU开发板做了同样的事情,延时5s又是正常的。所以问题根本原因到底是为了什么,尚未找到。