#### 常用的器件/外设接口
---
{{ :embeddedsystem.png |嵌入式系统典型架构}} **嵌入式系统的主要部件**
{{ :peripheralinterface.jpg |}} **外设接口的脑图显示**
#### GPIO
##### 输入 - 用于状态监测
- 开关 - switch
- 按键 - push button
- 消抖动
- 传感器状态 - 比如光敏
- 逻辑电平0、1、未确定的区间
##### 输出
- 每个期间的输出阻抗不同、输出电流不同,需要查询数据手册
- 很多[[FPGA]]器件的输出阻抗是可编程
- 应用:
- 驱动[[LED]]
- LED有前向电压,供电要高于前向电压
- LED的亮度取决于流过的电流,通过限流电阻调节零度
- 驱动大的直流负载
- 阻性负载 - 采用三极管、MOSFET
- 感性负载 - 需要续流二极管进行保护
- PWM
- 控制LED亮度
- 用作[[DAC]]产生直流电压
- 电机调速、控制伺服电机
#### 并行接口
##### 构成
- 数据总线 - 8、16、32位
- 地址总线 - 取决于寻址空间的大小
- 控制线 - 读、写、使能
##### 优点
- 处理器/控制器端内部逻辑功能简单
- 在低速/短距离的场景下数据传输带宽高
##### 缺点
- 太多的连线,占用太多的管脚, 收发端都要有
- 传输距离长的情况下速率受限
#### 串行接口
##### 连线较少、成了[[MCU]]的标配
##### 电路的核心是移位寄存器
##### 同步串行接口
- [[SPI]]
- Serial Peripheral Interface - 串行外设接口
- 高速(50Mbps)、同步、全双工(SCLK、MISO、MOSI、nCS)
- 主、从结构,1主n从,靠nSS(或nCS)来寻址不同的外设
- 根据时钟的极性和相位有4种工作模式,收发端要一致
- 广泛应用在
- 传感器
- 信号调理
- 高速串行接口的ADC或DAC
- 优点:
- 简单、方便、低成本
- 用MCU指令或FPGA的逻辑来实现比较容易
- 局限性:
- 没有来自接收端的应答确认
- 没有寻址机制,多个从设备需要多个片选信号,占用太多管脚
- 没有纠错的机制
- [[I2C]]
- Inter-Integrated Circuit,短距离的IC之间的连接
- 起源于Philips公司为其音、视频器件开发的一种总线
- 半双工、同步串行接口
- 只需要两根线(SCL、SDA),具有寻址和应答功能
- 两根线都需要上拉电阻才能正常工作
- 多个从设备连接时的电容效应会影响到传输速率
- 每个节点都可以做主/从,每个从设备都有一个地址
- 广泛应用在:
- 低速传感器接口
- 低速串行接口外设的配置
- 优点:
- 物理连接简单,只需要2根线,可以配置更复杂的网络,增减节点比较方便
- 可靠性相对较高
- 局限性
- 速度较慢
- 数据不够安全
- 很难应用在医疗、汽车和高可靠的应用中
- 用MCU代码或FPGA逻辑实现相对于SPI复杂度高
- 同步串行接口的优点
- 逻辑实现简单
- 时钟频率灵活
- 同步串行接口的缺点
- 每个数据传输需要一个多余的时钟信号线(SPI的SCLK或I2C的SCL)
- 时钟的带宽至少是数据带宽的2倍,限制了数据的传输速度
- 长距离传输数据和时钟信号会失去同步
##### 异步串行接口
- 特点:
- 接收端提取时序信息
- 速率是确定的 - 每个节点需要准确且稳定的时钟源
- 每个Byte或Word都以Start和Stop位成帧
- [[UART]]
- Universal Asynchronous Receiver/transmitter - 异步收发
- TXD/RXD,全双工
- 可达3Mbps
- 设计中要注意的问题:
- 在接收端需要根据发送端的波特率进行正确设置
- TXD/RXD不要接反
- [[USB]]
- 最常用的总线
- PnP应用
- 分为Host、Slave、OTG(On The Go)模式,要正确选取
- 1.5Mbps(低速)、12Mbps(全速)、480Mbps(高速)、10Gbps(Type C)
- D+/D-/Vcc/GND四线连接,D+/D-为差分信号,要等延时走线
- Ethernet
- IEEE802.3标准,支持速率10Mbps、100Mbps、1Gbps、100Gbps
- 差分收、发信号TX+/TX-、RX+/RX-
- 以太网串行接数据包按帧进行封装传输,每一帧有收、发两端的MAC地址
- 以太网的数据采用曼切斯特编码以便时钟信号的提取
- CAN总线
- Controller Area Network
- 异步、半双工、固定比特率
- 最高1Mbps
- 所有节点都是平等的,配置为P2P
- 有仲裁机制确定各个节点的通信优先级
- 节点数没有限制
- 总线节点没有地址,但有“信息过滤”的机制
- 数据成帧进行传输
- 高度的数据安全级别、错误检查
#### 模拟接口
##### 内置了ADC、DAC
##### 内置了温度传感器
##### Cypress的PSoC器件
\\
#### 苏老师的几篇关于串行接口的公众号文章:
---
* [几种最常用的串行数据传输总线(1)- SPI](https://mp.weixin.qq.com/s/jWbvn-DGR9xrrMHKBqXleQ)
* [几种最常用的串行数据传输总线(2)-I2C](https://mp.weixin.qq.com/s/UVlecH-zBVG5Ug4Bx6TVeQ)
* [几种最常用的串行数据传输总线(3) - 无人不知的UART](https://mp.weixin.qq.com/s/zSrqHna3N9I9jnGB1ifUDA)
* [几种最常用的串行数据传输总线(4)- 来一波生动活泼的动图](https://mp.weixin.qq.com/s/kFZEhtEKweag26p2XlCyqw)
* [漫谈“独臂神通”PWM(1):用1根管脚、1个电阻和1个电容实现DAC](https://mp.weixin.qq.com/s/K5vfUTsczIkjUpAO3EsWjQ)
* [漫谈“独臂神通”PWM(2):DAC的低通滤波器设计](https://mp.weixin.qq.com/s/aiS0zHgxrH72Q1a8IVqi6w)
* [漫谈“独臂神通”PWM(3):用PWM点灯调光](https://mp.weixin.qq.com/s/bsC8y037_1hA-dt0F-IG_w)
* [漫谈“独臂神通”PWM(4):驱动伺服电机](https://mp.weixin.qq.com/s/I23h75SCv0_TgsCPCAsqnQ)
* [漫谈“独臂神通”PWM(5):开关稳压器的调压控制](https://mp.weixin.qq.com/s/8XDX3SqyWkhP6FxKwbenEg)
#### 其它参考文章
* Sparkfun上关于[串行通信教程](https://learn.sparkfun.com/tutorials/serial-communication/all)
* www.embedded.com上关于[串行接口协议比较](https://www.embedded.com/design/connectivity/4023975/Serial-Protocols-Compared)
* Wikipedia上的[高级控制器总线架构](https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture)