热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

STM32与RS232的串口通信失败了

今天在验证RS232与STM32的串口通讯。板子上引出了TXRX两个脚,与RS232的RXTX对接,串口通讯失败!开始以为是线序的问题,反复检查了线序,确认没有问题,后来查阅了一些资料,发现问题

今天在验证RS232与STM32的串口通讯。板子上引出了TX/RX两个脚,与RS232的RX/TX对接,串口通讯失败!

 开始以为是线序的问题,反复检查了线序,确认没有问题,后来查阅了一些资料,发现问题的原因可能是STM32的TX/RX用的是TTL电平,RS232则用的是EIA电平,用正负电压来表示逻辑状态,这两个接口直接连是不能正常通讯的。

EIA RS-232C 与TTL转换:EIA RS-232C 是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA RS-232C 与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL←→EIA双向电平转换。

 

解决方案如下:

 

简单的RS232C/TTL电平转换和串口取电

作者:温正伟 原载:无线电杂志

  在许多单片机的应用中都会使用到串行口与电脑的串行口相连接,进行数据的传输或控制命令的发送与接收。单片机的串口有很大一部分是使用TTL电平标准的(PIC的可以直接连接在电脑串口),它的逻辑1电平是5V,逻辑0电平是0V,而电脑串行口所使用的是RS232C的电平标准,它的逻辑1电平是-3V--12V,逻辑0电平是+3V-+12V。两者的电平范围相差很远,所以连接时需要用到电平转换电路。这样电路有好多种,一般来说商业化的成品会用到MAX232,DS275等专用的RS232、TTL电平转换集成电路,对于普通电子爱好者来说使用这样的器件一来不太好购买,二来使制作的费用提高,那用什么样的电路去代替它们呢?这也是我初初制作单片机结合电脑的应用中所遇到的问题之一,后来找到了一些相关的电路资料,解决了这些问题。以下我就结合自己在实际设计应用的经验来介绍一下这些电路资料,同时也介绍一些自己对串口取电电路设计应用的经验。

点击看大图
图1:NPN和PNP组成的RS232电平转换电路(点击放大)

  图一是使用小功率三极管搭建的电平转换电路,分别用了一个NPN管和PNP管,NPN可以使用常用的9014或BC547,PNP则可以使用常用的9012或BC557。电路分为传送和接收两部分,图一中已用虚线分开了。它们可以分开使用也可以合在一起使用。传送电路使用PNP管。当单片机的TxD信号是逻辑高电平时,Q1截止,RS232C的TxD(PIN3)提供-9V左右(实际电压根据电脑主板上使用的串行接口芯片有所不同)给RS232C的RxD(PIN2)。当单片机TxD信号变为逻辑低电平时,Q1导通,约+5V传给了RS232C的RxD(PIN2)。用这种办法传送数据时,RS232C的TxD(PIN3)必须稳定在-9V左右 。
  虚线以下的接收电路,它把RS232C电平转换成TTL逻辑电平。当PC发送数据给RS232C的TxD(PIN3)时,逻辑1电平时是-9V,Q2截止,此时单片机的RxD约为+5V。当RS232C的TxD为逻辑低电平是+9V,Q2导通,单片机RxD此时约为0V。
  图一的电路我在自己的单片机应用中也经常用它来代替MAX232,DS275这样的芯片,它不单可以单独使用传送或接收部份,在部分要求双向传输的项目中也可以很好的工作。我通常是使用9600波特率的,但实际也可以工作中更高一点的波特率。也可以把它焊到一个小的8脚IC插座或PCB上直接代换DS275(DS275引脚功能说明请看图二)。

图2:DS275引脚图

点击看大图
图3:两个NPN组成的RS232电平转换电路(点击放大)

  图三是另一种RS232/TTL电平转换电路,对于接收电路,它是和图一的电路是一样的。该电路用2个NPN小功率晶体管,转送电路不需要从RS232C的TxD引用负的电压,而这样做的话,当单片机TxD为高电平时RS232C的RxD为0V(不是如图一的-9V左右),为低电平时RS232C的RxD为+5V,显然这和RS232C的标准不同,但多数PC机串口可以接受这样的电平范围。这个电路可以像图一那样用来代换直接代换DS275芯片。
  这两个电路中的晶体管可以使用大部分常用的小功率晶体管去替换,我自己常用9012,9014,BC547,BC557,它们都可以很好的工作。要注意的是它们所产生的电平范围不是标准的RS232电平,所以也不能达到RS232的标称传输距离。
  在一些小的应用中通常只要用到一块2051或PIC芯片和少许的小元件,它们的耗电量是很小的,一般有十几毫安就足够了。在我自己的PC遥控器项目中用到一块AT89C2051,一个一体化红外接收头和一个小LED,少许阻容器件和上面所说到的电路的传送部分,总的耗电量只有十毫安多点。我用图四的电路从PC串口直接窃电,效果很好,可以提供5V,二十多毫安的电流。也可以用图五的电路。但要注意的是这两种电路都要求上位软件使串口的7和4引脚变为高电平才可以正常取电,否则无法从串口窃取所需的电压。

点击看大图
图4:简单实用的串口窃电电路(点击放大)

图5:用到7805的串口取电电路


推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细探讨了Netty中Future及其子类的设计与实现,包括其在并发编程中的作用和具体应用场景。我们将介绍Future的继承体系、关键方法的实现细节,并讨论如何通过监听器和回调机制来处理异步任务的结果。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细探讨了Java中StringBuffer类在不同情况下的扩容规则,包括空参构造、带初始字符串和指定初始容量的构造方法。通过实例代码和理论分析,帮助读者更好地理解StringBuffer的内部工作原理。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
author-avatar
支持骸云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有