嵌入式面经 单片机篇
3.I/O接口(17道)
3.1 GPIO 口一般有哪三个寄存器?
以S3C2410为例,有控制寄存器、 数据 寄存器、上拉寄存器。
3.2 GPIO 的输入输出模式有哪些?
答案:
(1)输入模式:浮空输入、带上拉输入、带下拉输入、模拟输入。
(2)输出模式:开漏输出、推挽输出、开漏复用输出、推挽复用输出。
解读:
浮空输入 _IN_FLOATING |
浮空输入,可以做 KEY识别。 |
带上拉输入 _IPU |
IO 内部上拉电阻输入。 |
带下拉输入 _IPD |
IO 内部下拉电阻输入。 |
模拟输入 _AIN |
应用 ADC模拟输入,或者低功耗下省电。 |
开漏输出 _OUT_OD |
IO 输出0 接GND ,IO 输出1 则悬空,需要外接上拉电阻才能输出高电平。当输出为 1 时,IO 口的状态由上拉电阻拉高,但同时IO 口也可由外部电路拉低,可以通过输入 数据 寄存器读取电平变化,实现 C51的 IO双向功能。 |
推挽输出 _OUT_PP |
IO 输出0 接GND , IO 输出1 接 VCC ,读输入值是未知的。 |
复用功能的推挽输出 _AF_PP |
片内外设功能( I2C的 SCL,SDA)。 |
复用功能的开漏输出 _AF_OD |
片内外设功能( TX1,MOSI,MISO.SCK.SS) |
总线接口 |
串 /并 |
同步 /异步 |
工作方式 |
速率 |
线路 |
距离 |
大小端 |
UART |
串行 |
异步 |
全双工 |
慢,最快只有 1.5Mbps |
3 线:RX 、TX 、GND |
远, RS-485可达 1200m |
小端模式 |
USB |
串行 |
同步 |
半双工 |
快, USB3.0可达 5Gbps |
4 线:Vbus 、GND 、D+ 、D- |
近,不超过 5m |
小端模式 |
SPI |
串行 |
同步 |
全双工 |
快,可达 50Mbps |
3 线或4 线:SCLK 、SIMO 、SOMI 、 SS |
远,可达 10m |
大端模式 |
IIC |
串行 |
同步 |
半双工 |
慢,最快只有 3.4Mbps |
2 线:SCL 、SDA |
近,不超过 30cm |
大端模式 |
(1)异步串行方式的特点:
①以字符为单位传送信息,相邻两个字符间的间隔是任意长;即字符内部各位同步,字符间异步;
②因为一个字符中的比特位长度有限,所以接收时钟和发送时钟只要相近就可以了。
(2)同步串行方式的特点:
①以 数据 块为单位传送信息,在一个 数据块内,字符与字符之间无间隔;即字符内部各位同步,字符间也同步;
总线空闲状态 |
SCL 和SDA 均为高电平,接上拉电阻。 |
启动信号( START) |
在 SCL保持高电平期间, SDA由高电平被拉低。由主控器发出。 |
数据 位传送( DATA) |
在 SCL保持高电平期间, SDA上的电平保持稳定,低电平为 数据 0、高电平为 数据 1。用法:主控器和被控器都可发出。 |
应答信号( ACK) |
在 SCL保持高电平期间, SDA保持低电平。 IIC总线上所有 数据 都是以 8位字节传送的,发送器每发送一个字节,就在第 9个时钟脉冲期间释放 SDA(高电平),由接收器反馈一个 ACK。 |
非应答信号( NACK) |
在 SCL保持高电平期间, SDA保持高电平。如果接收器是主控器,则它在收到最后一个字节后,发送一个 NACK,通知被控器结束 数据 发送,并释放 SDA(高电平),以便主控器发送一个 STOP。 |
停止信号( STOP) |
在 SCL保持高电平时间, SDA由低电平被释放(拉高)。由主控器发出。 |