RS2323 RS485

news/2024/12/29 19:44:00/

RS232

  • 硬件直接对接,程序完全来自于USART
  • 由sp3232将TTL电平转化为RS232的标准电平
  • 实际应用中需要注意RS232对于2脚和3脚的直连或交叉接,现成的RS232当然不会有这个问题,但是自己DIY的时候要注意防止接反(如图3 图4)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


RS485

  • 基于usart
  • 通过sp3485将数据的收发集成到一根线上,转而由RS485_RE(B口)判断/切换数据的收发模式

在这里插入图片描述
在这里插入图片描述

RS232和RS485的理论极限使用场景

即短距离传输,中距离传输和远距离传输
在这里插入图片描述

程序示例

rs485.c

#include "sys.h"
#include "usart.h"
#include "rs485.h"void RS485_Init(void){ //RS485接口初始化GPIO_InitTypeDef  GPIO_InitStructure; 	GPIO_InitStructure.GPIO_Pin = RS485_RE; //选择端口号(0~15或all)                        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    GPIO_Init(RS485PORT, &GPIO_InitStructure);GPIO_ResetBits(RS485PORT,RS485_RE); //RE端控制接收/发送状态,RE为1时发送,为0时接收。}/*
RS485总线通信,使用USART3,这是RS485专用的printf函数
调用方法:RS485_printf("123"); //向USART3发送字符123
*/
void RS485_printf (char *fmt, ...){ char buffer[USART3_REC_LEN+1];  // 数据长度u8 i = 0;va_list arg_ptr;GPIO_SetBits(RS485PORT,RS485_RE); //为高电平(发送)//RS485收发选择线	va_start(arg_ptr, fmt);  vsnprintf(buffer, USART3_REC_LEN+1, fmt, arg_ptr);while ((i < USART3_REC_LEN) && (i < strlen(buffer))){USART_SendData(USART3, (u8) buffer[i++]);while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET); }va_end(arg_ptr);GPIO_ResetBits(RS485PORT,RS485_RE); //为低电平(接收)//RS485收发选择线	
}

可以将上面的程序与
usart_c.usart_printf(char * fmt);
做对比
不能说一模一样,只能说完全一致

RS485_Init()
更是不用多说

RS485的数据接收倒是没有再“套壳”
而是同usart一样
交由主程序
USART_GetFlagStatus 判断后
直接处理

main.c

#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "touch_key.h"
#include "relay.h"
#include "oled0561.h"#include "usart.h"
#include "rs485.h"int main (void){//主程序u8 a;delay_ms(100); //上电时等待其他器件就绪RCC_Configuration(); //系统时钟初始化 TOUCH_KEY_Init();//触摸按键初始化RELAY_Init();//继电器初始化I2C_Configuration();//I2C初始化OLED0561_Init(); //OLED初始化OLED_DISPLAY_8x16_BUFFER(0,"   YoungTalk "); //显示字符串OLED_DISPLAY_8x16_BUFFER(2,"  RS485 TEST "); //显示字符串OLED_DISPLAY_8x16_BUFFER(6,"TX:    RX:   "); //显示字符串USART3_Init(115200);//串口3初始化并启动RS485_Init();//RS485总线初始化,需要跟在USART3初始化下方while(1){if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_A)){RS485_printf("%c",'A');OLED_DISPLAY_8x16(6,4*8,'A');} //向RS232串口发送字符并在OLED上显示		else if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_B)){RS485_printf("%c",'B');OLED_DISPLAY_8x16(6,4*8,'B');} //向RS232串口发送字符并在OLED上显示		else if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){RS485_printf("%c",'C');OLED_DISPLAY_8x16(6,4*8,'C');} //向RS232串口发送字符并在OLED上显示else if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){RS485_printf("%c",'D');OLED_DISPLAY_8x16(6,4*8,'D');} //向RS232串口发送字符并在OLED上显示//查询方式接收if(USART_GetFlagStatus(USART3,USART_FLAG_RXNE) != RESET){  //查询串口待处理标志位a =USART_ReceiveData(USART3);//读取接收到的数据OLED_DISPLAY_8x16(6,11*8,a);//在OLED上显示}}
}

http://www.ppmy.cn/news/174873.html

相关文章

RS232 RS422 RS 485

RS232特点&#xff1a; RS-232是现在主流的串行通信接口之一。由于RS232接口标准出现较早&#xff0c;难免有不足之处&#xff0c;主要有以下四点&#xff1a; &#xff08;1&#xff09;接口的信号电平值较高&#xff0c;易损坏接口电路的芯片。RS232接口任何一条信号线的电压…

RS232,484,422区别

RS232,484,422区别 1、RS-232-C RS-232-C是美国电子工业协会EIA&#xff08;Electronic Industry Association&#xff09;制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写&#xff0c;232为标识号&#xff0c;C表示修改次数。它的全名是"数据终端设备&#xf…

RS-232(or RS-485)、ch340(or cp2102)的关系

一、首先要知道几点&#xff1a; 1.PC是RS-232电平&#xff08;简称232&#xff09;&#xff0c;单片机是TTL电平&#xff0c;两者是不兼容的&#xff1b; 2.另外&#xff0c;老台式机可能会有DB9串口&#xff0c;但那输出的是232电平信号&#xff0c;所以不能直接与MCU相连&am…

串口RS232

串口RS232 1. 串口简介2. 串口RS232接口3. 代码实现UART接收模块UART发送模块顶层模块 4. 下板验证 1. 串口简介 通用异步收发传输器&#xff0c;英文全称Universal Asynchronous Receiver/Transmitter&#xff0c;简称UART UART UART是一种通用的数据通信协议&#xff0c;也是…

RS-422接口定义

RS-422接口定义 RS-422接口定义 什么是RS-422 接口&#xff1f; RS-422 的电气性能与RS-485完全一样。主要的区别在于&#xff1a; RS-422 有4 根信号线&#xff1a;两根发送&#xff08;Y、Z&#xff09;、两根接收&#xff08;A、B&#xff09;。由于RS-422 的收与发 …

什么是rs232?

转载&#xff1a;https://www.usr.cn/News/1626.html 什么是RS232协议?   RS232协议是一种流行的串行接口&#xff0c;用于将计算机连接到诸如串口服务器之类的联网设备。我们将了解用于实现RS232的串口引脚以及有关该协议的一些其他参考信息。   RS232协议使用不同于标准…

RS-232/RS-485/RS-422通信协议介绍

1、RS-232 (1) 基本概念 RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准&#xff0c;被广泛用于计算机串行接口外设连接&#xff0c;像有些老式PC机上就配置有RS232接口。RS232的工作方式是单端工作方式&#xff0c;这是一种不平衡的传输方式&#xff0c;收…