ch32v103的usart3的TX管脚输出低电平

    今天测试时发现,ch32v103c8t6的usart3,使用PB10和PB11,出现上电后在没有触发输出数据的情况下TX脚一直为低电平的情况。但是在仿真模式下运行是正常通讯的。仿真时按红色方块停止也会变为低电平。

    代码是将原来uart1移植到uart3的,uart1时没发现这个问题,使用DMA进行收发。


    请各位分析下原因?目前给该管脚加上拉也不行,应该是内部初始化时失效了。但是主程序还是正常循环的。

经尝试,等cpu运行一段时间后,再次初始化次,可以正常连接上了。目前做了一个判断,如果通讯中断次数达到阈值就重启通讯模块,暂时解决了,但是原因还是不明。


您好,你的意思是空闲状态下串口3 Tx 引脚为低电平导致无法正常通讯么?附件为我的测试例程,当没有数据收发时,Tx引脚电平为高电平,数据通信正常,你可以看一下,后续若有问题,可将问题发我邮箱联系(lzs@wch.cn)

icon_rar.gifCH32V103 串口3数据收发.zip



今天再次测试了下,上面的代码能正常发送数据。


今天再次测试了下,上面的代码能正常发送数据。

我开发的是一个控制器,调试时控制器单独供电。当设备先上电,再上电控制器时会出现上面说的通讯卡住的情况。但是如果控制器从设备上取电,就没这个问题。我的程序内使用定时器做超时计时,正常情况下,当控制器发送指令,设备没有回应达到超时阈值,控制器就会再次发送指令。但一旦卡住,tx线就会一直拉低,导致485卡死。


目前使用总的通讯超时来重启通讯的uart和dma  这样就能解决问题。目前先这样处理了。实际使用时控制器从设备上取电,这个状态下测试没发现异常问题


上面问题发现原因:

起因是使用其他型号晶振,没有更改负载电容的容值。晶振在能启动和不能启动的边沿部分。启动后能勉强启动晶振,但是过了一会就会自动切换回内部晶振了。可以通过查RCC->CFGR0变为0来判断。


调整负载电容后程序运行正常了。


只有登录才能回复,可以选择微信账号登录