单片机的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机的问题相关的知识,希望对你有一定的参考价值。

我想两片单片机进行串口通讯。比如当A单片机红灯亮起来→B单片机蜂鸣器响。该如何操作呢
只需要把两片单片机RX TX 连起来就可以吗?中间需要加电阻吗或者其他东西吗

两个单片机串口通讯需要将Rx和Tx连接,一般其中间不需要外接电阻或电容等。但如果两个单片机各自为一套独立系统,彼此相距校远,在两单片机Rx和Tx之问通常会加入驱动芯片,以增加两者之间数据传输的可靠性。
另外如果两单片机是各自独立供电,除了连接Rx和Tx外,还需耍将两边的信号地(GND)连接到一起。追问

两个单片机是独立系统,相聚10cm 左右,然后供电是一个电池组供电的 GND要连一起吗

追答

既是共用一个电源,地肯定已经是公共的了。不过如果你是用电缆联接,建议还是把地线加上,这样万一今后需要分别供电也不用改了,毕竟加条地线并不费事。

参考技术A 如果两片单片机距离很短,在同一块板子上面,那么直接将其RX和TX交叉连接就可以了,也即是RX接TX,TX接RX。这样两个单片机之间就可以通过串口相互收发串行数据了。如果两个单片机距离稍微长一些,不在同一块板子上面,那么就比较复杂了,需要加MAX232这样的芯片来驱动,否者串行通讯可能面临较大干扰,不能正常通讯,两个单片机都需要加MAX232,需要12V的电压。这也是一个电平转换过程,当然有一些相应的阻容元器件。追问

两个芯片不在一个板子上 相聚10cm左右 要怎么弄呢

参考技术B 两个单片机串口通讯,硬件连接为RX1一TX2、TⅩ1一RX2、GND1一GND2就可以了,接下来就是软件问题了,只要软件满足通讯要求就行,无非就是通讯协议问题。 参考技术C A单片机的RX连接到B单片机TX,A单片机的TX连接到B单片机RX,还需要将GND相连共地。RX、TX中间可以加个1K的电阻,不加亦可通信。 参考技术D 单片机的RX接另一个单片机的TX,中间串联一个小阻值的电阻,如30欧姆,另一组TX与RX同理,两个单片机共地。追问

两个单片机还得共地啊 那我是两个板子 但是距离很近10cm左右 该如何操作呢

追答

用导线将两个板子的地接通

本回答被提问者采纳

关于单片机串口通信的问题

  最近在调板子的时候又遇到了单片机MCU检测不到的问题,之前百度了一堆驱动问题,已经可以正常烧写程序,但是昨天又写不了了,连单片机都检测不到,将驱动器的RxD与TxD短接,使用串口助手自己给自己发送数字,是可以接收到的,证明仿真器没有问题,交换驱动器与单片机的RxD与TxD,从顺接改为交叉连接,还是不行。后来在一哥们的指导下解决了该问题。然后发 现一个小小的串口通信其实门道很多,特别是对于对单片机不熟悉的初级选手是个不小的挑战,所以今天跟小伙伴们聊聊我的感受。
  我的问题概而论之就是对于CH340驱动不了解,这个USB转串口的小板直接百度就能有一堆东西,原理图芯片资料等一应俱全,这里就不做赘述。需要注意的其实是它上面的指示灯,它会加强你对类似问题的判断。一般来说仿真器指示灯有三个:PWR、TxD、RxD,当TxD或RxD给低电平时,对应的指示灯亮,高电平时不亮。
  当单片机与仿真器进行通信时(烧写程序或者检测MCU),二者会完成一收一发。按下检测MCU时,TxD的指示灯会亮,此时仿真器的TxD在给单片机的RxD发送一个低电平,单片机检测到电源的断电和上电后(我的理解是下降沿上升沿双触发),会在单片机的TxD先拉高,再给低,仿真器的RxD检测到以后,TxD与RxD又恢复高电平。在进行MCU检测时的表现就是:仿真器的TxD指示灯会亮,此时断电上电触发后,仿器的RxD指示灯会闪一下,随即TxD和RxD指示灯都灭。

  我当时的问题是仿真器的RxD常亮,从插上USB后的一系列操作都是亮的,这说明单片机的TxD一直就是给的低电平,而没有被拉高过,我调的板子里是有modbus模块的,modbus对应的RxD与TxD是与单片机接在一起的,而当时连接用的跳线帽是插着的,所以最后的结果就是modbus模块在捣鬼,它把单片机TxD本该给仿真器RxD的高电平给夺走了,导致仿真器的RxD无法被拉高,因此检测MCU总是失败,也就无法烧写程序,去掉跳线帽后MCU检测成功完成。
  在我解决这个问题的过程中遇到的第二个问题就是单片机和仿真器的RxD和TxD接反了。现在市面上有些仿真器是考虑到了对接问题,标记的时候就是仿真器的RxD对应单片机的RxD,仿真器的TxD对应单片机的TxD,而有些则是要交叉连接的,这个问题主要看标记RxD和TxD的时候是站在什么角度标记的,百度也是一大堆资料,这里就不做赘述了。至于实际中,我怎么知道这个仿真器RxD和TxD应该顺着接还是交叉接,前面的内容已经可以解答你了:单独插上仿真器,点击检测MCU,看哪个灯亮,那么这个灯对应的就是TxD,另一个不亮的就是RxD咯,至于常亮的红色灯PWR忽略掉就可以咯。
  这么看来我遇到的问题很简单,但是在这个过程中,我认为这种排除故障的思路是很值得学习的,一开始我根本就没有没有注意到去看仿真器的指示灯,也不知道这几个灯是干嘛使的,所以一头雾水,也不知道从何查起。相信每一个有过调板子经历的人都知道下载软件驱动器光是版本就能折腾地人想自杀,所以就更不应该在硬件问题上浪费时间和精力,希望我的精力能够对大家有所帮助。

技术分享





以上是关于单片机的问题的主要内容,如果未能解决你的问题,请参考以下文章

5V单片机与3.3V单片机串口通信问题

5V单片机与3.3V单片机串口通信问题

STC单片机开漏模式问题

单片机RS485通信问题

5V单片机与3.3V单片机串口通信问题

单片机 C语言 关于数组的问题