嵌入式软件 arm裸机 单片机开发 GPIO 笔试面试
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由低电平被释放(拉高)。由主控器发出。 |