常用的器件/外设接口
嵌入式系统的主要部件
外设接口的脑图显示
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
几种最常用的串行数据传输总线(2)-I2C
几种最常用的串行数据传输总线(3) - 无人不知的UART
几种最常用的串行数据传输总线(4)- 来一波生动活泼的动图
漫谈“独臂神通”PWM(1):用1根管脚、1个电阻和1个电容实现DAC
漫谈“独臂神通”PWM(2):DAC的低通滤波器设计
漫谈“独臂神通”PWM(3):用PWM点灯调光
漫谈“独臂神通”PWM(4):驱动伺服电机
漫谈“独臂神通”PWM(5):开关稳压器的调压控制
其它参考文章
Sparkfun上关于
串行通信教程
www.embedded.com
上关于
串行接口协议比较
Wikipedia上的
高级控制器总线架构