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