0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I²C系统实现中的权衡取舍和微处理器的GPIO通信的基本操作

星星科技指导员 来源:ADI 作者:ADI 2023-04-04 11:37 次阅读

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

介绍

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

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

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

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

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

基本 SPI 操作

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

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

pYYBAGQrm3CAUWpSAAAmF6kAjeE865.gif


图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 = 不在乎。
*所有未列出的命令均为保留命令。请勿使用。

poYBAGQrm3CALIpiAAAU1KAw6V0081.gif


图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-485USB以太网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。

结论

当界面正常工作时,工程师会微笑(有快乐的面孔)。周围悲伤的面孔表明某处失败。那么,应该吸取什么教训呢?老实说,它是如此简单,以至于通常被忽视:注意细节,特别是如果您不了解它们的全部重要性。

审核编辑:郭婷

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

    关注

    68

    文章

    10824

    浏览量

    211131
  • 微处理器
    +关注

    关注

    11

    文章

    2247

    浏览量

    82310
  • GPIO
    +关注

    关注

    16

    文章

    1196

    浏览量

    51908
收藏 人收藏

    评论

    相关推荐

    GPIO模拟I2C总线的驱动设计与实现

    I2C总线简单方便,是我们经常使用的一种总线。但有时候我们的MCU没有足够多的I2C控制实现我们的应用,所幸我可以使用普通的GPIO引脚
    发表于 12-14 14:19 5332次阅读
    <b class='flag-5'>GPIO</b>模拟<b class='flag-5'>I2C</b>总线的驱动设计与<b class='flag-5'>实现</b>

    微处理器主要部件组成概述

    总线结构,即构成微机的各功能部件(微处理器、存储I/O接口电路等)之间通过总线相连接,这是微型计算机系统结构上的独特之处。采用总线结构之后,使
    发表于 04-13 09:52

    什么是嵌入式系统和嵌入式微处理器

    扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备
    发表于 08-12 14:35

    MiCO 基于微处理器的物联网操作系统

    `MiCO 基于微处理器的物联网操作系统介紹 :`
    发表于 01-26 10:42

    详解微处理器和微控制区别

    面向控制的设备,微控制经常要实时响应外界的激励。  其二,应用领域。微处理器通常作为微型计算机系统的CPU使用,其设计正是针对这样的应用,这也是
    发表于 10-27 15:51

    【转帖】详解微处理器和微控制区别

    控制的设备,微控制经常要实时响应外界的激励。二,应用领域微处理器通常作为微型计算机系统的CPU使用,其设计正是针对这样的应用,这也是微处理器
    发表于 11-17 14:10

    处理器微处理器系统

    /单片机。世界上的微处理器系统的总数比人类总数还多得多。它的基本工作原理是用程序控制系统的行为。微处理器系统的基本
    发表于 02-07 11:41

    了解微处理器的基本操作

    1.主要学习嵌入式系统概述了解微处理器的基本操作。理解微处理器体系结构的基本概念。机器语言程序的基础知识。用汇编语言设计和编写程序2.嵌入式系统
    发表于 12-17 07:50

    基于S3C44B0X微处理器的JFFS2件系统实现

    基于S3C44B0X微处理器的JFFS2件系统实现
    发表于 03-28 09:50 16次下载

    基于Linux操作系统和S3C2410微处理器实现GPS实时导航系统的设计

    这里提出一种实用的设计方案,通过对系统的各方面配置,实现GPS实时导航功能。系统主控器件采用韩国Samsung公司生产的ARM核32位RISC微处理器S3
    发表于 03-09 10:47 1064次阅读
    基于Linux<b class='flag-5'>操作系统</b>和S3<b class='flag-5'>C</b>2410<b class='flag-5'>微处理器</b><b class='flag-5'>实现</b>GPS实时导航<b class='flag-5'>系统</b>的设计

    基于S3C4510B微处理器操作系统实现网络通信工程的编写设计

    Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。它也是针对无MMU(内存管理单元模块)的微处理器
    的头像 发表于 10-04 17:37 1948次阅读
    基于S3<b class='flag-5'>C</b>4510B<b class='flag-5'>微处理器</b>和<b class='flag-5'>操作系统</b><b class='flag-5'>实现</b>网络<b class='flag-5'>通信</b>工程的编写设计

    STM32 通用GPIO模拟I2C实现

    STM32 模拟I2C实现#通用GPIO模拟I2C通信实现样例1 GPIO初始化``#ifdef
    发表于 11-29 15:21 28次下载
    STM32 通用<b class='flag-5'>GPIO</b>模拟<b class='flag-5'>I2C</b><b class='flag-5'>实现</b>

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

    最低的IC。本文解释了I²C系统实现权衡取舍,并
    的头像 发表于 06-10 10:15 1242次阅读
    <b class='flag-5'>微处理器</b>的<b class='flag-5'>GPIO</b><b class='flag-5'>通信</b>的基本<b class='flag-5'>操作</b>

    嵌入式微处理器的原理和应用

    嵌入式微处理器是专为嵌入式系统设计的微处理器,它们是嵌入式系统的核心组件,负责执行程序指令、处理数据和控制其他硬件设备。与通用
    的头像 发表于 03-28 15:51 820次阅读

    什么是嵌入式微处理器? 嵌入式微处理器的区别

    嵌入式微处理器(Embedded Microprocessor)是一种被用于控制和操作特定嵌入式系统微处理器。嵌入式系统是指内部集成了特定
    的头像 发表于 04-21 15:44 1465次阅读