还有个问题需要追问一下,我单片机程序把端口设置为开漏或高阻了。但在实际实用中,单片机通电后可能长时间收不到串口数据,这种情况下看门狗1秒就复位一次,在复位的一瞬间,串口又恢复成默认的准双向口。此时引脚输出电压变成5V,然后在main函数里再设置成开漏或高阻,电压降到1.5V左右。在这种经常性高压冲击下。图中那个330欧的电阻是不是就不能短接了,实际中这个电阻用多大的值比较合适呢?
P3M0 = 0x02; //针对3.3V串口电平,外部需要接上拉电阻
P3M1 = 0x03; //RX高阻,TX开漏
我用的单片机是STC8G1K08,是这样设置的,再次谢谢老师。
你将你的实际应用的经过认真思考的原理图贴上来 1.我的具体应用很简单,就是3.3v和5V设备的串口通信,其中3.3V供电的模块,串口也是3.3V TTL电平,5V单片机用的是5V TTL电平,我现在纠结的是那两个330欧的电阻是否能省略,如果不能省略,实际用多大的阻值比较合适。
2.根据我的实际测试,当单片机串口配置为准双向口时,对应的P3.0和P3.1大约有4.5V的输出电压,如果配置为高阻或开漏模式,对应的P3.0和P3.1大约有1.5V的输出电压。
3.由于程序的需要,当单片机收不到串口数据时,看门狗每隔一秒钟就会复为一次,复位时,P3.0和P3.1会首先变成默认的准双向口,电压升到4.5V,当程序运行到main()函数里,运行到我配置的P3M0 = 0x02; P3M1 = 0x03;时,串口才会配置为高阻和开漏模式,P3.0和P3.1降回1.5V,但一秒钟后看门狗又会重新复位。P3.0和P3.1的电压又会先升到4.5V,再降到1.5V,循环往复。
4.鉴于P3.0和P3.1会频繁的升高和降低电压,如果图中330欧的电阻直接短路处理,单片机串口4.5V的高电压会直接送到3.3V模块的串口上,我担心时间久了3.3V模块的串口会烧坏,因此串联在串口上的330欧限流电阻似乎不应该短路去掉,至于是否需要330欧这么高的阻值,我没大有经验,因此想问一下老师,这个阻值取多大比较合适。谢谢老师了。:lol
bg4npj 发表于 2023-2-15 10:55
还有个问题需要追问一下,我单片机程序把端口设置为开漏或高阻了。但在实际实用中,单片机通电后可能长时间 ...
看门狗1秒复位一次是不合理的。看门狗在正常工作时不应该复位,异常(未能及时喂狗)才复位。
你应该计时,比如一分钟都没有收到串口数据,重新初始化一下串口。一旦收到数据,则重新计时。
其实单片机是很可靠的,设计合理的产品,不开看门狗,长期工作都不会出问题(都不需要上述重新初始化串口的动作)。 好的,谢谢老师,我回头改一下程序,不过今天实际连上线测试了一下,330欧的电阻可以正常工作。 bg4npj 发表于 2023-2-16 21:26
好的,谢谢老师,我回头改一下程序,不过今天实际连上线测试了一下,330欧的电阻可以正常工作。 ...
追个后续 是否可以一直稳定运行?
页:
1
[2]