首页 > 其他分享 >RS485浅析(硬件原理,软件配置)

RS485浅析(硬件原理,软件配置)

时间:2024-07-29 11:54:35浏览次数:10  
标签:res RS485 硬件 信号 rs485conf 485 data 浅析

485是一种最常用的通信接口,在单片机裸机和Linux系统中都有应用。并且又分为收发电平自动转换和手动转换两种。本文将分别进行举例说明。

485通信原理

差分信号传输
RS485 通信采用差分信号传输,通常情况下只需要两根信号线就可以进行正常的通信。
在差分信号中,逻辑0和逻辑1是用两根信号线(A+和B-)的电压差来表示。

逻辑 1:两根信号线(A+和B-)的电压差在 +2V~+6V 之间。
逻辑 0:两根信号线(A+和B-)的电压差在 -2V~-6V 之间。
连接方式
在 RS485 通信网络中,通常会使用 485 收发器来转换 TTL 电平和 RS485 电平
节点中的串口控制器使用 RX 与 TX 信号线连接到 485 收发器上,而收发器通过差分线连接到网络总线。
串口控制器与收发器之间一般使用 TTL 信号传输,收发器与总线则使用差分信号来传输。
发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上。

接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX 引脚传输到串口控制器中。

+A,-B信号幅值如下图。说明ttl的RX,TX的信号经SP3485转换后电压值由3.3v转变成5v。当信号为1时,电压:5-0=5;当信号为0时,电压:0-5=-5;

 

信号软件处理

在RT1061开发板上

首先驱动使能uart。然后需要控制寄存器来控制收发的切换。

发送数据

int write485(const uint8_t *SendData,size_t Len)
{
  // /* Send data only when LPUART TX register is empty and ring buffer has data to send out. */
  LPUART_WriteBlocking(LPUART4_PERIPHERAL, SendData, Len);
  return 0;
}

接收数据

void read232(void) {
  uint8_t data;

  /* If new data arrived. */
  if ((kLPUART_RxDataRegFullFlag) & LPUART_GetStatusFlags(LPUART4_PERIPHERAL)) {(如果接收缓冲区有时间,并且)
    data = LPUART_ReadByte(LPUART4_PERIPHERAL);
    /* If ring buffer is not full, add data to ring buffer. */
    rs485RxIndex %= 9;
    Rs485RingBuffer[rs485RxIndex] = data;
    rs485RxIndex++;
    if (rs485RxIndex == 9) {
      rs485ReceivedFlag = true;(数据接收缓冲区9字节)
     }

  }
  LPUART_ClearStatusFlags(LPUART4_PERIPHERAL, kLPUART_RxDataRegFullFlag);
}

OK3568 手动控制收发

 OK3568自动控制收发

首先需要设置驱动能够调用485收发相关驱动,然后通过8250程序,控制自动收发。需要在应用层进行如下使能,并决定是高电平发送还是低电平发送。

int rs485_enable(const int fd)
{
        struct serial_rs485 rs485conf;
        int res;
 
        /* Get configure from device */
        res = ioctl(fd, TIOCGRS485, &rs485conf);
        if (res < 0) {
                perror("Ioctl error on getting 485 configure:");
                close(fd);
                return res;
        }
 
        /* Set enable/disable to configure */
        // Enable rs485 mode
        rs485conf.flags |= SER_RS485_ENABLED;
        /*set logical level for RTS pin equal to 0 when sending: */
        rs485conf.flags &= ~(SER_RS485_RTS_ON_SEND);
        /* Set logical level for RTS pin equal to 1 after sending: */
        rs485conf.flags |= SER_RS485_RTS_AFTER_SEND;
        /* Set rts delay before send, if needed: */
        rs485conf.delay_rts_before_send = 0x00000004;
        /* Set rts delay after send, if needed: */
        rs485conf.delay_rts_after_send = 0x00000004;
        /* Set this flag if you want to receive data even while sending data */
        rs485conf.flags |= SER_RS485_RX_DURING_TX;

        /* Set configure to device */
        res = ioctl(fd, TIOCSRS485, &rs485conf);
        if (res < 0) {
                perror("Ioctl error on setting 485 configure:");
                close(fd);
        }
        return res;
}

485驱动程序分析,敬请期待下次更新......

标签:res,RS485,硬件,信号,rs485conf,485,data,浅析
From: https://www.cnblogs.com/yunyuanfeng/p/18325908

相关文章

  • 【linux】【设备树】具有 GPIO 控制器和连接器的硬件配置的备树(Device Tree)代码讲解
    具有GPIO控制器和连接器的硬件配置的备树(DeviceTree)代码讲解背景-学习Linux设备树代码soc{soc_gpio1:gpio-controller1{#gpio-cells=<2>;};soc_gpio2:gpio-controller2{#gpio-cells=<2>;};};connector:connect......
  • 【算法】浅析遗传算法【附完整示例】
    遗传算法:模拟自然选择,优化问题求解1.引言在计算机科学和优化问题求解中,遗传算法是一种借鉴生物进化理论的启发式搜索算法。它模拟自然选择和遗传机制,通过迭代搜索最优解。本文将介绍遗传算法的原理、步骤及其在实际应用中的重要性,并通过代码示例和图示帮助大家更好地理解......
  • 4、内存品牌分类介绍(芝奇) - 计算机硬件品牌系列文章
    芝奇(‌G.Skill)‌是一家全球领先的内存模块专业制造商,‌属于一线品牌。‌芝奇,‌全称芝奇国际实业股份有限公司,‌是一家来自中国台湾台北市的内存模块专业制造商。‌自2003年开始涉足计算机内存制造业,‌芝奇以其出色的DDR、‌DDR2、‌DDR3和DDR4计算机内存而著称。‌该品牌......
  • 基于RS485的Modbus协议
    RS485:用来传输数据,RS485是一种差分传输的串行通信标准,以其强大的抗干扰能力、长距离传输和多点通信能力,在工业控制领域得到广泛应用。RS485使用一对差分信号线(A和B)来传输数据,差分信号能有效抵抗共模干扰,提高通信的可靠性。RS485通信可以是半双工或全双工,具体取决于应用配置。......
  • 网络流浅析
    网络流概述网络(network)是指一个特殊的有向图\(G=(V,E)\),其与一般有向图的不同之处在于有容量和源汇点。\(E\)中的每条边\((u,v)\)都有一个被称为容量(capacity)的权值,记作\(c(u,v)\)。当\((u,v)\notinE\)时,可以假定\(c(u,v)=0\)。\(V\)中有两个特殊的点:源点(sou......
  • 硬件开发笔记(二十八):TPS54331电源设计(一):5V电源供电原理图设计
    前言  电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来。  本篇描述设计常用的12V转5V电路3A。 TPS54331(DC-DC稳压器)概述  TPS54331器件是一款28V、3A非同步降压转换器,集成有一个低RDS(on)的高侧MOSFET。为了提......
  • 4、内存品牌分类介绍(金士顿) - 计算机硬件品牌系列文章
    金士顿科技是全球最大的存储产品制造商之一,‌成立于1987年,‌由杜纪川和孙大卫创立。‌金士顿的产品线涵盖了超过2000种内存产品,‌包括但不限于小型机、‌工作站、‌服务器、‌激光打印机、‌数码相机、‌笔记本等,‌并与世界知名品牌厂商如HP、‌DELL、‌IBM、‌SUN、‌APPLE......
  • 关于武汉芯景科技有限公司的RS485通信接口芯片XJ13488EESA开发指南(兼容MAX13488EESA)
    一、芯片引脚介绍及应用电路1.芯片引脚图​2.引脚的定义及描述​3.芯片的逻辑关系二、自动收发控制电路        当检测到输入数据有变化时,电路会自动切换到发送模式,将数据发送到通信线上。当没有数据需要发送时,电路会自动切换回接收模式,监听通信线上的数......
  • 浅析数字孪生与数字卫星发展史
    ​引言:基于模型的系统工程是卫星工程设计研制的理论基础,构建数字卫星是总体设计单位的重要工作。 数字系统即针对一个特定物理系统所构建的数学模型,生存在数字环境中,与物理世界相对应的数字世界便是由数字系统和数字环境组成。在具体概念上,早在1997年,美国国防部首先提出了虚......
  • 昇腾AI基础软硬件平台介绍
    面向训练场景的有Ascend910系列和Ascend310系列 AICORE是昇腾AI处理器的计算核心,采用华为自研究的达芬奇架构。具有矩阵计算单元,向量计算单元,标量计算单元,累加器CANN逻辑架构介绍。是华为针对AI推出的异构计算架构。 服务层 计算编译层 ......