明智地选择串行接口以获得最佳连通性

  MCU提供了非常广泛的串行接口选择。串行接口的选择可能和外围组件所需的一样简单,但是当您选择使用哪一个接口时,明智的决策会对系统的性能造成很大的影响。通用串行接口,如SPI、Ii C或UART可能是最常见的选择,但如何更专业的接口,如CAN,或SMBus /PMBus?这些选择什么时候最好?本文将更详细地检查这些串行接口标准,并探讨一些常见的实现方式,以便更好地了解它们最适合的应用类型。

  通用异步接收发射机

  也许最熟悉的串行接口是可尊敬的通用异步收发器(UART)。这个简单的异步协议使用单线传输数据和另一个接收,使用图1的顶部所示的简单数据帧。该线在空闲状态下开始,高电压电平和低去边缘定义数据帧的开始。多个数据位跟随,指示数据值的低电平或高电平。可选的第八数据位和奇偶校验位可以包括在数据帧的末尾。(第八个数据位是可选的这一事实使您可以了解标准的历史。谁会想到只用7个数据位来创建一个现代标准?一个自由运行的时钟,通常是数据传输频率的几倍,用于捕获起始位之后的数据位。接收机通常可以通过检查起始比特和停止比特之间的时间上的数据速率和窗口来确定传输数据速率。UART的数据速率通常低于其他串行协议,但是它的简单性和普遍性(实际上每个MCU都有多个UART外围设备)使得它适合于低性能应用,如传感器、简单控制器和子系统通信。通过导线或板对板连接器。

  能量微型低能量UART图像


  图1:UART数据格式和能量微低能UART操作。

  您可能会认为,这种类型的接口几乎没有创新,但是随着低功耗操作的持续驱动,甚至熟悉的UART也越来越受到关注。例如,硅实验室的能源微型微壁虎MCU设备,如EMF32 TG210包括一个特殊的低能耗实现熟悉的UART外围设备。低能UART可以在低功耗EM2模式中独立运行(具有关闭的大部分核心功能)。低能UART还可以在非常低功率模式下等待传入的UART帧。当检测到传入帧时,CPU可以唤醒。或者,多个帧可以通过使用CPU干预的DMA控制器移动到片上SRAM,如图1的底部所示。为了更高效地进行功率操作,低能UART甚至可以阻止数据接收,直到检测到可配置的起始帧。此外,可配置的信号帧可以用来产生中断,可能指示块传输结束,以唤醒CPU。低能UART的数据传输速率被限制在9600波特,但是在等待期间的150 NA功率消耗和在主动通信期间需要的少数UA使得这是一种非常有效的方法。

  通用同步异步收发器(USAT)

  通用UART外围设备的大多数现代MCU实现不仅包括异步操作,而且还添加同步操作。这是常见的,因为许多低级硬件在同步和异步操作之间是相似的。同步操作通常支持额外的标准,如RS-485、微丝、3线、SPI、智能卡和/或IrDA。支持这些附加同步标准所需的附加电路确实需要额外的功率,因此仍然有一些实现,例如能量微低能UART,至少对单个UART信道省去额外的USAT开销。

  串行外围接口(SPI)和集成电路间接口(I.C)

  SPI和I C串行端口用于非常类似的目的。它们是简单的串行接口,使用最少的信号连接到中速外围设备——通常是传感器、串行存储器,以及作为更复杂设备的配置端口(例如,一些FPGAs,可以通过SPI接口配置)。

  意法半导体STM32 F33XX系列支持Ii C和SPI,在这里,我们将展示一个示例,说明这些端口通常在哪里使用。STM32 F33的I.C端口可以在100 kHz(标准速度)、400 kHz(快速)和1 MHz(以快速+速度)工作,而SPI端口可以工作在18兆比特/秒。MCU典型地具有多个Ii C和SPI端口,并且STM32 F33也不例外,具有三个SPI端口和两个I C端口。I/C和SPI端口支持其他类似协议也并不少见。在STM32 F33上,I/C端口还可以支持SMBus/PMBus,用于电源配置和控制,SPI端口还可以支持集成的集成声音接口(Ii s)。

  SPI和I C端口是工作马串行端口,用于多种应用。简单的连接(只使用几个引脚)和一个简单的协议,以及一些有用的硬件特征,用于唤醒CPU在地址匹配或自动传输支持DMA时,这些端口是低速感测、电源控制、配置和简单CO的首选。通讯。只有当你需要更高的性能时,你才需要考虑另一种类型的接口。

  许多串行接口外围设备具有共同的体系结构元素,因此更深入地了解SPI外围设备的STM32 F33实现有助于理解串行接口外围设备。如图2所示,STM32 F33SPI端口具有少量的IOS(MOSI和MISO串行数据信号、SCK串行时钟和NSS从选择引脚)。许多串行外设使用单独的数据输入、数据输出和时钟作为低引脚数和高性能之间的平衡。单独的时钟在非时钟实现上需要附加的PIN,但是允许更高的性能,因为数据不需要按照UART协议在数据速率倍数下进行采样。从属选择输入也是与其它串行通信实现共同的元件,它允许多个设备使用相同的信号,最小化系统级互连要求。

  基于STM32 F33的意法半导体SPI外设图像


  图2:STM32 F33上SPI外设的实现。

  STM32 F33具有独立的发送和接收FIFO,有助于从CPU卸载低级别的通信管理。在串行通信实现中普遍存在的移位寄存器用于保存由外围设备发送或接收的数据。用于确定时钟速率的集成波特率发生器和从CPU卸载任何低级别错误检查的硬件CRC块都是受欢迎的硬件元素,并且对于许多串行外设实现也是常见的。最后,需要从外围设备到系统的其余部分的总线接口,并且许多实现包括总线矩阵和DMA控制来优先化数据传输,并进一步提高效率。其他串行端口实现将具有类似的架构元素,您应该寻找那些提供与应用程序需求匹配的有用硬件块的实现。

  意法半导体为STM32 F3微控制器提供了一个开发工具包,有助于工程师利用和应用这些MCU。

  SMBus/PMBus

  SMBus是I/C总线(仅具有时钟和数据)的简化版本,最初被定义为向电源(通常是车载模块或调节器)通信ON/OFF指令。大多数MCU I C外围设备可以用来控制SMBus,但是也有例外,所以请仔细检查您的设计中是否需要SMBus。PMBUS是一种稍微复杂的实现,但大多数MCI I C端口仍然很容易支持,它更清楚地定义了兼容设备的一些属性(而不是主要定义与SMBus一样的通信协议)。PMBus与SMBus的选择主要取决于功率控制系统,因为MCU支持通常是容易获得的。

  控制器局域网(CAN)

  CAN协议主要被设计为车辆串行数据总线,满足车辆在嘈杂环境中实时处理和可靠操作的特定要求。在所需带宽上的成本效益也是一个关键目标。CAN还被广泛应用于电机控制和工业自动化,其中存在类似的实时性和可靠性要求。

  即使只能使用单个数据发送信号和单个数据接收信号,但它是我们先前讨论过的一个更为复杂的协议。幸运的是,许多低级细节由外围设备自动支持,用户可以主要关注设计的更高层次方面。作为一个示例实现,飞思卡尔KiTeNS K30 MCU设备(如MK30DX256)具有非常灵活的CAN协议的实现,如图3所示,并且将有助于说明在设计更复杂的协议时的一些关键考虑。

  飞思卡尔KYETIES MK30DX256单片机CAN控制器的图像


  图3:飞思卡尔KYETIES MK30DX256单片机控制器。

  飞思卡尔KiTIES MK30DX256上的FLUCAN模块是CAN协议规范的完全实现,版本B 2。它最好被视为协议控制器,而不是仅仅是一个简单的接口,因为它隐藏了来自用户的设计的许多低级别元素。(CAN物理层的细节实际上非常有趣,并且在许多方面让人联想到以太网,但超出了本文的范围。如果您对学习有兴趣,请参阅CAN规范。通过控制器处理跨双线接口的通信,并将所得消息存储在本地消息缓冲区RAM中。

  在飞思卡尔KYETIES MK30DX256实现中,CAN协议引擎(PE)子模块管理CAN总线上的串行通信,请求RAM访问以接收和发送消息帧,验证接收的消息并执行错误处理。控制器主机接口(CH)子模块处理接收和传输的消息缓冲器选择,负责仲裁和ID匹配算法。总线接口单元(BIU)子模块控制对内部接口总线的访问,以建立与CPU和其他模块的连接。与FLASCAN控制器相关的灵活性是通过主机配置寄存器(31 32位寄存器)来控制各种操作模式、掩码寄存器、错误计数器、中断寄存器和FIFO控制的。

  虽然CAN主要针对汽车应用,但它也可用于许多工业应用。例如,电机控制是一种应用,其中CAN对噪声的抵抗(以电磁干扰或电磁干扰的形式)可以是一个很大的好处。对于鲁棒性操作、操作冗余和低速要求有显著要求的工厂层可能比不太健壮的串行接口或更复杂的解决方案(如工业以太网)能找到更好的选择。现在,更多的低成本MCU正在支持CAN,随着CAN驱动器和协议栈的更好的可用性,在下一个工业控制项目中,可能更值得深入研究。

  软件支持是关键

  在这些类型的更复杂的外围设备中,大量配置寄存器可能是令人畏惧的,并且正确地配置每个配置位可能是许多挫折的根源。幸运的是,MCU制造商已经意识到这一点,并且通常提供了一种便利地设置常见操作场景所需的各种配置位的工具。飞思卡尔,例如,提供处理器专家工具,它生成C代码来创建、配置、优化、迁移和传递软件组件,例如外围设备驱动程序,作为软件开发过程的起点。处理器专家使用一个简单的图形用户界面来从库中选择组件,使用引导过程来配置它们,消除错误和冲突(在手工完成这项任务时常见),然后将它们安装在软件项目中供IDE在软件DEVE使用时使用。发展。在设计复杂的外围设备时,这种类型的工具几乎是一个严格的要求,以避免昂贵的错误和配置冲突。一个简短的VIDEO3提供了一个快速的概述这个过程。

  总结

  在许多应用中,众所周知的低带宽UART可能是最常见的选择,但现在MCU提供了广泛的其他低带宽和中等带宽串行接口解决方案,如SPI、Ii C、PMBUS,并且可以查看其他选项也是有用的。通过软件工具来帮助“隐藏”来自用户的许多低级别硬件功能,不仅可以结束更多的接口性能,而且还可以缩短开发时间。

猜你喜欢

转载自blog.csdn.net/kailixun/article/details/80194048