精华内容
下载资源
问答
  • 电子政务-分布式架构设备及其串口复用电路.zip
  • 开发板串口复用的简单实现(一个串口连接二个串口模块) ARM开发板在做项目时,串口不够用了打算进行串口复用。一开始准备进行如下的原理图连接:  但是不可采用这种方法进行直接连接。这种情况下开发板发送的数据...

    开发板串口复用的简单实现(一个串口连接二个串口模块)

    ARM开发板在做项目时,串口不够用了打算进行串口复用。一开始准备进行如下的原理图连接:
    在这里插入图片描述
      但是不可采用这种方法进行直接连接。这种情况下开发板发送的数据P1与P2都可以收到,但是P1、P2发给开发板的数据可能不会被正常接收,因为P1、P2的T脚可能会相互影响,使开发板的R脚收到错误的数据。
      我加了一个继电器进行控制,解决了上面的引脚的影响问题。先简单介绍一下继电器的原理。
    在这里插入图片描述
      控制引脚输入高低电平控制COM端的连接状态。列如:控制引脚为0,COM端和A连接;控制引脚为1,COM端和B进行连接。
      结合继电器得到如下的连接原理图:
    在这里插入图片描述
      通过开发板的一个引脚控制继电器,可以选择要进行通信的串口模块,这样开发板就可以正确接收到串口模块发来的消息了。
    特别注意:实际连接中继电器要和开发板共地。

    展开全文
  • 行业分类-电子政务-一种分时复用串口的切换电路.zip
  • 1.熟练掌握Proteus与Keil的...1.实现按键的多功能复用; 2.通过串行通信口对timer系统进行走时时间设置; 3.将重要的设置值存放在黑匣子中,每次上电时,可直接读取黑匣子中的内容,即从24c02芯片中读取被存储的数据;
  • 串口多路复用收发数据

    千次阅读 2014-10-15 07:15:38
    串口多路复用收发数据 1.1 设计目的 具有 GSM 和 GPRS  功能的设备需要同时处理 ( 发送和接收 ) 各种数据流,例如 AT 指令流 (AT Command) , GPRS  数据流, GSM 线路交接数据流 (circuit switched ...

    串口多路复用收发数据

    1.1 设计目的

    具有GSM和GPRS 功能的设备需要同时处理(发送和接收)各种数据流,例如AT指令流(AT Command),GPRS 数据流,GSM线路交接数据流(circuit switched data) 等,这些数据流彼此独立。 

    对于不使用多路复用的设备来说,在某个时间段只能处理一种数据流或者一路数据流,这样,设备的使用率不高,因此设计采用GSM0710规范定义的标准多路复用协议,将传输设备划分成多个逻辑链路通道(Channel 或者DLC),来同时传输这些数据流,每个逻辑通道都具备独立的缓冲区(buffer)和流量控制。

    本文来自实际应用,在集中器浙江版本中,需要同时支持短信和GPRS网络。只有一个串口给GPRS模块。一个接口,多个描述符来收发数据。在unix系统中,有典型的实例。I/O多路转接。通过select来实现I/O的多路复用。

    1.2 具体应用分析

    通过一个守护进程mux来实现串口的多路复用。如下图:



    首先从main函数进入通过系统函数getopt()来处理main的输入参数。然后在openDevicesAndMuxMode函数两次调用open_pty函数来虚拟出两个接口mux0和mux1,
    在代码中用ussp_fd[] 来表示。open_serialport函数打开串口ttys0。

    int openDevicesAndMuxMode ()

    {

    int     i = 0;

    int     ret = -1;

    maxfd = 0;

    for (i = 0; i < numOfPorts; i++) {

    remaining[i] = 0;

    if ((ussp_fd[i] = open_pty (ptydev[i], i)) < 0) {

    syslog (LOG_ERR, "Can't open %s. %s (%d).\n", ptydev[i], strerror (errno), errno);

    return -1;

    }

    else if (ussp_fd[i] > maxfd)

    maxfd = ussp_fd[i];

    cstatus[i].opened = 0;

    cstatus[i].v24_signals = S_DV | S_RTR | S_RTC | EA;

    }

    cstatus[i].opened = 0;

    // open the serial port

    if ((serial_fd = open_serialport (serportdev)) < 0) {

    syslog (LOG_ALERT, "Can't open %s. %s (%d).\n", serportdev, strerror (errno), errno);

    return -1;

    }

          ........

    return ret;

    }

    然后在while中用用selelct 实现 i/o 多路复用。这个过程主要分为几个部分,

    l 调用系统接口select,将接口描述符加入到select的描述符集中。

    FD_ZERO (&rfds);

    FD_SET (serial_fd, &rfds);

    for (i = 0; i < numOfPorts; i++)

    FD_SET (ussp_fd[i], &rfds);

    timeout.tv_sec = 1;

    timeout.tv_usec = 0;

    l 通过select函数,来检测是否指定的条件发生。

    sel = select (maxfd + 1, &rfds, NULL, NULL, &timeout);

    if (faultTolerant) {

    // get the current time

    time (¤tTime);

    }

    if (sel > 0) {

    ……

    }

    l 读物理接口串口

    当串口有数据时,首先read读取数据,将该帧读取到本地buffer中。extract函数解析帧,调用write_frame函数将解析出来的数据发送到相应的虚拟接口。

    if (FD_ISSET (serial_fd, &rfds)) 

    {

    if ((size = gsm0710_buffer_free (in_buf)) > 0

    && (len = read (serial_fd, buf, min (size, sizeof (buf)))) > 0) {

    //sleep (1);

    gsm0710_buffer_write (in_buf, buf, len);  // 读取数据到本地buffer

    //  解析数据帧,发送到相应的虚拟串口

    if (extract_frames (in_buf) > 0 && faultTolerant) {

    frameReceiveTime = currentTime;

    pingNumber = 1;

    }

    }

    }

    l 依次读虚拟接口数据,read读取ussp_ff[]中的数据,通过ussp_recv_data向串口ttys0发送数据。对两个虚拟的接口的数据流分析如下:

    /dev/ttyS0 <---> /dev/pts/1| <----> SMS

    /dev/ttyS0 <---> /dev/pts/0 | <----> gprs

    for (i = 0; i < numOfPorts; i++)

    if (FD_ISSET (ussp_fd[i], &rfds)) {   // USSP_fd[] = ttys[]

    if (remaining[i] > 0) {

    memcpy (buf, tmp[i], remaining[i]);

    free (tmp[i]);

    }

    if ((len = read (ussp_fd[i], buf + remaining[i], sizeof (buf) - remaining[i])) > 0)

    {

    remaining[i] = ussp_recv_data (buf, len + remaining[i], i);

    }

    if (len < 0) {

                ……

    }

    }



    1.3 Gprs模块下,将串口虚拟成两个接口的数据流程图如下:


    其中涉及的控制的帧的分析参考:《华为串口多路复用.pdf》


    ussp_fd[]    // 虚拟接口名称mux[]

    serial_fd[]   // 物理接口名称ttys0


    fd = open("/dev/pts/1", O_RDWR | O_NOCTTY);



    http://blog.chinaunix.net/uid-22477616-id-3513752.html

    
    展开全文
  • STC89C52串口复用

    千次阅读 2013-05-31 21:19:09
     MCS-51 单片机串行口的一种复用 杨秋海 叶林 孙键 一 环境:  1、普中科技HC6800-EM3 v2.2 单片机开发实验仪(芯片STC90C516RD+),约定为下位机  2、无线蓝牙串口透传模块 HC-06从机  3、win
      
    
    reference: 《微计算机信息》1998 年第14 卷第4 期
                MCS-51 单片机串行口的一种复用   杨秋海 叶林 孙键

    环境
             1
    、普中科技 HC6800-EM3 v2.2 单片机开发实验仪(芯片 STC90C516RD+ ),约定为下位机
              2
    、无线蓝牙串口透传模块 HC-06 从机
              3
    windows xp 操作系统
              4
    、中兴 U930 手机(蓝牙串口通信助手软件),约定为上位机

    二、连线电路图(主要是串口的复用)
     
     
    三、串口的复用部分
        采用SN74LS125AN(四总线三态缓冲器),也就是四个三态门
     

    C端为控制端,低电平有效
    A端为输入端
    Y端为输出端

    电路原理图如上图 
    用程序控制P2.4、P2.5、P2.6、P2.7,实现串口的复用 
    展开全文
  • 首先修改程序,停止初始化出现异常数据的备用串口,删除备用串口接收中断中的执行代码,使其不操作和485相同的控制标志。 修改后,测试运行发现产品运行正常,没有再出现短时间内无线模块断开重连的现象。 ...
    前两天测试人员发现,在测试运行的产品中,有两个运行不正常。于是对出现异常的产品进行了重点检测。
    开始怀疑是产品中的无线模块信号不好,造成一段时间后就连接断掉。于是使用了一个测试好用的无线模块,测试发现测试产品运行效果和原来一样,还是比较异常。
    而且观察产品的数据通信指示灯,感觉闪灯很不正常。没有数据交互的情况下,485通讯指示灯经常闪烁。而且无线模块通讯指示灯反而长时间没有点亮。为了验证闪烁的LED确实是485通讯指示灯,选择了运行正常的产品,但是等了很长时间发现不容易观察到现象。于是选择了看代码,查电路图。根据电路图及代码指示,闪烁的LED确实是485通讯指示灯。
    但是,这样问题就来了,为什么485通讯指示灯,在没有数据交互的情况下会点亮?
    将正在运行的程序版本从SVN中导出,进行在线调试。发现在没有数据交互的情况下,程序一直进入485数据接收处理代码。这样在程序上验证了,闪灯的确实是485通讯指示灯。也就说明485串口上有异常数据被接收。但是,此时使用示波器,在485的串口接收端口上测试没有发现电平有变化。使用断点调试发现,确实是485的数据接收处理函数被调用,进行485数据的处理。于是在485数据接收超时回调的函数部分设置断点。程序确实进入到超时回调函数中。但是,485串口接收引脚很稳定,没有电平变化。于是将断点设置在485串口接收中断中,发现程序没有进入这个中断,但是超时回调函数确实被调用了。那么只能说,其他地方调用了超时回调函数。查看代码,发现有两处调用超时回调函数,而且都是在串口中断中。那么很有可能是备用串口的接收中断接收到数据,调用了回调函数。于是在备用串口的中断函数中设置断点,调试发现,程序确实进入了备用串口的接收中断。
    此时,使用示波器在出现异常数据的备用串口上进行测量,发现不定时的确实用低电平信号出现。程序运行异常的原因找到了。
    首先修改程序,停止初始化出现异常数据的备用串口,删除备用串口接收中断中的执行代码,使其不操作和485相同的控制标志。
    修改后,测试运行发现产品运行正常,没有再出现短时间内无线模块断开重连的现象。
    后来在查找备用串口上异常数据的来源时,发现很奇怪。除去任何干扰源,在此串口的接收上还是会出现随机的低电平信号。在询问了硬件工程师后,建议测量下电源是否稳定。测量后,确认电源稳定没有异常。一段时间后,硬件工程师截图说这个信号是正常的。由于备用串口上连接了红外接收器,红外接收器一般会感应到一些红外信息发送给串口接收端。对比了红外接收器存在和不存在的采集器后,发现确实如果没有红外接收器备用串口接收上,电平正常。

    关于这个问题,有几点反思:
    1、对于程序中,对于没有用到的串口资源随意打开弃之不管,留下了一些未知的隐患。
    2、备用串口和485串口的中断服务函数中使用同样的数据处理标识。原有代码将备用串口中断服务函数中的回调机制注释掉,来实现485串口的接收。这样的处理,很有可能是在程序设计的时候将原有备用串口的功能移植到485串口,但是却保留了原有函数中的几乎全部代码。并且在实际程序中,备用串口同样被初始化,备用串口的接收中断同样使能。而在修改的时候,将注释打开了。
    3、在修改代码的过程中,没有将备用串口的初始化操作关闭。在打开备用串口中断服务函数中的注释时,没有进行详细的确认。确认打开注释后,对于现有的代码会造成什么样的影响。
    4、红外接收器对于备用串口的影响,没有明确标示出来。在设计软件的时候没有明示,代码中未对备用串口的功用做描述。
    5、详细的测试很重要。此次测试过程中虽然一共有20多个产品在运行,但是也只有两个产品出现异常。致使我们发现问题,如果只测试了少数的几个,可能这种现象就不会表现出来。如果到了客户那里才发现,就得紧急测试及到客户那里进行程序升级。将会是很大的时间及成本的开销。

    总结:
    程序中不必要的代码尽量删除,不必要的资源尽量关闭。
    注释的打开与关闭慎之又慎,写好必要的注释。
    全面的测试必须进行,细小的问题不能放过。
    展开全文
  • 行业资料-电子功用-一种串口和红外功能复用的接口电路
  • 串口调试汇总

    2019-10-10 17:15:10
    串口调试汇总@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们...
  • STM32端口复用

    2021-01-31 21:35:25
    STM32端口复用 1.什么是端口的复用?...PA9,PA10引脚作为串口1的TX,RX引脚使用时,就是端口复用 2.端口的复用的准备工作 端口复用初始化需要如下三步: 1.GPIO端口的使能 RCC_APB2PeriphClockCmd(RCC_
  • EDA课设 FPGA开发板 VHDL实现串口通信

    千次阅读 多人点赞 2021-07-20 21:28:14
    VHDL UART串口通信设计 实现开发板与计算机串口助手之间的收发,并能够自行调节波特率。自行设计通信格式并完成调试。
  • RS-232/485转换器的复用方案

    千次阅读 2015-03-06 11:03:56
    S-232/485转换器本来是用于延长RS-232的通信距离的,用一对RS-232/485转换器就可以将2个RS-232口之间的通信距离由15米延长到1200米(RS-485总线,9600...这就牵涉到RS-485复用技术。本文介绍如何利用波仕RS-232/485地址
  • 基于51单片机的下载电路原理

    千次阅读 2021-01-09 18:11:27
    RS232电平:RS232电平是特制电脑串口的电平。电脑上的RS232接口采用的是负逻辑电平:-15 ~ -3表示逻辑1,+15 ~ +3表示逻辑0。 USB:除去屏蔽层,有4根线,分别是VCC、GND和D+、D-两根信号线。5V是USB的电源电压,...
  • 我用一个单片机的TXD,RXD分别接两个模块,从一个接受信息,另一个发送信息,可以分时进行,电路不冲突(单个模块只与单片机的TXD RXD中一个连接即可通信),但波特率不同,那我是不是要分两次初始化串口呢?...
  • 用Linux连接两个串口

    2021-05-13 21:36:19
    我希望有一个人可以帮助我....我所做的是打开两个终端程序窗口,我连接相应的串口,直到这里一切正常.现在在其中一个窗口中,我有ARM控制台(这是ttymxc1串口),我在其中编写了例如“echo hello> / dev / ...
  • 串行接口简称串口(通常指COM接口),是采用串行通信方式的扩展接口,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,但传送速度一般,数据传输率为115kbps~230kbps。异步串行UART...
  • 提供快速、全双工、异步的串口通信,内置流量控制(CTS,RTS)支持硬件,速率高达 1 Mbps。 以下是 UARTE 的主要功能: 全双工操作 自动硬件流控制 生成9位数据带奇偶校验 EasyDMA 波特率高达 1 Mbps 在支持的事务...
  • 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,其通讯协议可分层为协议层和物理层。物理层规定通信协议中具有机械、电子功能的特性,...
  • Stm32f407ZGT6串口2通信

    千次阅读 2020-12-19 18:43:30
    Stm32f407ZGT6串口2通信串口1与串口2串口2配置步骤代码 串口1与串口2 所犯错误:正点原子的例程是串口1的,同样的步骤配置好串口2后,...设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。 GPIO 初始化设置:要设置模
  • 串口1,串口3都接到电脑上,选上”Use MicroLIB”这是KEIL自带的一个简易的库,例如你用printf函数的时候,就会从串口1 输出字符串,直接默认定向到串口1。(此程序中两个波特率不匹配,接受会出错,在实践中要设置...
  • STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。 GPIO基本结构 每个GPIO内部都有这样的一个电路结构,这...
  • 例如把PA9和PA10作为串口的功能引脚来发射和接受的时候,就叫做复用 具体的复用引脚在《数据手册》第20页 1.2 端口复用的配置(以PA9,PA10配置为串口1为例) 首先使能相应的GPIO时钟: RCC_APB2PeriphClockCmd...
  • STM32之串口通信 - USART(含串口实验详细解析) 开发环境:Window 10 开发工具:Keil uVision5 MDK 硬件:STM32F103 资料参考: 【正点原子】STM32F103开发板资料(A盘); STM32F1开发指南(精英版)-库函数版本....
  • 情况是这样的,因为项目中需要外接的串口设备很多,STM32F4的6个UART/USART已经都被占用完了,如果想继续接入串口设备,只能通过【can<->串口】转换模块来实现,而且由于can总线支持N多can节点,理论上,STM32...
  • MTK的芯片设计有些让人搞不懂,非得将串口作为启动...但是UART2与 NET PORT2是复用的;使用uart2必须牺牲1个网口; 准确来说是牺牲所有网口(PORT0除外),因此MT76x8 要么作为单网口使用要么作为5网口使用,没有中间
  • 16 . USART 串口通信实验

    千次阅读 2021-05-21 14:54:40
    USART 串口通信实验 我们知道STM32F1 内部含有非常多的通信接口,我们就来学习下USART 串口通信。要实现的功能是:STM32F1 通过USART1 实现与PC 机对话,STM32F1 的USART1 收到PC 机发来的数据后原封不动的返回给PC ...
  • STM32H743多路串口调试经验总结(HAL库) 一、硬件基础 1、STM3H743核心板 2、自制串口拓展板(控制485收发使用的TDHx01D485H2隔离模块,该模块EN为低电平是发送,高电平接收) 3、485串口模块 二、软件基础 从正点...
  • STM32中USART串口通信实验

    千次阅读 2020-12-02 14:37:18
    } 硬件电路 编写串口通信控制程序 STM32F1通过USART1实现与PC机通信,STM32F1的USART1收到PC机发来的数据后原封不动的返回给PC机显示。同时使用D1指示灯不断闪烁提示系统正常运行。 程序框架如下: (1)初始化...
  • STM32—串口通讯详解

    万次阅读 多人点赞 2019-07-30 22:26:34
    串口通讯目录物理层协议层USART简介代码讲解 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,其通讯协议可分层为协议层和物理层。物理层...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,860
精华内容 1,544
关键字:

串口复用电路