当前位置: 首页 > 新闻中心 > 乐球吧nba在线直播
返回
列表

【STC单片机学习】第十三课:串口通信和RS485

发表时间: 2024-01-29 作者: 乐球吧nba在线直播

  (1)人和人之间的通信:交谈、写信(滞后)、烽火、手势等 (发收双方+媒介)

  (2)人和计算机之间的通信:按键、鼠标、触摸屏、显示器等 (以后会不会用脑电波来和计算机通信?)

  咱们学习的所有的通信,都是计算机和计算机之间的通信:WiFi、Zigbee、SPI、I2C、GSM/GPRS.....,后面讲的通信都是指计算机和计算机的通信!

  (2)基础信息单元(bit位/字节/数据包...):信息是基础信息单元的整数倍

  (3)有效信息的编码、传输和解码(信息都是要编解码的,编码的原因是和传输信道有关的)

  比如:你想发送“吃饭”,先编码成二进制,再成电平信号,解码是和编码对应的。

  简单来说就是发送方和接收方按照同一个时钟节拍工作就叫同步,发送方和接收方没有统一的时钟节拍、而各自按照自己的节拍工作就叫异步。

  通信的发送与接收设施使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设施规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有 4800bps、9600bps、115200bps 等。

  不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据来进行打包,以数据帧的格式传输数据。

  收发设备上方会使用一根信号线传输信号,在时钟信号驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。

  半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它其实就是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。

  全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

  电平信号:以GND为参考电平,另一根线传输电平,和GND的电压差来代表高低电平。

  差分信号:差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相反(180°),极性相反。在这两根线上传输的信号就是差分信号。

  电平信号的 2 根通信线之间的电平差异容易受到干扰(耦合干扰),传输容易失败;串口通信属于这种电平信号!

  差分信号不容易受到干扰因此传输质量较为稳定,现代通信一般都使用差分信号,电平信号就没有了。

  1.13.1 中咱们讲了异步/同步通信、串行/并行通信、单工/双工/全双工通信,这三种通信组合起来就是多种通信方式,例如:UART(通用异步收发器):全双工异步串行通信

  (1)串行通信:一种特定的通信协议,早期发明的时候没有起名字,所以这种通信协议就叫做串行通信!USB这种按理说也属于串行通信,只不过现在单独拿出来讲了!

  (2)以后看见这几个词:串行通信、串口通信、UART、USART,说的都是串行通信

  (1)早期:计算机之间短距离通信(15米内),不能做长距离的通信。属于完备通信机制(会考虑到很多的因素,有一个完备的协议规定)

  (2)现在:CPU之间近距离通信、调试信息输入输出,非完备通信(现在因为不用来做重要通信,所以像速率协商、校验都去掉了)

  用RS232的原因:单片机芯片串口和 PC机rs232 的电平标准是不一样的:

  现在9线基本上被淘汰了,就算你看到有9线的,也可能只用了其中的3根线,像下面这种。所以现在大多数都是3线)数据的发送和接收

  -例如:每秒钟传送 240 个字符,而每个字符格式包含 10 位(1 个起始位、1 个停止位、8 个数据位),这时的比特率为:10 位×240 个/秒 = 2400 bps

  -例如:如果在通信传输中,有 0V、 2V、4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即两个二进制比特位,此时波特率是比特率的一半。

  常见的通信码元都是两种状态,所以波特率就等于比特率,常见的有常用的波特率有 4800bps、9600bps、115200bps等。

  RS232一般遵循“ 96-N-8-1”原则:9600波特率、N无校验位、8位数据位、1位停止位

  (1)串行通信功能是SoC的一个内部外设提供的,与CPU本身无关,CPU只是处理通信的数据运算+控制!

  这个好理解吧,上面芯片和芯片可以通信,芯片和PC可以通信。1.13.3.2、STC51单片机的串行通信简介

  SM0/FE:当SMOD0/PCON.6 = 1时,用作FE:帧错误检测;(硬件自动控制)

  当SMOD0/PCON.6 = 0时,用作SM0,和SM1共同指定串行通信工作方式:

  硬件在发送完一帧数据后会将一个标志位置位(标志位本来是0)。软件要一直读取这一个标志位的值来判断硬件是否完成了发送(如果读出来是0就表示硬件还在发还没完还在忙,软件就等待;如果读出来的是1则说明硬件已经发完了上一帧数据,这时候软件就给硬件发送一帧数据)。

  因为串口发送完这个事件对CPU来说是个异步事件,所以这里查询方式来处理和之前讲过的查询方式处理按键是非常类似的。

  查询方式处理的劣势是CPU必须一直守着串口发送,在串口发送完所有字节之前CPU不能离开去做别的事情,这对CPU来说是极大的浪费(因此CPU的速度比串口发送的速度快多了)。因此用中断方式来处理串口发送是非常合适的,能提高CPU使用率。

  (2)所谓波特率加倍,就是正常计算出的波特率假设是2400,那么SMOD=1时则实际的波特率就是4800;当SMOD=0时不加倍,也就是2400还是2400.

  SMO:= 1,方式1、2、3波特率加倍;= 0,方式1、2、3波特率不加倍!

  是2个缓冲器,写SBUF的操作完成待发送数据的加载,读SBUF的操作可获得已接收到的数据。两个操作分别对应两个不同的寄存器,1个是只写寄存器,1个是只读寄存器。

  1.13.6.STC51的串行通信实战1--接线单片机通过串口连接起来,目的是51单片机和PC机的串口工具收发数据!

  1.13.6.1、硬件接线)PC机的串口情况:台式机串口(DB9/USB转串口)、笔记本USB转串口(笔记本里面有个芯片

  1.13.6.2、接线G,也就是直接用单片机的USB(最推荐),单片机默认跳线接口USB转串口线接口的USB转串口线)使用TTL接口USB转串口线:只接三根线:TxD、RxD、GND可以直接拿我们的电脑和P3.0、TxD、GND接起来通信,但是电脑这边不太好弄,还需要买一个USB转TTL的线、使用板载CH340进行串口实践

  预设条件:48-N-8-1 :4800波特率、N无校验位、8位数据位、1位停止位

  ②确定 T1 的工作方式(TMOD 寄存器):T1的工作方式的选择去看手册:8.3 P195

  TL1 的溢出不仅置位 TF1 ,而且将 TH1 内容重新装入 TL1 , TH1 内容由软件预置,重装时 TH1 内容不变。

  1.13.10.2、串口接收函数编写,需要用中断ET1 = 1;中断处理函数,见手册:

  // 至此已经读到了PC发给单片机的1个字节,但是单片机没有显示器没法显示

  (2)理论上TTL电平通信距离更短(3)实际上几百米也有人宣称做到了,但是稳定性不能够确保(4)波特率越高通信距离越近:最常用:9600/115200

  (1)提高电压标准(2)提高通信线抗干扰能力、降低阻抗(加绝缘层/加网丝/采用平衡驱动器)(3)使用差分信号

  RS485 的电气特性:逻辑“1”以两线 的数据最高传输速率可达 35Mbps,在1200m 时,传输速度可达 100Kbps。

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

  最大通信距离1200多米,一般最大支持 32 个节点,若使用特制的 485 芯片(MAX485),能够达到128 个或者 256 个节点,最大的能支持到 400 个节点。

  (5)差分信号负逻辑、半双工、只提供物理层通信能力,不提供数据链路层协议,需要用户自定义,或者使用标准协议如MODBUS协议。

  和之前程序相比,只要增加一位RS485_RE来控制接收还是输出就可以了,代码如下!

  1 前言 现场可编程逻辑器件(FPGA)在高速采集系统中的应用越来越广,由于FPGA对采集到的数据的解决能力比较差,故需要将其采集到的数据送到其他CPU系统来实现数据的处理功能,这就使FPGA系统与其他CPU系统之间的数据通信提到日程上,得到人们的急切关注。本文介绍利用VHDL语言实现 FPGA与单片机的串口异步通信电路。 整个设计采用模块化的设计思想,可分为四个模块:FPGA数据发送模块,FPGA波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。这篇文章着重对FPGA数据发送模块实现进行说明。 2 FPGA数据发送模块的设计 根据RS232 异步串行通信来的帧格式,在FPGA发送模块中采用的每一帧格式为:1位开始位 8

  的设计 /

  调了一天,终于通了。 这个板子有点坑人,看引脚功能图UART_RXTX是P3.4P3.5,结果调了半天都不通,上网查了很久才知道USB的串口是P4.4P4.5。 对于我这种初学者来说,要走的路还很长呀! #include io430.h void delay(int ms) //延时函数 { for(int i=0;i ms;i++) for(int j=0;j 240;j++); } void send_buf(unsigned char *ptr) //发送字符串 { while(*ptr != ) { while(!(UCA1IFG & UCTXIF

  1、串行与并行通信 串行通道中,有效信息被编码后串行的从单根传输线上传送出去。譬如发送ASCII字符’a’,我们大家可以将’a’对应的ASCII码97(0x61)分作8个bit在传输线上顺序依次传输。 与串行传输相对应的是并行传输,并行传输一般有多根并列的传输线可以同时传输多个bit数据。譬如8线的并行传输,可以同时传输8个比特。因此在线速相同的情况下并行传输效率更加高,但同时布线成本更高。 串行硬件接口简单,只需要 3 根线:一是底线,二是发送,三是接收。 UART 使用标准的 TTL/CMOS 逻辑电平(0~5V)来表示数据,用 1 表示高 电平,用 0 表示低电平,为增强数据的抗干扰的能力、提高传输距离,通常将 TTL

  随着计算机技术的快速发展和大范围的应用,上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS2232或者RS2485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC 机,由PC 机对这一些数据进行处理或显示。本文介绍PC 机和单片机通信在一种基于 C8051F  单片机的波形发生器中的应用,在上位机上显示正弦波的幅值和频率,由上位机发送指令能改变波形幅度及频率。 硬件电路的设计 MCS251 单片机有一个全双工的串行通讯口UART,利用其RXD 和TXD

  电路设计 /

  本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c51;找到时钟部分的原理图修改为你自己的电路上的io即可.这是一整个单片机开发板的电路图其他的忽略. /**************************通过串口通信调整时间******************************/ /** *功能:单片机开始上电时点阵显示倒计时3,2,1,0,然后点阵LED关闭显示 * 定时器和串口开始工作,定时器开始一秒计时,并在数码管上显示时,分,秒 * 此计时器能够最终靠串口发送数据调整时间,可调整时与分,当调整分钟时秒清零 * 附加功能:当单片机收到数据时有蜂鸣器响一声作为提示 * 彩色流水灯以20毫秒的速度向

  对RS232转RS485总线网络一般要使用终接电阻进行匹配。但在短距离与低速率下能不用考虑终端匹配。那么在啥状况下不用考虑匹配呢?理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握,美国MAXIM公司有篇文章提到一条经验性的原则可拿来判断在什么样的数据速率和电缆长度时有必要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线倍以上时就可以不加匹配。例如具有限斜率特性的RS-485接口输出信号的上升或下降时间最小为250ns,典型双绞线AWG PVC电缆),那么只要数据速率在250kb/s以

  Two-Transistor Forward Converter Introduction

  STM32CubeMX and STM32Cube HAL basics

  有奖直播 是德科技 InfiniiMax4.0系列高带宽示波器探头新品发布

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!跟帖赢好礼~

  【下载】LAT1362 利用STM32 TIMER触发ADC实现分组转换

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【下载】LAT1347 基于STM32CubeIDE移植ClassB 4.0

  【下载】LAT1340 STM32H5读取温度传感器校准值时进HardFault的原因分析

  【生态】使用STM32CubeMX在STM32U5上配置LPBAM应用程序

  【MPU】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【新品】降本增效这事儿,就看STM32C0,低至0.24美元” ,开机即可物联世界

  【GUI开发】TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!

  【边缘AI】突破边缘AI应用的次元壁:首届意法半导体边缘人工智能峰会举行

  【生态系统】STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【无线携手创新微MinewSemi共创低功耗模块,引领中国智能连接未来

  因为公司有一部分设备生产年代久远,用的PLC非常古老的,有一款东芝EX20 40的用的单片机是P8051AH,其CPU板的图片如下。因此想尽可能的 ...

  本文设计了一种基于无线单片机的无线射频收发系统。该系统由发送模块和接收模块组成。发送模块主要将要发送的数 ...

  1 引言在如今的快速嵌入式系统模块设计中,目前比较流行的方案是在FPGA内集成应用软件或是软IP平台,以简化工序、加速产品面市日程。为此,很 ...

  W78E516D为6T 12T 8051单片机系列,其特点为管脚兼容于传统12T 8051。W78E516D提供工业温度规格、宽电压工作范围 2 4V至5 5V,支持在线 ...

  目前市场上USB设备的种类非常之多,但是这些设备会有一些共同的特性,依据这一些特性可以把USB设备划分为不同的类,如显示设备、通信设施、音 ...

  消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程