1、RS485接口原理:

1.串口:串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要接口电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协议进行通讯以及设备控制。

典型的串行通讯标准是RS232和RS485,定义了电压、阻抗等,但没有对软件协议进行定义。

2.485接口:属于OSI模型物理层的电气特性规定为2线、半双工、多点通信的标准。与RS232电气特性不一样。用缆线两端电压差值来表示信号传递。RS485仅规定接收和发送端的电气特性,无数据协议的规定。

2、RS485特点:

1.接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片。

2.传输速率高。10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,      传输速度可达100Kbps。

3. 抗干扰能力强。RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干     扰能力增强,即抗噪声干扰性好。

4、传输距离远,支持节点多。RS485总线最长可以传输1200m以上(速率    ≤100Kbps)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个    或者256个节点,最大的可以支持到400个节点。

3、RS485连接方式 :推荐使用在点对点网络中,线型,总线型,不能是星型,环型网络。理想情况下RS485需要2个匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪声,而且线移需要双端的电压差。没有终接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。连接线路图:

在上面的连接中,如果需要添加匹配电阻,我们一般在总线的起止端加入,也就是主机和设备4上面各加一个120Ω的匹配电阻。

4、RS485收发器:

图中 A、 B 总线接口,用于连接 485 总线。 RO 是接收输出端, DI 是发送数据收入端, RE是接收使能信号(低电平有效), DE 是发送使能信号(高电平有效)。通过该芯片连接串口,配置好串口后就可以进行485通信。

5、一段较好的代码学习:

在这段代码当中,如果按下了按键,返回值为1,说明本机是发送者,在进行if判断之后,进入发送数据,由于本机是发送者没有进入中断接收数据,所以在进入RS485_Receive_Data(rs485buf,&key)函数是不会有CNT的加加,而对于赋值的len指针来说,通过自身存入了key的地址,所以key此时依然为0,不会执行下边的判断程序,对于接收机来收,触发中断,CNT加加,通过指针指向的地址,执行下边的判断。(传入地址通过指针指向地址,向指针指向地址变量赋值。重要)

1.主函数:#define KEY0_PRES     1    //KEY0按下
#define KEY1_PRES    2    //KEY1按下
#define KEY2_PRES    3    //KEY2按下
#define WKUP_PRES   4    //KEY_UP按下//按键处理函数
//返回按键值
//mode:0,不支持连续按;1,支持连续按;
//0,没有任何按键按下;1, KEY0 按下;2, KEY1 按下;3, KEY2 按下 ;4, KEY3 按下 WK_UP
//注意此函数有响应优先级,KEY0>KEY1>KEY2>KEY3!!
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1; //按键按松开标志
if(mode)key_up=1; //支持连按
if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
{delay_ms(10); //去抖动key_up=0;if(KEY0==0)return KEY0_PRES;else if(KEY1==0)return KEY1_PRES;else if(KEY2==0)return KEY2_PRES;else if(KEY3==1)return WKUP_PRES;
}else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;
return 0; // 无按键按下
}while(1){key=KEY_Scan(0);if(key==KEY0_PRES){for(i=0;i<5;i++){rs485buf[i]=cnt+i;}RS485_Send_Data(rs485buf,5);                                    }         RS485_Receive_Data(rs485buf,&key);if(key){if(key>5)key=5;for(i=0;i<key;i++)LCD_ShowxNum(30+i*32,230,rs485buf[i],3,16,0X80);  }          }
}2.发送到485总线函数:
//RS485 发送 len 个字节.
//buf:发送区首地址
//len:发送的字节数(为了和本代码的接收匹配,这里建议不要超过 64 个字节)
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
RS485_TX_EN=1; //设置为发送模式
for(t=0;t<len;t++) //循环发送数据
{
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
USART_SendData(USART2,buf[t]);
}
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
RS485_RX_CNT=0;
RS485_TX_EN=0; //设置为接收模式
}3.接收485总线数据函数:
//RS485 查询接收到的数据
//buf:接收缓存首地址
//len:读到的数据长度
void RS485_Receive_Data(u8 *buf,u8 *len)
{
u8 rxlen=RS485_RX_CNT;
u8 i=0;
*len=0; //默认为 0
delay_ms(10); //等待 10ms,连续超过 10ms 没有接收到一个数据,则认为接收结束
if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了
{
for(i=0;i<rxlen;i++)
{
buf[i]=RS485_RX_BUF[i];
}
*len=RS485_RX_CNT; //记录本次数据长度
RS485_RX_CNT=0; //清零
}
}

STM32运用RS485通信总结相关推荐

  1. STM32的RS485通信

    1.简介 与CAN类似,RS-485是一种工业控制环境中常用的通讯块议,它具有抗干扰能力强.传输距离远的特点.RS-485通讯协议由RS-232协议改进而来,协议层不变,只是改进了物理层,因而保留了串 ...

  2. STM32:RS485通信和Modbus通信协议汇总

    RS485通信和Modbus通信协议汇总 1. 主从模式 RS-485上的软件层协议ModBus主要依赖于主从模式.主从模式是指在半双工通讯方式上,2个或者2个以上的设备组成的通讯系统中: (1) 至 ...

  3. STM32物联网项目-RS485通信(Modbus协议)

    RS485通信(Modbus协议) 协议介绍 RS485介绍:http://t.csdn.cn/bOuFX Modbus协议:http://t.csdn.cn/mgioX CubeMX配置 RS-48 ...

  4. 基于UCOSII的RS485通信(STM32F107)

    一.实现效果 基于ucosii实时操作系统的RS485通信,采用USART + DMA进行收发, 二.开发环境 开发工具:KEIL V5 开发板: STM32f107RC 采用方式:USART + D ...

  5. 基于STM32F103单片机的智能温室大棚RS485通信温湿度监测

    系统功能设计 (末尾附文件) STM32单片机智能大棚485上传温湿度光照检测补光 本系统由STM32单片机RS485采集板和STM32单片机RS485显示按键板组成. 采集板由STM32F103C8 ...

  6. 嵌入式STM32入门之STM32基础串口通信

    STM32基础串口通信 一.前言 二.串口协议 (1)浅谈设备通信方式 (2)具体串口协议 (3)STM32的串口通信 (4)RS-232通信协议 (5)USB To TTL(CH340) 5.1 C ...

  7. RS485通信如何设计EMC电路?

    目录 1.RS-485标准 2.电磁兼容性 2.1.静电放电测试 2.2.电快速瞬变测试 2.3.电涌瞬变测试 3.通过/失败标准 4.瞬变保护 5.RS-485瞬变抑制网络 5.1.保护方案1 5. ...

  8. 三菱的触摸屏usb驱动_资深工程师一步一步教你PLC与西门子触摸屏的RS485通信

    点击上方"蓝字"关注我们 今天为大家带来的是PLC与西门子触摸屏的RS485通信,RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485.R ...

  9. fullcalendar 显示的时间间隔只有四十五分钟_NHR系列智能显示控制仪表RS485通信中应用...

    请点击上方蓝字关注我们! 01 摘要 NHR系列智能显示控制仪表是经过多年开发制造经验而设计生产,集诸多全新功能于一身的新一代智能显示控制仪表.针对现场温度.压力.液位.速度.流量等各种信号进行采集. ...

最新文章

  1. 只用CPU开发自动驾驶轮船,他们居然做到了
  2. 交换机生成树协议配置
  3. Hello World With JBoss Modules
  4. 【MATLAB统计分析与应用100例】案例014:matlab读取Excel数据,调用stepwise函数作交互式逐步回归分析
  5. C语言520心形表白,初学者福利!!
  6. 华为回应P40石墨烯电池传闻:系谣言
  7. windows live 2012发布文章解决办法??
  8. HDU5687 Problem C【字典树】
  9. 孙鑫VC学习笔记:第十一讲 (五) 如何使窗口具有滚动条
  10. factory工厂模式之工厂方法FactoryMethod
  11. logo下方显示技术支持信息_用“技术支持信息”显示的OEM信息备份修改方法
  12. 计算机图形学在游戏设计中的应用
  13. 反转单链表(C语言)
  14. 导弹巡航追踪目标模拟程序(1)源码版--matlab
  15. Failed to compile with 1 errors
  16. 【重磅】百度智能运维工程架构
  17. linux oracle开启监听服务器,linux服务器启动oracle监听端口
  18. 统计学(五):几种常见的假设检验
  19. java编程之如何计算正弦值、余弦值和正切值
  20. 【吴恩达deeplearning.ai】深度学习(7):卷积神经网络

热门文章

  1. 面试中如何回答“你的缺点是什么?”
  2. iOS9.0 canOpenURL: failed for URL: xx - error:This app is not allowed to query for scheme xx
  3. 【火影之卡卡西动漫主题】
  4. 淘宝商品详情API接口(网页版,APP端二合一接口)
  5. 图像抓拍录像视频捕获软件微软Amcap怎么使用
  6. js find(),findIndex()方法的使用
  7. laragon mysql版本_laragon mysql8 安装
  8. 一个摆烂年轻人对手机的需求
  9. 小程序源码:和平精英吃鸡捏脸数据助手-多玩法安装简单
  10. 诚信可靠的深圳python_ai人工智能哪家正规诚信经营