📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处
文章目录
- 单片机常见外设接口有哪些?
- UART
- 基础概念
- 通信协议
- 硬件结构
- 工作原理
- 电平标准
- 特点
- GPIO
- 基本概念
- 寄存器相关
- 工作模式
- 基本操作
- 优点
- 常见应用场景
- SPI
- 基本概念
- 物理连接
- 通信协议
- 工作原理
- 优缺点
- 软件编程要点
- I²C
- 基础概念
- 物理连接
- 通信协议
- 工作模式
- 通信速率
- 优缺点
- 软件编程要点
单片机常见外设接口有哪些?
接口类型 | 特点 |
---|---|
GPIO(通用输入/输出) | 引脚功能灵活,可配置为输入、输出、复用功能或模拟模式;支持上拉、下拉电阻设置以及电平触发中断;常用于连接按键、LED、继电器等简单数字设备 ,进行数字信号的输入输出控制 |
UART(通用异步收发器) | 支持异步通信,可自定义波特率进行数据传输;硬件连接简单,一般只需RX(接收)和TX(发送)两根线;传输距离较短,速率相对不高;常用于单片机与电脑间调试、与蓝牙模块等通信 |
SPI(串行外设接口) | 高速同步串行通信,支持全双工;通常由时钟线SCLK、主机输出从机输入线MOSI、主机输入从机输出线MISO和从机选择线SS组成;主从模式,一个主机可连接多个从机;适合连接高速外部设备,如ADC、FLASH存储器、显示屏等 |
I²C(双线接口) | 低速同步串行总线,仅需数据线SDA和时钟线SCL;支持多主多从架构;通过设备地址进行寻址,占用引脚少;通信速率通常在100kHz到1MHz之间;常用于连接低功耗外设,如温湿度传感器、EEPROM、实时钟(RTC) 等 |
CAN(控制器局域网) | 支持多主设备串行通信,具有高可靠性和强抗干扰能力;能实现较长距离的数据传输(最远可达数公里),且传输速率较高(最高可达1Mbps);主要应用于工业自动化控制、汽车电子系统等领域 |
ADC(模数转换器) | 将模拟信号转换为数字信号,便于单片机处理;有不同的分辨率和采样速率可选;广泛应用于温度、压力、电压等模拟量测量场景,如各类传感器数据采集 |
DAC(数模转换器) | 把数字信号转换为模拟信号;可用于生成模拟控制信号,如音频信号生成、模拟信号驱动等 |
PWM(脉冲宽度调制) | 通过调节脉冲信号的占空比来控制信号的平均值;可用于电机调速、LED亮度调节、电源电压调节等场景 ,实现对外部设备的模拟量控制 |
USB(通用串行总线) | 支持高速数据传输,同时可为设备供电;具备即插即用功能,支持多种设备类型,如存储设备、通信设备、音频设备等;接口标准统一,兼容性好 |
UART
UART(通用异步收发传输器)的知识点主要涵盖以下方面:
基础概念
- 定义:一种通用串行数据总线,用于异步通信,能实现双向全双工传输和接收。
- 历史:可追溯到1960年,最初用于连接微型计算机与电传打字机 。
- 用途:在嵌入式设计中,用于主机与辅助设备通信,如汽车音响与外接AP通信、与PC机及其他器件(像EEPROM)通信等;在手机设计和测试阶段控制CPU与其余部分的讯息传送。
通信协议
- 数据传输方式:将传输数据的每个字符一位接一位地传输。
- 数据帧结构:
- 起始位:逻辑“0”,表示传输字符开始。
- 数据位:可以是4、5、6、7、8位等,常采用ASCII码,从最低位开始传送。
- 奇偶校验位:用于校验资料传送的正确性,使“1”的位数为偶数(偶校验)或奇数(奇校验) ,也可无校验位。
- 停止位:是字符数据的结束标志,可为1位、1.5位或2位高电平,还可提供时钟同步校正机会。
- 空闲位:逻辑“1”,表示当前线路无资料传送。
- 波特率:衡量资料传送速率的指标,指每秒钟传送的符号数。通信双方需设置相同波特率以确保数据正确传输,常见的有9600、115200等。
硬件结构
- 输出缓冲寄存器:接收CPU从数据总线上送来的并行数据并保存。
- 输出移位寄存器:接收输出缓冲器的并行数据,以发送时钟速率逐位移出,实现并行到串行数据的转换。
- 输入移位寄存器:以接收时钟速率逐位移入串行数据,装满后转换为并行数据送往输入缓冲寄存器。
- 输入缓冲寄存器:接收输入移位寄存器的并行数据,供CPU取走。
- 控制寄存器:接收CPU送来的控制字,决定通信的传输方式(异步或同步)、数据格式(数据位个数、有无奇偶校验、停止位位数等)。
- 状态寄存器:存放接口各种状态信息,如输出缓冲区是否空、输入字符是否准备好等,便于CPU查询。
工作原理
- 发送接收:发送逻辑将从发送FIFO读取的数据进行“并→串”转换,按配置输出起始位、数据位、奇偶校验位和停止位;接收逻辑在检测到有效起始脉冲后,对接收位流执行“串→并”转换,并检测各类错误 。
- 波特率产生:波特率除数由16位整数和6位小数组成,波特率发生器用其决定位周期,在足够高系统时钟速率下,可产生标准波特率且误差小。
- 数据收发:发送时数据写入发送FIFO,按预设参数发送,发送FIFO非空时忙标志位有效;接收时,若检测到起始位,接收计数器运行,按规则采样数据,接收到完整字符存于接收FIFO。
- 中断控制:FIFO溢出、线中止、奇偶校验错误、帧错误、接收超时、发送、接收等情况可使UART产生中断,通过查询中断状态函数,软件可在同个中断服务函数处理多个中断事件。
- FIFO操作:包含发送和接收FIFO,可配置不同深度触发中断,解决UART收发中断频繁导致CPU效率不高的问题,按先进先出原则操作。
- 回环操作:可进入内部回环模式,用于诊断或调试,发送的数据被自身接收。
电平标准
- TTL:使用标准TTL逻辑电平(常见5V、3.3V、1.8V ),设备共地,单向通信一根信号线,双向全双工需两根,适用于短距离通信,如电子DIY项目、嵌入式系统等。
- RS - 232:美国电子工业联盟指定的串行数据通信接口标准,电平范围-15V至+15V,典型±12V,用于计算机串行接口和外部设备通信,如调制解调器、打印机等,适用于短距离通信,抗干扰性较好。
- RS - 485:基于RS - 422标准制定,多点、差分信号串行通信标准,以正负差分电平表示数据,支持多个设备在同一通信线传输,通信距离可达1200米,适用于远距离和噪声环境下的通信 。
特点
- 优点:布线简单,只需两根线(TX和RX);不需要时钟信号;可通过奇偶校验位执行错误检查;数据包结构可更改;应用广泛。
- 限制:数据帧最多9位;无法设置多个从站或主站系统;波特率偏差需在10%以内 。
此外,UART与USART(通用同步/异步收发器)有所关联,USART在UART基础上增加了同步功能,多了仅支持输出的时钟,可兼容别的协议或用于特殊用途,但不支持两个USART之间同步通信 。
GPIO
GPIO(General - purpose input/output,通用型输入输出)的知识点主要包含以下方面:
基本概念
- 定义:是一种通用的输入输出接口,像微控制器的“手脚”,通过芯片引脚与外部设备连接,实现单片机等与外部世界的交互,几乎所有微控制器都具备该功能。
- 功能选择:一个引脚可作通用输入(GPI)、通用输出(GPO) 或通用输入与输出(GPIO),如clk generator(时钟发生器)、chip select(片选)等功能。其功能由寄存器配置选择。
寄存器相关
- GPxCON寄存器:用于配置引脚功能。不同端口在功能选择上有差异,如GPACON中每一位对应一根引脚;PORT B - PORT H/J的GPxCON中每两位控制一根引脚,通过设置不同数值确定引脚为输入、输出、特殊功能或保留状态。
- GPxDAT寄存器:用于读写引脚。当引脚设为输入,读取此寄存器可知引脚电平状态;设为输出时,写入相应位可控制引脚输出电平 。
- GPxUP寄存器:用于确定是否使用内部上拉电阻。某位为1时,相应管脚无内部上拉电阻;为0时相应管脚有内部上拉电阻。上拉电阻在引脚处于高阻态时,决定引脚电平状态 。
工作模式
- 输入模式 :
- 浮空输入:电平由外部输入决定,引脚悬空时电平不确定、易受干扰,常用于外部按键输入、IIC和USART等标准通讯协议,是STM32复位后的默认模式。
- 上拉输入:通过上拉电阻将输入信号钳在高电平,外部无信号输入时引脚读高电平,可避免电平浮动导致信号不稳定。
- 下拉输入:借助下拉电阻使引脚在无外部输入时为低电平。
- 模拟输入:信号不经过上拉或下拉电阻,关闭施密特触发器,直接传送到片上外设模块,用于ADC采集电压等场景,获取原始模拟信号 。
- 输出模式 :
- 推挽输出:使用两个MOS管,输出寄存器为’0’时激活NMOS,为’1’时激活PMOS,具备输出高低电平能力,可直接驱动一些负载 。
- 开漏输出:仅使用NMOS,输出寄存器为’1’时端口处于高阻状态,无法真正输出高电平,需外部上拉电阻,可改变上拉电源电压提高驱动能力,还能实现线与功能,常用于IIC等总线协议 。
基本操作
- 配置:使用前需进行配置,步骤包括使能GPIO时钟,设置GPIO方向(输入/输出) 以及配置工作模式。例如在STM32中,通过操作相关寄存器完成这些配置。
- 输出操作:配置为输出模式后,可通过设置输出电平控制外部设备,如控制LED亮灭。操作相关寄存器实现电平设置,部分寄存器支持原子操作,避免多线程冲突 。
- 输入操作:配置为输入模式后,可读取引脚电平状态,如读取按键状态 。
优点
- 低功耗:功率损耗低,如约1μA,远低于微控制器(μC)工作电流(约100μA)。
- 集成接口:内置IIC从机接口,待机模式也能全速工作。
- 封装小成本低:提供小尺寸封装如3mm x 3mm QFN,且只需为使用的功能付费。
- 开发便捷:无需编写额外代码、文档和维护,可预先确定响应时间,还能实现灵活的灯光控制,布线简单,仅需2条线组成IIC总线或3条组成SPI总线 。
常见应用场景
- 简单设备控制:控制LED灯亮灭、蜂鸣器发声、继电器开关等。
- 输入信号读取:读取按键状态、检测外部开关状态;连接传感器(如温度、湿度传感器)读取数据;用于触摸屏输入,检测触摸操作和获取坐标 。
- 通信接口:复用为串行通信接口(如SPI、I2C、UART)、定时器输入/输出等 。
- 电机驱动:控制电机正反转、速度等 。
SPI
SPI(Serial Peripheral Interface,串行外设接口)的知识点主要有以下这些:
基本概念
- 定义:SPI 是一种高速、全双工、同步的通信总线,由摩托罗拉首先在其处理器上定义。采用主从模式工作,通常一个主设备可与一个或多个从设备通信。
- 应用场景:常用于芯片间的数据传输,广泛应用于EEPROM、FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器等设备之间 。
物理连接
SPI接口一般使用4条线进行通信:
- SCLK(Serial Clock,串行时钟线) :由主设备产生,用于同步主从设备间的数据传输,控制数据交换的时机和速率。
- MOSI(Master Output Slave Input,主出从入数据线) :主设备通过这条线向从设备发送数据。
- MISO(Master Input Slave Output,主入从出数据线) :从设备通过该线向主设备发送数据。
- SS/CS(Slave Select/Chip select,从机选择线/片选线) :由主设备控制,低电平有效。当某从设备的SS线被拉低时,主设备才能与该从设备进行通信,可允许多个从设备连接到同一SPI总线上 。
通信协议
- 数据传输 :SPI以串行方式一位一位传输数据,在时钟信号SCLK的作用下,主从设备的移位寄存器进行数据交换。主设备发起读写操作,且在每个时钟周期,主从设备都会同时发送和接收一位数据,完成一次数据交换。若只需写操作,主机忽略接收的数据;若要读数据,主机需发送一个空字节来触发从机传输 。
- 传输模式:根据时钟极性(CPOL)和时钟相位(CPHA)的不同组合,SPI有4种传输模式:
- 模式0:CPOL = 0(时钟空闲时为低电平),CPHA = 0(在时钟的第一个上升沿采样数据,下降沿切换数据)。
- 模式1:CPOL = 0,CPHA = 1(在时钟的第一个下降沿采样数据,上升沿切换数据) 。
- 模式2:CPOL = 1(时钟空闲时为高电平),CPHA = 0(在时钟的第一个下降沿采样数据,上升沿切换数据) 。
- 模式3:CPOL = 1,CPHA = 1(在时钟的第一个上升沿采样数据,下降沿切换数据) 。
主从设备必须工作在相同模式下才能正常通信。
- 传输速率:没有固定的传输速率限制,可自定义,一般在400KHz - 10MHz,实际速率受硬件特性和应用场景制约 。
工作原理
主设备和从设备内部都有串行移位寄存器。通信时,主设备先拉低对应从设备的SS线,选中该从设备,然后通过SCLK发送时钟信号,同时将要发送的数据写入发送数据缓存区,经移位寄存器从MOSI逐位发送给从设备;从设备在SCLK作用下,将自身移位寄存器中的数据从MISO返回给主设备,并通过MOSI接收主设备发送的数据,从而实现数据交换 。
优缺点
- 优点:
- 高速高效:全双工同步通信,能实现高速数据传输,数据传输效率高。
- 硬件简单:只需4根线,节省芯片引脚和PCB布局空间,硬件设计简单。
- 易于扩展:支持一主多从拓扑结构,主设备可方便地与多个从设备通信 。
- 缺点:
- 缺乏流控和应答:没有指定的流控制机制,也无应答机制确认数据是否被接收,需在应用层自行处理相关问题 。
- 从设备选择复杂:多个从设备时,每个从设备需独立片选信号,硬件复杂度比I2C等总线高 。
- 无统一标准:未规定电气特性、最大传输速率、地址方案等,不同设备的SPI接口可能存在差异 。
软件编程要点
编程时需初始化SPI相关寄存器,配置工作模式(主/从模式)、传输模式(上述4种模式之一)、时钟频率等参数;数据发送和接收操作通常通过读写SPI数据寄存器实现 。 此外,若使用GPIO模拟SPI通信,需按照SPI的时序要求,手动控制GPIO引脚的电平变化来模拟时钟信号和数据传输 。
I²C
I²C(Inter - Integrated Circuit)即集成电路总线,是一种串行通信协议,由飞利浦公司在1980年代初开发。以下是关于它的详细知识点:
基础概念
- 定义:I²C是一种同步、半双工、多主多从的串行通信总线,用于连接微控制器和外围设备,能在不同集成电路之间实现高效、可靠的数据传输。
- 应用场景:广泛应用于传感器(如温度传感器、加速度计)、EEPROM、实时时钟(RTC)、LCD驱动器等设备与主控芯片之间的通信。
物理连接
- 信号线:I²C总线仅需两根信号线,即串行数据线(SDA)和串行时钟线(SCL)。所有连接到总线上的设备都通过这两根线进行通信。
- 上拉电阻:SDA和SCL线上通常需要接上拉电阻到电源,以确保在空闲状态下两条线都保持高电平。当有设备驱动它们为低电平时,才能实现数据的传输。
通信协议
- 数据传输:数据以字节为单位进行传输,每个字节后面都跟随一个应答位(ACK)。发送方在发送完一个字节后,会释放SDA线,等待接收方拉低SDA线以表示成功接收该字节。
- 起始和停止条件:
- 起始条件:当SCL线为高电平时,SDA线由高电平变为低电平,表示数据传输的开始。
- 停止条件:当SCL线为高电平时,SDA线由低电平变为高电平,表示数据传输的结束。
- 数据有效性:在SCL线为高电平期间,SDA线上的数据必须保持稳定,此时数据有效;只有在SCL线为低电平时,SDA线上的数据才允许改变。
- 地址和读写位:通信开始时,主设备会发送一个7位或10位的从设备地址,后面跟随一个读写位(0表示写操作,1表示读操作)。总线上的所有从设备都会接收这个地址,并与自己的地址进行比较,如果匹配则响应主设备。
工作模式
- 主发送模式:主设备向从设备发送数据。主设备发起起始条件,发送从设备地址和写位,然后依次发送数据字节,每发送一个字节等待从设备的应答。最后,主设备发送停止条件结束通信。
- 主接收模式:主设备从从设备接收数据。主设备发起起始条件,发送从设备地址和读位,从设备应答后开始发送数据字节,主设备每接收一个字节需要发送一个应答位。当主设备不想再接收数据时,发送一个非应答位(NACK),然后发送停止条件结束通信。
- 从发送模式:从设备在接收到主设备的读请求后,向主设备发送数据。
- 从接收模式:从设备接收主设备发送的数据。
通信速率
- 标准模式:最高通信速率为100kbps。
- 快速模式:最高通信速率可达400kbps。
- 快速模式+:最高通信速率为1Mbps。
- 高速模式:最高通信速率可达3.4Mbps。
优缺点
- 优点:
- 引脚少:仅需两根信号线,大大节省了微控制器的引脚资源。
- 多主多从:支持多个主设备和多个从设备同时连接到总线上,方便构建复杂的系统。
- 简单易用:通信协议相对简单,硬件实现成本低。
- 缺点:
- 传输速率有限:虽然有多种速率模式可供选择,但相比一些高速总线(如SPI),其传输速率仍然较低。
- 传输距离短:由于信号线上存在上拉电阻和分布电容等因素,导致传输距离受到一定限制。
- 数据传输量小:每次传输的数据量通常较小,不适用于大数据量的快速传输。
软件编程要点
- 初始化:配置微控制器的I²C接口,设置通信速率、工作模式等参数。
- 起始和停止条件的生成:通过控制SDA和SCL线的电平变化,生成起始和停止条件。
- 数据发送和接收:按照I²C协议的规定,发送和接收数据字节,并处理应答位。
- 错误处理:处理可能出现的错误情况,如应答失败、超时等。