当前位置: 首页 > 新闻中心 > 常见问答
返回
列表

关于51单片机中的几种通信模式与总结

发表时间: 2023-12-31 作者: 常见问答

  在硬件传输过程中少不了各模块的通信,就近来学习到的知识做一个简单的梳理与总结

  通信的方式分为多种,按照数据传送方式能分为串行通信与并行通信,按照通信的数据同步方式,可大致分为异步通信与同步通信,按照数据的传输方向可大致分为单工,半双工和全双工通信。

  发送与接收设施使用各自的时钟控制数据的发送与接收过程,异步通信以字符为单位做传输

  要建立发送方对于接收方时钟的直接控制,使得双方能达到完全同步,保持位同步关系,也保持字符同步关系,实现方式有两种:外同步与自同步

  “96”表示通信波特率为9600,通常使用的是异步串口通信,没有时钟线,

  SM2:多机通信控制位,大多数都用在方式 2 和方式 3。当 SM2=1 时可通过收到的 RB8 来控制是否激活 RI(RB8=0 时不激活 RI,收到的信息丢弃;RB8=1 时收到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。当SM2=0 时,不论收到的 RB8 为 0 和1,均可以使收到的数据进入 SBUF,并激活 RI(即此时 RB8 不具有控制 RI 激活的功能)经过控制 SM2,能轻松实现多机通信。

  REN:允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

  TB8:在方式 2 或方式 3 中,是发送数据的第 9 位,可以用软件规定其作用。

  RB8:在方式 2 或方式 3 中,是接收到数据的第 9 位,作为奇偶校验位或地址帧/数据帧的标志位。在方式 1 时,若 SM2=0,则 RB8 是接收到的停止位。

  TI:发送中断标志位。在方式 0 时,当串行发送第 8 位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使 TI 置 1,向 CPU 发中断申请。在中断服务程序中,必须用软件将其清 0,取消此中断申请。

  RI:接收中断标志位。在方式 0 时,当串行接收第 8 位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。也必须在中断服务程序中,用软件将其清 0,取消此中断申请

  SMOD:波特率倍增位。在串口方式 1、方式 2、方式 3 时,波特率与 SMOD 有关,当SMOD=1 时,波特率提高一倍。复位时,SMOD=0。

  (1)接口电平低,不会非常容易损坏芯片。RS485 的电气特性:逻辑“1”以两线”以两线)V 表示。接口信号电平比 RS232 降低了,不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。

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

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

  (4)传输距离远,支持节点多。RS485 总线Kbps)一般最大支持 32 个节点,若使用特制的 485 芯片,能够达到128 个或者 256 个节点,最大的能支持到 400 个节点

  I2C(Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的

  一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线只有两根双向信号线。一根是数据线 SDA,另一根是时钟线 SCL。由于其管脚少,硬件实现简单,可扩展性强等特点,因此被广泛的使用在各大集成芯片内。

  (2)只使用两条总线线路,一条双向串行数据线(SDA).一条串行时钟线(SCL) 数据线用来表示数据,时钟线)每个连接到总线的设备都有一个独立的地址,主机可通过这个地址进行不同设备之间的访问。

  (4)总线通过上拉电阻接到电源,当I2C设备空闲时,会输出高阻态,当所有设备都空闲输出高阻态,上拉电阻把总线)当多个主机使用总线时,防止数据冲突,会利用仲裁的方式决定哪个设备占用总线)具有三种传输模式,标准模式传输速率为 100kbit/s,快速模式为400kbit/s,高速模式下可达 3.4Mbit/s,但目前大多 I2C 设备尚不支持高速模式

  仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程

  定义了通信的起始和停止信号,数据有效性,响应,仲裁,时钟同步和地址广播等环节(1)数据有效性

  I2C总线在进行数据传送时,时钟信号为高电平期间,数据线上的数据一定要保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平与低电平状态才允许变化

  SCL线为高电平期间,SDA由高电平向低电平的变化表示为起始信号,SCL线为高电平期间,SDA线由低电平向高电平的变化表示为终止信号

  在发送器件传输完一个字节的数据后,后边必须跟一个校验位,校验位是接收端通过控制SDA(数据线)来实现,以提醒发送端数据我这边已经

  接收完成,数据传送能够继续进行。这个校验位实际上的意思就是数据或地址传输过程中

  的响应。响应包括“应答(ACK)”和“非应答(NACK)”两种信号。作为数据接收端时,当设备(无论主从机)接收到 I2C 传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发送“应答(ACK)”信号即特定的低电平脉冲,发送方会继续发送下一个数据;若接收端希望结束数据传输,则向对方发送“非应答(NACK)”信号即特定的高电平脉冲,发送方接收到该信号后会产生一个停止信号,结束信号传输。

  每一个字节一定要保证是 8 位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有 9 位)。

  总线 位寻址兼容,还能够结合使用。10 位寻址不可能影响已有的 7 位寻址,有 7 位和 10 位地址的器件可以连接到相同的 I2C 总线 位寻址为例进行介绍。

  当主机发送了一个地址后,总线 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,其他地址不同的器件将被忽略后面的数据信号。至于是从机接收器还是从机发送器,都由 R/W 位决定的。从机的地址由固定部分和可编程部分所组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的 7 位寻址位有 4 位是固定位,3 位是可编程位,这时仅能寻址 8 个同样的器件,即可以有 8 个同样的器件接入到该 I2C 总线系统中。

  SPI是串行外设接口,是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

  缺点:没有指定的流控制,没有应答机制确认是否接受到数据,所以与IIC总线协议比较在数据可靠性上有一定的缺陷特点:

  (1):高速,同步,全双工 非差分,总线):主从式通信模式(一个SPI通讯系统要包含一个(只有一个)主设备,一个或多个从设备,SPI的接口读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理)

  以主从方式工作,通常有一个主设备和一个或多个从设备,需要至少四根线,MISO,MOSI,SCLK,CS

  SPI的四种通信模式,不同从设备在出厂时就配置为某种模式,只能改变主设备的SPI并进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式时钟极性CPOL用来配置SCLK的电平处于何种状态(空闲态还是有效态),时钟相位CPHA用来配置数据采样是在第几个边沿;

  CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时;

  CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时;

  在高电平有效状态时,第一边沿为上升沿,第二边沿为下降沿;在低电平有效状态时,第一边沿为下降沿,第二边为上升沿

  编辑:什么鱼 引用地址:关于51单片机中的几种通信模式与总结上一篇:51单片机—使用PWM对直流电机调速下一篇:51单片机串口通信(UART)

  这次我来分享一下我的LCD1602的编程经验: 先说明一下,我下面要说的LCD1602的芯片驱动是HD44780,如果你们的LCD1602驱动芯片不是HD44780,那么下面的内容是不适用的。 我对LCD1602的整体理解 这里说一下我对LCD1602的整体理解哈,LCD1602是一个可以显示两行字符的LCD显示器,每一行可以都写入40个字符,但是每行都只有前16个字符可以显示,每行后面的24个字符无法立即显示,只说不容易明白,下面看一下示意图: 另外LCD1602只能显示字符,数字和一些简单的符号,是无法显示汉字的,切记。 LCD1602引脚: 然后再说一下引脚,每当学习一个芯片或者模块,最先要了解

  --LCD1602编程入门 /

  LED数码管是单片机外围接口设备中常用的显示设备,有七段管和米字管两种,实验室中常用的是七段管。其工作方式有两种:共阴极和共阳极。所谓共阴极是把LED的com端都接地,而共阳极就是把com端都接高电平。其驱动显示方式也有两种:静态显示和动态显示。 静态显示中每个数码管占用单片机的一个八位口I/O口,工作时点亮的段常亮。于该种方式而言,硬件电路简单,编程简单,但是浪费单片机的I/O口。下面简单演示一下该种驱动方式。 P2口接一个数码管,数码管显示的数字每秒钟自动加一,加到9后清0,一直循环,本实验中数码管采用共阴极接法。 实验原理图如下: 实验程序如下: view plain copy #include #def

  入门之静态数码管 /

  以下程序是转载的,自己觉得是很好的学习单片机多进程编程的参考资料。 //头文件 #include reg52.h #include intrins.h //宏定义 #define uchar unsigned char #define uint unsigned int #define TN 65436 //进程1,2,3执行时间之比为 T1:T2:T3 (时间单位us) #define TN1 62536 //1个进程循环周期内进程1执行的时间T1us TN1=(65536-T1) #define TN2 55536 //1个进程循环周期内进程2执行的时间T2us TN2=(65536-T1) #

  自己亲手做的一个点阵屏 仿真+实物, 送给女朋友的生日礼物 单片机+液晶显示 带仿真文件 妞都狠钟爱这一个了,显示生日快乐4个字然后还有心型,还有i love you,全部源码和仿真文件的下载地址是:下面是部分源码预览: #include at89x51.h #include DS1302.h #define din P3_2 #define load P3_3 #define clk P3_4 #define uchar unsigned char #define uint unsigned int unsigned char code

  驱动16*16点阵显示生日快乐程序 /

  题目如下 通过串口助手控制 LCD 显示屏,通过 LCD1602 显示并保存在 EEPROM 中,实现 数据的掉电保存(例 如:串口向单片机发送一串英文字符,该字符在 LCD 上显示出 来,若按下 k1 则实现数据的保存,按下 k2 实 现读取上次保存的数据,显示在 1602 上) 效果如下 #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 #include i2c.h #include string.h typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbi

  字符串 EEPROM存储与读取的问题 /

  有了LCD12864,人机交互就友好的多了。 原理图: 上代码: //程序可能,驱动12864液晶显示文字 //本程序有问题,见实际效果,1数码管在接入串口线无法多页显示 #include reg52.h #define uint unsigned int #define uchar unsigned char //端口声明 sbit duanxuan=P2^6; //数码管段选端 sbit weixuan=P2^7; //数码管位选端 sbit lcd12864_R

  0 引言 在快速的提升的电子和电信技术系统中, 电源的优劣在某些特定的程度上决定着电信设备的性能和寿命。因此, 人们对程控恒流器件的需求也日益迫切。虽然目前市场上的数控恒压技术已很成熟, 数控电压源产品也已朝着智能化和小型化的趋势发展, 且价格也慢慢变得便宜。但是, 在恒流源方面, 尤其是数字控制的恒流技术则由于起步较晚, 高性能的数控恒流器件的开发和应用存在着巨大的发展空间。为此, 本文以C8051FF330D单片机为控制核心, 并利用C8051FF330D的I2C串行总线扩展外围器件, 同时以模块化设计方法,设计了一种程控恒流源。而且整个电源还具有功耗低、体积小, 电流纹波小、控制精度高和运行稳定等特点。 1 系统总

  的程控恒流源设计 /

  一,为何51单片机爱用11.0592MHZ晶振? 其一:由于它能够精确地划分红时钟频率,与UART(通用异步接纳器/发送器)量常见的波特率有关。特别是较高的波特率(19600,19200),不论多么古怪的值,这些晶振都是精确,常被运用的。 其二:用11.0592晶振的缘由是51单片机的定时器致使的。用51单片机的定时器做波特率发生器时,假如用11.0592Mhz的晶振,根据公式算下来需求定时器设置的值都是整数;假如用12Mhz晶振,则波特率都是有误差的,比如9600,用定时器取0XFD,实践波特率10000,通常波特率误差在4%摆布都是能够的,所以也还能用STC90C516 晶振12M 波特率9600 ,倍数时误差率6

  解锁【W5500-EVB-Pico】,探秘以太网底层,得捷电子Follow me第4期来袭!

  参赛冲击【万元大奖】啦|2023 DigiKey“智造万物,快乐不停”创意大赛

  【下载】LAT1317 STM32CubeProgrammer和STM32CubeIDE协同调试的方法

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

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

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

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

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

  【Matter】康普和意法半导体强强联手,让物联网设备Matter证书管理既安全又简便

  【方案】STM32WLE5 x 利尔达LoRa模组助力亚残会开幕式惊艳秀

  【新品】意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效

  2023年12月20日,中国 - 意法半导体新软件帮助工程师把STM32微控制器应用代码移植到性能更强大的STM32MP1微处理器上,将嵌入式系统模块设计性 ...

  瑞萨推出面向图形显示应用和语音/视觉多模态AI应用的 全新RA8 MCU产品群

  瑞萨基于Arm® Cortex®-M85处理器的产品在优化图形显示功能的同时,为楼宇自动化、智能家居、消费及医疗应用带来超高性能和领先的安全性2 ...

  Microchip推出PIC18-Q24 系列单片机 为增强代码安全性设置新标准

  该系列单片机新增电压电平转换功能,有助于提高灵活性并降低系统成本从手机、汽车到智能恒温器和家用电器,慢慢的变多日常设备与云端相连。随 ...

  今天就分享一个读者问到的关于中断处理的问题。 很多人都知道STM32CubeMX这套工具的一个目的:减少开发者对STM32底层驱动的开发时间,把重 ...

  在万利STM32学习板的USB摇杆例程中,摇杆的按键处理并没有消抖处理,因此重新修改了摇杆的驱动,顺便还增加了两个按键以及摇杆中键下压的驱 ...

  STM32F103+ESP8266接入机智云 实现小型IOT智能家居项目

  stm32mp1 Cortex M4开发篇2:通过GPIO点亮LED灯详解

  消息称阿里云削减政企定制项目和 IoT 硬件集成业务,扩大 AI 部门招聘

  立讯精密 21 亿元投资和硕昆山工厂,成仅次富士康的第二大 iPhone 组装商

  下载、评论赢双重好礼|PI 邀您跟littleshrimp一起拆解小米最新二合一充电宝

  TMS320F28377S LaunchPad俱乐部已成立,让我们大家一起见证它高性能的魅力!

  ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云: