微处理器的GPIO通信的基本操作

描述

界面如何将快乐的面孔变成悲伤的面孔?当界面正常工作时,工程师会露出快乐的面孔。悲伤的面孔表示某处失败。由于微处理器和IC之间的接口很简单,甚至很容易,所以它们经常被忽略,直到接口故障导致周围悲伤的面孔。在本文中,我们将讨论一个常见的SPI错误,该错误在大型系统中几乎不可能找到。提供了指向界面教程信息的链接以获取完整信息。还描述了作为系统问题的噪声以及将其影响降至最低的IC。

介绍

系统微处理器和集成电路 (IC) 之间的通用接口包括 SPI、I²C 和 GPIO。本文讨论一个常见的SPI错误,该错误在大型系统中几乎不可能发现。本文讨论了噪声作为系统问题,并提到了将噪声影响降至最低的IC。本文解释了I²C系统实现中的权衡取舍,并描述了来自微处理器的GPIO通信的基本操作。提供了指向教程信息的链接以供进一步阅读。

界面如何使快乐的脸变成悲伤的脸?

IC的通用接口包括SPI、I²C和GPIO。确定IC如何与微控制器或CPU接口对于任何成功的设计都非常重要。然而,微处理器和IC之间的接口很简单,甚至很容易,因此在许多设计中经常被忽视。在项目早期似乎节省的时间和精力可以让设计工程师感到高兴......此刻。这种情况让人想起已成为日常生活一部分的快乐脸或无处不在的可爱“笑脸”表情符号1是我们这里的隐喻。

工程师的“悲伤”面孔通常在项目后期出现墨菲定律2“任何可能出错的东西,都会在最糟糕的时刻出错”笼罩着设计师弯曲的肩膀。这篇文章讲述了一个悲伤的SPI接口故事,令人惊讶的是,这并不罕见。这是一个关于界面的操作如何使快乐的脸悲伤的故事。

“我的电脑讨厌我,我的SPI总线在它想要的时候随机做它想做的事。

基本 SPI 操作

串行外设接口总线或摩托罗拉命名的SPI(发音为“间谍”)总线是在全双工模式下运行的同步串行数据总线。3设备以主/从模式通信,主设备启动数据帧。允许使用单独的从选择(即片选)线路使用多个从设备。有时,SPI接口称为“三线”(即不从从机回读)或“四线”串行总线。4具有单向信号的SPI接口提供轻松的电气隔离,以减少工厂中的接地回路。这种SPI接口称为单向接口,因为四根导线中的每一根都只在一个方向上传递信息。电流隔离可以通过光学、电容或变压器耦合来实现。

一些设计人员犯的第一个错误是假设SPI总线具有智能。图1解释了SPI从站的工作原理;对于接收数据,它只是一个串行输入、并行输出移位寄存器。

接口


图1.SPI从结构框图(串行输入、并行输出移位寄存器)。

SPI总线很简单,甚至没有任何错误检查就很愚蠢,这一点怎么强调都不为过。它本质上是一串串行编写的寄存器。当芯片选择被引发时,寄存器将一个并行字卸载到芯片中。SPI位本身没有协议或意义。消息中甚至没有设定数量的位;位数因从站的需求而异。为了使设计复杂化,可以将来自不同制造商的不同类型的多个设备菊花链连接在一起。当然,它们必须都具有相同的时钟和数据关系(四种可能的格式之一)3).

现在想象菊花链中的三个设备。芯片 1 首先看到芯片 3 的命令通过,然后是芯片 2 的命令。只有在自己的命令移入后,芯片选择线才会变高。然后,也只有这样,任何命令对任何单个芯片都有意义。

随着系统变得越来越大和繁忙,系统可能会发送部分SPI命令,这是致命的。当位加载到SPI移位寄存器的开头时,就会发生死亡。然后,在位在移位寄存器中处于适当位置之前,芯片选择变为高电平。寄存器中的任何内容都并联移入芯片。因此,在 SPI 命令期间必须屏蔽中断,以确保不发送部分 SPI 命令。

为了说明SPI接口的正确工作原理,我们使用MAX5312 12位数模转换器(DAC)。

表 1显示了最先加载的最高有效位 (MSB) 和最后加载的最低有效位 (LSB)。图 2 显示了首先加载的 4 位命令。请注意,仅使用了可能的 16 个控制字中的 <> 个,并且有一条警告不要使用任何未列出的命令。如果使用未列出的命令,设备可能会也可能不会做出反应。无论如何,不能保证会发生任何好事。事实上,很有可能会发生不好的事情,所以不要使用任何未指定的命令。5MAX5312在数字引脚上还具有施密特触发器输入,以最大限度地降低噪声影响。

 

表 1.串行数据格式
控制位 数据位    
MSB 低音水平
C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0    
表 2.串行接口编程命令
控制位* 输入数据 功能
C3 C2 C1 C0 D11–D0
0 0 0 0 XXXXXXXXXXXXX 无操作;命令被忽略
0 0 1 0 12 位 DAC 数据 从移位寄存器加载输入寄存器;DAC 输出不变。
0 1 0 0 12 位 DAC 数据 从移位寄存器加载输入和DAC寄存器;DAC 输出已更新。
0 1 1 0 XXXXXXXXXXXXX 从输入寄存器加载DAC寄存器;DAC输出已更新;输入寄存器不变。
1 0 0 0 XXXXXXXXXXXXX 进入关机;输入和DAC寄存器保持不变。
1 1 0 0 XXXXXXXXXXXXX 退出关闭;输入和DAC寄存器保持不变。

 

X = 不在乎。
*所有未列出的命令均为保留命令。请勿使用。

接口


图2.MAX5312数据资料中的SPI接口示例

神秘噪音

有时,客户担心他们的系统中发生了奇怪的事情。很多时候,他们将噪音归咎于原因。未必如此。

我们认为噪音不太可能。原因如下。如果未发生SPI传输,则芯片选择(%-overbar_pre%CS%-overbar_post%)必须保持在零(无噪声),而时钟和数据在30%和70%电压数据阈值之间颤振。如果在SPI消息期间芯片选择为低电平,则数据和时钟上的噪声可能会侵入。经验表明,如果噪声真的那么糟糕,那么没有任何东西通过,或者想要的数据就会随着DAC输出的疯狂跳跃而丢失。三行中的一条干净(即%-overbar_pre%CS%-overbar_post%),时钟和数据上的巨大噪声是非常不寻常的。

有一句古老的格言告诉我们,在解决问题时,首先要寻找最简单、最可能的答案。因此,在我们的示例中,这种“奇怪的活动”更有可能是部分或不完整的SPI消息。但是,它从何而来?在系统开发过程中,通常使用小型系统或最终大型系统的子集。由于处理器不是很忙,中断很少截断 SPI 命令。随着系统的增长和处理器对更多设备的命令数量的增加,中断截断 SPI 命令的可能性也会增加。这正是在SPI传输期间必须屏蔽中断的原因。

噪声如何影响IC?

巨大的噪声源会压倒数字传输6, 7.因此,最大的潜在电路错误(如雷击)必须在系统级解决,而较小的问题可以在芯片级处理。

普通IC无法修复的大系统错误之一是电源不稳定。在3V至1V之间快速颤振的5V电源将导致IC无法处理的故障。诚然,这是一个极端的例子,但在我们周围的世界中并不是独一无二的。每天都有大型电机、电弧焊机、雷电引起的浪涌和变电站负载切换引起的电力线故障。大型输电网必须通过在白天增加和移除发电设备来应对不断变化的需求。这种设备切换会导致电压变化,从而在整个电网中产生涟漪。其他潜在的大噪声源是射频干扰 (RFI)、电磁干扰 (EMI) 和静电放电 (ESD)。许多地区在夏季几乎每天都会经历雷暴,冬季湿度低,ESD产生恒定。所有这些大的毛刺和错误都必须通过安全理由、屏蔽和浪涌抑制在系统层面进行预测和解决。

使用适当的电源和接地星形连接在芯片级别管理的小错误;单独的PCB电源和接地层,用于清洁(模拟)和脏(数字)电压;6以及串联电阻器、电感器和铁氧体磁珠以及并联电容的功率去耦。7

这些主要噪声源可能会破坏系统。Maxim拥有,并且有许多器件可用于保护电源、数据和接口。在极端情况下,还需要提供看门狗定时器电路来重新启动系统微处理器。

接口海洋中的I²C

有大量的接口系统:RS-232,RS-422 / RS-485,USB,以太网IEEE® 802及其字母汤,IO-Link®,LIN总线,1-Wire®,I²C,SMBus,SPI,MICROWIRE/® MICROWIRE PLUS,™ M-Bus(EN1434)和CAN(ISO11898),仅举几例。(许多商标由其发起人注册。有太多相互竞争的系统、协议、标准和部分标准,很难选择。8

内部集成电路(I²C)是一种多主站、串行、单端通信总线,用于将低速外设连接到电视机、消费类设备、手机或其他电子设备。对于电气隔离不是问题的小面积、机箱或 PC 板中的通信,它是一个不错的选择。它还已扩展用于有线系统。

与大多数系统一样,I²C接口也有其权衡取舍。其基本限制是电阻上拉和400pF的最大电容。理想情况下,总线将具有较低的功耗,特别是对于电池供电的设备。较低的功率也会转化为较慢的总线速度。但有些应用需要更快的通信。典型I²C时钟速度在100kHz至3.4MHz之间;对于更快的速度,SPI时钟可以在数十兆赫兹区域。I²C也称为“双线”串行总线,9I²C双线数字接口非常适合速度较慢的系统。I²C使用双向信号;单条数据线将数据从主站传输到从站,并从从站向从站进行确认。系统可以有多个主节点,并且由于时钟来自当前活动的主节点,因此时钟也可以是双向的。这种双向通信使电流隔离复杂化,这就是为什么I²C通常只用于系统的小区域。

有大量的IC器件使用许多接口。设计时,最好搜索所需的功能,例如ADC、DAC、温度传感器或数字电位计,然后考虑可用的接口。

GPIO 简单明了

通用输入输出 (GPIO) 控制由来自微处理器的单个并行控制线组成。当简单的设备仅由几根电线控制时,就会使用它。GPIO 只是使用标准微处理器端口作为并行接口。同样,今天您可以找到许多并行接口IC,包括ADC和DAC。

结论

当界面正常工作时,工程师会微笑(有快乐的面孔)。周围悲伤的面孔表明某处失败。那么,应该吸取什么教训呢?老实说,它是如此简单,以至于通常被忽视:注意细节,特别是如果您不了解它们的全部重要性。它非常适合快乐和悲伤的面孔,因为,你看,它来自小酒馆的啤酒谈话。我们的英国同事告诉我们在设计中“注意你的P和Q”。当设计运作良好时,它可能意味着注意你的品脱和夸脱啤酒。因此,我们用啤酒庆祝成功,我们在啤酒中悲伤地哭泣。这就是为什么许多工程师只是说,“我会喝酒”,然后露出幸福的笑容。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分