查看: 8548|回复: 2

如何模拟和检测I2C通信错误

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3938

    主题

    7559

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40221
    最后登录
    2025-9-9
    发表于 2021-5-6 10:08:44 | 显示全部楼层 |阅读模式
    如何模拟和检测I2C通信错误


    I2C总线,作为嵌入式领域的一种主流同步串行通信总线协议,被广泛应用于电视、录像机、音频、A/D转换、D/A转换、时间测量、传感器等领域,以其简单、可靠、占用芯片引脚少、扩展方便的优点,深受众多芯片制造商和嵌入式开发者的青睐。


    本篇小文主要关注恩智浦LPC系列MCU的I2C通信错误模拟和检测。如果客户把本文所述功能添加到自己的I2C应用中,可以提高其系统容错能力。
    以下以LPC51U68为例进行讲述,这些内容同样适用于其他LPC54xxx系列和LPC55xx系列MCU。

    I2C总线概述

    I2C总线是一种8位、双向、串行、同步总线协议,主要用于芯片之间的短距离、低速通信。具有如下特性:


    只需要两条总线,分别是串行时钟线(SCL)和串行数据线(SDA)。


    连接到总线的每个设备都具有唯一地址,并且始终存在简单的主/从关系。主机可以作为发送器或接收器。


    多主机支持,包括冲突检测和仲裁功能,可以防止两个或多个主机同时启动数据传输造成数据损坏。


    支持多种工作模式,包括标准模式(100 kbit/s)、快速模式(400 kbit/s)、高速模式(3.4 Mbit/s),单向超快速模式(5 Mbit/s)


    可以连接到同一总线的芯片数量仅受最大总线电容的限制。


    I2C总线规范的技术细节,请参考UM10204 - I2C-bus specification and user manual。

    LPC51U68的I2C通信错误

    根据用户参考手册UM11071-LPC51U68 User manual,LPC51U68 I2C总线通信错误主要包括四种类型:


    ·Start/Stop错误
    ·Arbitration Loss
    ·SCL time-out
    ·Event time-out


    接下来,小编就为众位大神讲述这四种通信错误类型。
    首先是Start/Stop错误。了解I2C协议的众位大神都清楚,I2C总线以8位的方式进行传输,并且以Start信号作为传输的开始,以Stop信号作为传输的结束。如果I2C主机发起传输之后,在某一个8位传输的过程中,当外界的干扰造成主机意外检测到Start或者Stop信号,传输就会中断。此时,这个Start或者Stop信号就是Start/Stop错误。
    那么什么是Arbitration Loss呢? 正如前面描述的那样,I2C支持多主机特性。在多个主机同时试图发起传输时,为保证数据传输的完整性,避免总线访问冲突,仲裁机制会选择其中一个主机获得总线控制权从而完成传输,其余主机丢失总线控制权退出传输。对于丢失总线控制权的主机而言,这就是Arbitration Loss。有关I2C总线仲裁的技术细节,请参考UM10204 - I2C-bus specification and user manual。
    LPC51U68 I2C支持两种超时类型检测,并提供TIMEOUT寄存器用于设置超时阈值。
    第一种超时:如果SCL上的串行时钟被拉低,且持续时间超过超时阈值,这时就会产生SCL time-out。


    第二种超时:如果两个I2C事件的时间间隔超过超时阈值,这时就产生了Event time-out。


    那什么是I2C事件呢?什么样的信号可以作为I2C事件呢?根据用户参考手册UM11071-LPC51U68 User manual,可以作为I2C事件的条件包括Start信号,Stop信号以及SCL串行时钟的变化。

    LPC51U68 I2C通信
    错误模拟和检测系统概述

    为了实现I2C通信错误的模拟和检测,小编设计了一个简单的系统。下图为该系统的总体框图。
    1.png


    图1,I2C总线错误模拟和检测系统
    如图1所示,系统包括两个带有I2C接口的LPC51U68评估板(OM40005)分别作为主机和从机,以及一个带有SCTimer的LPC55S69评估板(LPCXpresso55S69 Revision A2)作为I2C干扰生成机。


    在不施加任何干扰的情况下,I2C传输可以正常进行。如果需要模拟并检测I2C通信错误,可以令干扰生成机检测并计数SCL串行时钟,然后根据需要产生的错误类型将干扰施加到SCL或者SDA上。其中,SCL time-out需要将干扰施加到SCL线,其余3种通信错误需要将干扰施加到SDA线。
    如何模拟I2C通信错误

    SCTimer是NXP MCU特有的功能部件,利用它可以实现边沿检测和可配置硬件状态机。


    本文正是利用SCTimer的这个特性,检测SCL上的I2C串行时钟并对时钟计数,进而达到监控I2C传输状态的目的,然后在合适的I2C传输状态对SCL或SDA施加干扰,从而制造所需类型的I2C通信错误,并最终由I2C主机检测并输出。
    下面小编就分别介绍4种I2C通信错误的状态机设计。
    图2和图3分别为Start/Stop错误的状态转换和实测信号。干扰机在状态3检测到SCL上升沿并延迟一段时间,确保在SCL高电平期间将SDA拉低,从而制造一个Start信号。但此时,I2C正处于从机寻址阶段,传输正在进行,因此这个Start信号是个Start/Stop错误。
    2.png
    图2,Start/Stop错误状态转换
    3.png
    图3,Start/Stop错误相关信号
    图4和图5分别为ArbitrationLoss的状态转换和实测信号。


    状态机的状态2检测到SCL下降沿时,是SCL第二个时钟周期,正处于从机寻址阶段。


    本文设定从机地址为0x7E, 采用MSB方式发送。也就是说,主机此时应该向SDA发送高电平,但由于干扰机的作用,SDA被拉低,主机因此检测到要发送到SDA的电平和实际不符,即检测到仲裁丢失-Arbitration Loss。
    4.png
    图4,Arbitration Loss状态转换


    5.png
    图5,ArbitrationLoss相关信号
    图6和图7分别为SCL time-out的状态转换和实测信号。


    状态机的状态4检测到SCL下降沿时,将SCL一直拉低,持续时间必然能超过超时阈值,这样SCL time-out就产生了。
    6.png
    图6,SCLtime-out状态转换
    7.png
    图7,SCL time-out相关信号
    图8和图9分别为Event time-out的状态转换和实测信号。


    干扰机状态0在SCL上检测到第一个下降沿之后拉低SDA,延迟等待直到SCL拉高,再将SDA拉高,从而制造一个Stop信号。这样调节干扰机的延迟等待控制相邻的Start信号和Stop信号的时间间隔,从而产生Event time-out。
    8.png
    图8,Event time-out状态转换


    9.png
    图9,Eventtime-out相关信号

    如何检测和输出I2C通信错误

    检测和输出I2C通信错误,涉及到软硬件环境配置和超时阈值计算,有关这部分的细节,请参考应用笔记AN13238- How to Trigger and Detect Transmission Errors for LPC51U68 I2C和配套软件,如图10所示。
    10.png
    图10,应用笔记和配套软件

    总结

    本文着眼于如何模拟和检测LPC54xxx和LPC55xxx系列MCU的I2C通信错误,并以LPC51U68为例,给出模拟和检测系统的总体构成和工作原理,重点介绍如何设计基于SCTimer的干扰机以模拟I2C通信错误,并给出相应的过程分析。


    最后,如果各位大神对相关技术细节感兴趣,可以参考文章上面给出的应用笔记和配套软件。

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4693

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10101
    最后登录
    2025-9-4
    发表于 2021-5-6 10:56:26 | 显示全部楼层
    原来自以为很了解IIC总线协议。
    看完本文章后,才发现异常的处理还需要做的很多。
    这也体现了协议的完整性。
    学习了,谢谢楼主了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    72

    帖子

    0

    注册会员

    Rank: 2

    积分
    78
    最后登录
    2023-1-28
    发表于 2022-1-21 23:49:49 | 显示全部楼层
    本帖最后由 kwcha333 于 2022-2-13 21:32 编辑

    谢谢楼主分享





    这家按揭通为客户设立了性价比高的按揭贷款服务,服务质素高又有保证之余,更会提供低息及现金券等不同优惠。他们的审批比起银行较为宽松, 也没有严谨的压力测试。更可以做到高成数的按揭, 再按申请人的财务状况来厘定还款标准, 想知多些关于居屋按揭 邊 間 好 可前往https://www.buildingmanagementweek.hk/二手居屋按揭年期-2    浏览更多喔!


    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-9 20:09 , Processed in 0.095223 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表