【嵌入式】RS485通信+硬件

目录

1.物理层

2.协议层

3.收发电路

 3.1三极管开关电路

3.2收发原理图解释     


1.物理层

        对比 CAN 通讯网络,可发现它们的网络结构组成是类似的,每个节点都是由一个通讯控制器和 一个收发器组成,在 RS-485 通讯网络中,节点中的串口控制器使用 RX TX 信号线连接到收 发器上,而收发器通过差分线连接到网络总线,串口控制器与收发器之间一般使用 TTL 信号传 输,收发器与总线则使用差分信号来传输。发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上,而接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX引脚传输到串口控制器中。

        RS-485 通讯网络的最大传输距离可达 1200 米,总线上可挂载 128 个通讯节点,而由于 RS-485 网络只有一对差分信号线,它使用差分信号来表达逻辑,当 AB 两线间的电压差为-6V~-2V 时表示逻辑 1,当电压差为 +2V~+6V 表示逻辑 0,在同一时刻只能表达一个信号,所以它的通讯是半双工形式的。

        它与 RS-232 通讯协议的特性对比见图标准对比

        RS-485 与 RS-232 的差异只体现在物理层上,它们的协议层是相同的,也是使用串口数据包的形式传输数据。而由于 RS-485 具有强大的组网功能,人们在基础协议之上还制定MODBUS 协议,被广泛应用在工业控制网络中。此处说的基础协议是指前面串口章节中讲解的,仅封装了基本数据包格式的协议 (基于数据位),而 MODBUS 协议是使用基本数据包组合成通讯帧格式的高层应用协议 (基于数据包或字节)

2.协议层

        和usart协议相同

3.收发电路

        备注:max3485ESA

                   1)#RE脚:0表示使能接收;1表示进入高阻态;#RE为1,DE为0时进入低功耗;

                    2)DE脚:1表示使能接收;0表示进入高阻态;#RE为1,DE为0时进入低功耗;

 3.1三极管开关电路

        电阻R26、电阻R23和NPN三极管Q1组成一个典型的三极管开关电路。

        R26是限流电阻;R23是上拉电阻,可以选择4.7K或者10K。

        当TX高电平,三极管导通,RE和DE引脚接地,进入接收模式;当TX低电平,三极管截止,RE和DE引脚接高电平,进入发送模式。 

3.2收发原理图解释     

        在发送数据时,用的是单片机的TX引脚,也就是说,在TX引脚上表现数据。要发送数据0x32,写成二进制就是0x00110010,TXD引脚上就会依次的用高低电平体现1和0。

        当TX发送0时,三极管不导通,DE接高电平,进入发送模式,485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。所以,当TXD发送0时,AB引脚发送0。

        当TX发送1时,三极管导通,RE接低电平,进入接收模式,485芯片的AB引脚进入高阻状态,因为R3把A拉高,R2把B拉低,所以,AB传输的是1。所以,当TXD发送1时,AB引脚发送1。

        而在接受数据过程中,用的是单片机引脚RX,在RXD引脚上表现数据。在接收数据的过程中,TX引脚是一直保持高电平的,当TXD是高电平时,RE是低电平,正好变成了接收状态,然后485芯片的RO引脚(也就是接RX的引脚)就会接收AB传输过来的数据。(备注 TX RX在空闲状态时都处于高电平状态)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32是一款广泛应用于嵌入式系统中的32位微控制器系列。要使用RS485通信协议实现STM32通信功能,需要以下步骤: 1. 配置硬件:首先,需要将STM32的GPIO引脚配置为UART模式,并选择正确的引脚用于RS485收发功能。这些引脚的具体使用方式可以通过查阅STM32的参考手册来获知。 2. 初始化UART:在代码中,需要初始化UART模块,设置波特率、数据位、停止位等参数。可以使用STM32提供的库函数或者使用寄存器级编程进行初始化。 3. RS485配置:RS485通信需要设置转换芯片的发送使能和接收使能控制引脚。在代码中,需要配置GPIO引脚,控制RS485芯片的使能状态,确保在发送或接收数据时能正确切换芯片的工作模式。可以使用GPIO库函数或寄存器级编程进行配置。 4. 数据收发:使用UART的库函数或寄存器级编程进行数据的发送和接收,可以根据通信协议进行相应的数据处理、校验等操作。在RS485通信中,还需要注意设置正确的发送延时和接收超时时间,以确保数据的稳定性。 5. 错误处理:在通信过程中,可能会出现数据传输错误、接收超时等异常情况。为了处理这些异常,需要添加相应的错误处理代码,例如重新发送数据或重新初始化UART模块等。 综上所述,通过配置硬件、初始化UART模块、设置RS485芯片使能状态、进行数据收发以及错误处理等步骤,就可以实现STM32使用RS485通信的功能。具体的代码实现可以根据具体的应用需求和通信协议进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙八瓶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值