24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- I2C与SPI与UART:如何...
技术专题
I2C与SPI与UART:如何布局这些通用(yòng)总線(xiàn)
I2C与SPI与UART:如何布局这些通用(yòng)总線(xiàn)
如果您要為(wèi)项目构建开发板或使用(yòng)通用(yòng)MCU,则会发现许多(duō)用(yòng)于通信其他(tā)活动组件的协议。USB和以太网之类的标准已内置在大多(duō)数控制器中,用(yòng)于与计算机外围设备一起使用(yòng)。尽管如此,仍使用(yòng)I2C,SPI,UART等协议与下游MCU或可(kě)编程IC进行接口。I2C总線(xiàn),SPI总線(xiàn)和UART总線(xiàn)之间的區(qū)别很(hěn)简单,任何使用(yòng)MCU的设计人员都应该知道如何為(wèi)这些协议设置路由和布局。
这些协议是速度较慢的信令标准,因此,如果您使用(yòng)这些协议,几乎不必担心诸如阻抗控制或传输線(xiàn)行為(wèi)之类的问题。但是,在确保在接收器上正确读取总線(xiàn)信号时,必须考虑一些重要的设计要点。解决问题也很(hěn)重要,但是特定的产品和您的代码可(kě)以解决这一点。现在,让我们看一下如何在您的PCB布局中使用(yòng)这三种通用(yòng)协议,以及一些保持信号完整性的要点。
I2C与SPI与UART之间的差异
从8位到32位的所有(yǒu)MCU都将至少使用(yòng)这些协议中的一种以及GPIO,以实现可(kě)编程性并将信号发送到简单的外设。这三个串行协议是总線(xiàn)协议。I2C和UART使用(yòng)寻址方案,而SPI是无地址的。尽管SPI是无地址的,但它是一种总線(xiàn)协议,仍可(kě)用(yòng)于选择下游设备以接收数据。
I2C协议
I2C(发音為(wèi)I平方的C,有(yǒu)时也称為(wèi)集成電(diàn)路间的IIC)使用(yòng)两条線(xiàn)(标准,快速和快速加法模式)来控制其他(tā)设备;一条線(xiàn)是时钟線(xiàn)(SCL),另一条線(xiàn)是数据線(xiàn)(SDA)。它具有(yǒu)三种模式,下表总结了这些模式。请注意,上升/下降时间值假定在I / O上安装了典型的串联電(diàn)阻。
模式 |
数据速率/时钟速度 |
最大限度。上升/下降时间 |
最小(xiǎo) 上升/下降时间 |
方向性 |
标准 |
100 kHz的 |
1000纳秒(miǎo) |
-- |
双向的 |
快速地 |
400 kHz的 |
300纳秒(miǎo) |
20 ns * |
双向的 |
快加 |
1兆赫 |
300纳秒(miǎo) |
20 ns * |
双向的 |
高速 |
3.4 MHz(100 pF总線(xiàn)) 1.7 MHz(400 pF总線(xiàn)) |
120 ns ** |
15 ns ** |
双向的 |
超快 |
5兆赫 |
50纳秒(miǎo) |
25纳秒(miǎo) |
单向 |
*假设VDD / VCC = 5.5V。如果VDD / VCC较低,则按線(xiàn)性比例缩小(xiǎo)
**将时钟線(xiàn)的这些值除以2
请注意,超快速模式是唯一将通信仅用(yòng)于下游写入操作的模式。此模式也很(hěn)重要,因為(wèi)它可(kě)以帮助我们了解何时需要匹配总線(xiàn)阻抗,而实际上这几乎是绝不可(kě)以匹配的。如果我们对临界線(xiàn)長(cháng)度采取非常保守的10%限制,我们会发现这些線(xiàn)的临界長(cháng)度為(wèi)0.32 m,这比使用(yòng)I2C的大多(duō)数電(diàn)路板的尺寸要長(cháng)得多(duō)。如果我们将拐点频率用(yòng)于最短的上升/下降时间,并且将临界長(cháng)度限制為(wèi)10%,则得出的值会更長(cháng),為(wèi)0.92 m。对于超快模式,我们应该将保守的数字设置為(wèi)0.32 m。任何小(xiǎo)于此值的I2C線(xiàn)都不会充当传输線(xiàn),我们只需要担心端接方案。
端接的重点是选择合适的上拉電(diàn)阻和串联電(diàn)阻。上拉電(diàn)阻器和VDD / VCC線(xiàn)路总線(xiàn)的電(diàn)容形成放電(diàn)和充電(diàn)RC電(diàn)路,当驱动器切换时,该電(diàn)路為(wèi)接收器提供信号。信号線(xiàn)和时钟線(xiàn)的上拉電(diàn)阻值(Rp)必须遵守以下不等式:
总線(xiàn)電(diàn)容是使用(yòng)VCC总線(xiàn)阻抗的标准公式确定的,该公式使用(yòng)与传输線(xiàn)(微带或带状線(xiàn))相同的公式计算得出。然后,您可(kě)以使用(yòng)線(xiàn)路的阻抗和传播延迟来解决总線(xiàn)電(diàn)容。在I2C标准下,串联電(diàn)阻是可(kě)选的,但可(kě)以包括在内以保护器件免受電(diàn)压尖峰的影响并减慢上升/下降时间。确定与您的上拉電(diàn)阻值配对的正确串联電(diàn)阻值。
SPI协议
SPI协议类似于I2C。该总線(xiàn)上总共使用(yòng)了4条線(xiàn),并且可(kě)以两种可(kě)能(néng)的方式排列组件。如果使用(yòng)单个控制器设备来触发单个下游设备,则拓扑就是点对点的。触发多(duō)个设备取决于驱动器提供的芯片选择输出的数量(标准模式)。第二种模式使用(yòng)菊花(huā)链,其中单个设备选择输出连续触发菊花(huā)链中的每个设备。
与I2C不同,SPI中的各种信令参数都是高度可(kě)配置的。除非您运行的接口非常快,否则您可(kě)以将互连線(xiàn)上的信号電(diàn)平近似為(wèi)DC,因為(wèi)它将低于传输線(xiàn)行為(wèi)的临界長(cháng)度。然后,您可(kě)以使用(yòng)一个串联電(diàn)阻器来终止驱动器的低阻抗输出,并确保最大的功率传输。上面显示的具有(yǒu)跟踪電(diàn)容的RC放電(diàn)方法可(kě)以控制接口的输出電(diàn)流和上升/下降时间。
UART协议
通用(yòng)异步收发器(UART)与I2C相似。这些接口的最大数据速率约為(wèi)5 Mbps。UART设备也很(hěn)容易使用(yòng),因為(wèi)设备之间没有(yǒu)时钟发送。一切都是异步的。注意,每个UART设备的内部(系统)时钟必须以波特率的几倍运行(即,每个位被采样N次)。单个控制器设备和单个下游设备之间仅使用(yòng)两条電(diàn)線(xiàn)进行通信。
注意,UART器件的数据格式,信号電(diàn)平和波特率可(kě)通过外部驱动器電(diàn)路进行配置。不幸的是,这也意味着对于UART器件的布線(xiàn)和布局几乎没有(yǒu)硬性规定。遵循标准的高速设计指南,通过查看传输線(xiàn)行為(wèi)的转变来确定何时需要终止。减少过冲的典型端接方法是串联端接。请注意,UART可(kě)能(néng)在高電(diàn)平或低電(diàn)平下处于空闲状态,并且可(kě)能(néng)需要上拉電(diàn)阻来设置所需的空闲水平;在添加上拉電(diàn)阻之前,请務(wù)必检查您的组件规格。