HD32L170JATA芯片单总线通讯时异常通讯问题解决
HD32L170JATA芯片单总线通讯时异常通讯问题解决
背景说明:
1.开发环境 KEIL V5.25,MCU:华大HD32L170JATA
2.单总线:MCU与传感器进行通讯,单线即可输入也可输出,以不同的高低电平频占比区别0,1,及起始信号.
3.原单总线程序从华大的130芯片上移植过来,130芯片上单总线功能正常,但移到170JATA后单总线通讯异常,不能正常通信
4.单总线通讯速度极快,一个电平约在几十个微秒
现象分析:
通过逻辑分析仪抓取单总线通信波形:
发现在上面红色圆圈处有异常的一个低电平信号,放大看大概有4us左右;经分析此信号是单总线由输入切换到输出时产生的;此干扰信号会让传感器认为总线异常。
解决方法:
修改单总线输入输出切换函数,在输出之前先写IO的输出寄存器为1.部分代码如何:
原因分析:
有可能是华大170芯片IO在切换到输出时,输出寄存器的值存在一个不确定状态,当IO方向一切换到输出时,立刻产生一个不稳定的电平输出,此时间很短,但对于速度极快的单总线来说却是致命的。而原来130芯片上,不存在这个不稳定状态,稳定输出1。所以无此干扰问题。