【微处理器系统原理与应用设计第七讲】片上微处理器系统典型外设包括输入输出设备、定时计数设备、通信设备

一、通用输入/输出

GPIO主要完成二进制数据的输入与输出。系统有多个GPIO端口,每个端口可以支持一定数目的管脚。每个管脚可以配置为输入,也可配置为输出。

对于此GPIO而言,它有三个接口:用于配置是输入还是输出的CR、用于数据输出的ODR和锁存外部输入的IDR。由于不同管脚的输入/输出配置不同,因此管脚Pn有一个电控导通开关Tn来控制管脚是否为输出。Tn是否导通由信号Cn控制,Cn保存在寄存器(CR)的位n中。所要输出的电平值保存在输出数据寄存器(ODR)中,每位对应一个管脚的输出,位n的输出On连接导通开关,输入电平In连接输入数据寄存器(IDR)的输入端并锁存至位n。

GPIO通常用来读取外部按键、开关的通断信息、控制LED灯、蜂鸣器、电控开关等。除此之外若按照一定的时延控制GPIO的输出,则可以产生不同的波形。

二、定时/计数设备

1、时基单元

时基单元由计数器CNT、自动装载寄存器ARR、预分频器PSC。

定时器的核心是计数器,即每来一个计数时钟CNT,脉冲就产生一个计数动作,计数寄存器的值就加一减一。每一次加减都会表示时间过去了一个时钟周期。当计数器的值超过规定数值时自动装载初值,并产生一个标识更新事件UEV来表明计时结束(也称为超时)

预分频器将时钟PSC分频生成计数时钟CNT,当预分频器值为M时,CNT的周期为PSC的M+1倍,频率为PSC的1/(M+1)。

计数器总共有三种计数模式,即向上计数模式、向下计数模式和中央对齐模式。

(1)向上计数模式

从0开始,超过ARR预设值,产生更新事件。若允许反复计数,则从0开始重新计数。

(2)向下计数模式

从ARR预设值开始,超过0时,产生更新事件。若重复计数,则从ARR预设值开始重新计数。

(3)中央对齐模式

从0开始向上计数,超过ARR的预设值-1时产生更新事件;然后向下计数,计数超过1后,又产生更新事件;再从0开始向上计数。也被称为向上/向下计数。

2、输入捕获与比较输出

定时器有两种工作模式,即捕获模式和比较模式,分别实现输入脉冲的时长测量和规定时长的脉冲输出。

在捕获模式下,通过计算两次输入事件之间的计数值之差就可以计算出事件之间的时延,测量出脉冲宽度或周期。

在比较模式下,通过将计数值与预设值进行比较来控制输出电平。若计数值大于预设值,则输出高电平,否则输出低电平,这种模式可以用来形成PWM波形。

三、通信设备

双方进行通信时,需要统一的时钟及帧起始时刻和相同的数据格式。相同的数据格式是由收发双方各自写入相同的参数来实现的,而统一的时钟及帧起始时刻则需要专门的信号控制线或者控制信号来实现。

从收发操作来看,通信有三种工作方式:全双工(收发同时进行)、半双工(收时不发,发时不收)和单工(只能收或者发)。全双工时两个设备需要收发两根传输线,半双工和单工时两个设备之间只需要一根传输线。

从连接关系来看,通信有两种结构:点至点结构和总线结构。点至点结构是指传输线只能连接两个设备,总线结构是指传输线可以连接多个设备。

从传输控制来看,通信分为主从控制和对等控制。主从控制是指通信过程由一方来控制,另一方根据该方的指示进行收发操作。对等控制是指通信双方独立进行收发操作。

常规的通信设备主要有:UART、SPI、IIC、USB、以太网等。

(1)UART

通用异步收发器(UART)可实现异步串行通信,其工作原理是将数据的每个二进制位采用相应的电平一位接一位地传输。在收发过程中以一个帧为传输单位,它由规定的多个码元顺序组合而成。通常把每秒钟传输的码元数称为波特率,收发双方必须采用相同的波特率才能正确收发。

UART主要由收发移位寄存器、收发数据寄存器、波特率产生、硬件流控(主要用来处理收发双方处理速率不对称的问题)、收发控制等单元构成。UART的管脚由TX(发送输出)、RX(接收输入)、RTS(发送请求)、CTS(发送回应)。

(2)SPI

SPI可以实现高速的、全双工、同步的通信,有主模式和从模式两种工作模式。SPI主设备和从设备之间采用四个信号来实现双工通信。

移位时钟信号(SCLK):由主设备产生,供双方的数据移位器进行移位操作时使用;

主出从入(MOSI):主设备的移位输出或者从设备的移位输入;

主入从出(MISO):为主设备的移位输入或者从设备的移位输出;

从选择(NSS):从站选择输入或者主站产生的从站选择输出。

SPI的传输模式由时钟相位CPHA和时钟极性CPOL两个量来决定。

(3)IIC

IIC设备采用一根双向串行数据线SDA和一根双向串行时钟线SCL来实现主/从设备间的多主串行通信,设备可连接到标准(高达100kHz)或者快速(高达400kHz)的IIC总线。

总线上的数据传输必须以一个起始信号作为开始标志,以一个停止信号作为传输的停止标志,波形如下图所示

IIC在数据传输的过程中那个一共有三种信号:起始信号、停止信号、应答信号。

起始信号:主设备产生,SCL为高电平而SDA由高变低跳变,表示产生一个起始信号。

停止信号:主设备产生,SCL为高电平而SDA由低到高跳变,表示产生一个停止信号。

应答信号:从设备在接受到8位数据后,向主设备发出一个特定的低电平脉冲作为ACK,表示已经接收到数据。

SDA线上的数据只在SCL为高电平时有效,在SCL为低电平时进行数据的切换,即设备只在SCL线为高电平时才会对SDA上的信号进行采样。

IIC总线上每个设备都对应唯一的地址,主设备在传输有效数据之前要先指定从设备的地址。通常先传7位地址,再传一个读写位,用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。

(4)A/D转换

每个ADC可以与一个多选一开关级联,开关的输出连接ADC的输入,开关的每个输入连接一个信号通路,通过控制开关位置即可实现对不同通道信号的模数转换。

只对某个通道进行转换的模式称为单通道模式。对通道组中的所有通道按顺序一一转换的模式称为扫描模式。单通道模式下一次转换就是转换1个通道,而扫描模式下一次转换是将当前组的所有通道按顺序都转换一次。

通道的转换由触发源启动,触发源可以是外部电平,也可以是内部事件。ADC的转换启动可以是软件触发,即通过直接配置寄存器来触发。通过配置控制寄存器的使能位,写1时开始转换,写0时停止转换。ADC的转换启动也可以是硬件触发,即通过内部定时器或者外部IO来触发转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值