请选择 进入手机版 | 继续访问电脑版
查看: 2377|回复: 6

[分享] [应用笔记]使用 LPC553x/LPC55S3x 构建 I3C 传感器网络

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3297

    主题

    6542

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31909
    最后登录
    2024-3-29
    发表于 2022-6-15 14:41:27 | 显示全部楼层 |阅读模式
    使用 LPC553x/LPC55S3x 构建 I3C 传感器网络


    1 简介
    一些最新的 NXP MCU(i.MX RT6xx、i.MX RT5xx、LPC553x/LPC55S3x)
    已集成 MIPI I3C 控制器,以支持更快、更节能、标准化传感器通信,同时仍保持落后与传统 I2C 兼容。这一重大改进预计将用于许多移动和物联网应用程序。
    I3C 总线协议支持:
    • 带内命令代码(通用命令代码 (CCC))
    • 动态地址分配 (DAA)
    • 带内中断(IBI):中断可以从从设备到主设备,无需额外的线路,从设备可以临时控制总线并向主机报告某些事件。
    • 多主机/多点
    • 热连接
    • 与传统 I2C 兼容,但没有时钟延长


    本应用笔记描述了如何使用 LPC553x/LPC55S3x I3C 控制器作为主控制器,充分利用一些关键I3C 的 DAA 和 IBI 等特性,如何构建传感器网络,并与网络上的这些从传感器进行通信。


    它首先概述了 I3C 的基本功能,然后介绍了如何使用 NXP SDK API 进行通信通过 CCC 命令与 I3C 从传感器,动态分配从地址,并与这些传感器交换数据最后,直接给出了一些示例,如何使用 SDK 提供的回调来处理来自这些从传感器的带内中断。


    S/W 封装在与板载 InvenSense ICM42688 通信的 LPC553x/LPC55S3x EVK 板上进行测试运动跟踪传感器,并与 NXP 温度传感器模块板上的两个 P3T11xx 温度传感器连接外部通过 I3C 总线。


    2 MIPI I3C 基础
    本节提供有关 LPC553x/LPC55S3x MCU I3C 控制器和通用命令功能的基本信息代码 (CCC)。
    2.1 特点
    LPC553x/LPC55S3x MCU I3C控制器支持:
    • 2 线多点总线,时钟速度为 12 MHz,最多可连接 11 个设备。
    • 使用具有4 mA 驱动的标准焊盘(I2C 使用特殊焊盘)。
    • 从机不需要静态地址,它的地址可以由主机动态分配。但是,奴隶可以在启动时分配一个 I2C 静态地址,以便从机可以自然地在I2C 总线上运行。
    • 带内中断(IBI),它允许从设备通知主设备而不需要外部引脚。
    2.2 通用指令码(CCC)
    MIPI I3C 主控可以使用通用命令码 (CCC) 广播命令一次或直接控制多个 I3C 设备命令来控制每个单独的设备,而 I3C 从设备侦听并支持许多 CCC 命令来控制并报告某些设备特性和状态,例如,总线复位、报告设备临时 ID (PID)、总线特性寄存器 (BCR)、设备特性寄存器 (DCR)、启用/禁用从机事件,例如带内中断或更新从机动态地址。
    MIPI I3C 规范中有许多 CCC 命令。有些是广播的,有些是直接的。为了支持动态地址分配 (DAA),这里只列出了与本应用笔记相关的几个最重要的命令。这些 CCC的命令是:
    • RSTDAA 重置总线上所有从设备上的动态地址。
    • ENTDAA 强制所有 I3C 从设备(如果它们尚未分配动态地址)进入地址分配模式。
    • SETDASA 从静态地址设置动态地址。注意:并非所有人都需要此 SETDASA CCC 命令支持I3C 从设备。
    • SETNEWDA 设置新的动态地址。
    • ENEC/DISEC 启用/禁用从属事件。
    有关 CCC 命令的更多信息,请查看 http://mipi.org


    3 设置 I3C 传感器网络
    在此传感器网络示例中,使用了三个 I3C 从传感器:
    • InverSense ICM42688 运动跟踪传感器
    • NXP P3T1175 温度传感器
    • NXP P3T1108 温度传感器
    在 LPC553x/LPC55S3x IOCON 上,这三个引脚用于 I3C 通信。
    PIO0_9 I3C_SCL(I3C 时钟)
    PIO0_24 I3C_SDA(I3C 数据)
    PIO0_28 I3C_PUR(SDA 线上的 I3C 上拉控制)。
    在 LPC553x/LPC55S3x EVK 板上,这些引脚直接连接到板载运动跟踪传感器 ICM42688P。
    在外部,EVK 板还连接到 NXP P3T11xx 温度模块,其中 P3T1175 和 P3T1108 都在相同的 I3C 总线。两块板之间的连接如下表所示:
    10.png
    注意
    本应用笔记末尾描述了一个已知问题,解释了为什么板载 Arduino 连接器无法使用 NXP P3T11xx 温度模块。
    11.png
    有关跳线设置的更多信息,请参阅 LPC553x/LPC55S3x-EVK 板用户手册。
    P3T11xx 温度模块跳线设置(如果下面未提及,则使用原理图中的默认设置):
    JP2 1-2 关闭 I3C SCL
    JP3 1-2 关闭 I3C SDA

    由于 JP1 2-3 关闭,温度模块默认使用 3.3 V 电源,JP1,电压选择器,打开LPC553x/LPC55S3x EVK 板,1-2 应相应闭合 (3.3 V)
    12.png
    13.png
    4 I3C DAA 和传感器网络发现
    本节介绍使用 SDK 中现有的 I3C 驱动程序 API 将 I3C 控制器配置为 I3C 主机的步骤,使用 CCC 命令并为网络上的这些传感器分配动态地址,插入回调以监听 IBI来自从站的中断,最后,连续读取传感器数据并响应 IBI 中断。除了应用笔记之外,还有在 Keil、IAR 和MCUXpresso IDE。包含两个 zip 文件,一个用于 Keil 和 IAR,另一个用于 MCUXpresso。 Keil 是 IAR 项目位于目录 \boards\lpcxpresso55s36\driver_examples\i3c\i3c_sensor_network 中。
    4.1 I3C主机初始化和DAA
    本例中的 I3C 主控初始化 i3c_sensor_network.c 包括以下内容:
    • 根据系统时钟设置,您可能需要 I3C 时钟的时钟分频器。
    — 主机需要一个准确的时钟,其频率是 I3C 时钟的倍数。更高的波特率
    您需要达到的速率,您必须为 I3C 控制器考虑更高的时钟频率。例如,这个示例为 I3C 控制器设置 50 MHz 时钟,该控制器理想地支持 2.5 MHz 和 10 MHz I3C 时钟。
    — 由于连接到 I3C 总线的 I3C 从机的各种设备特性,必须使用较慢的推挽波特率
    在 DAA 之前使用。此示例最初将 PPBAUD 设置为 2 Mbit/s,将 ODBAUD 设置为 400 Kbps。一旦地址分配完成后,可以使用更高的推挽波特率进行数据通信。 SDK I3C 驱动程序 API I3C_MasterSetBaudRate() 可用于为传感器数据读取设置更高的波特率。
    — PPBAUD 的分频器是 MCONFIG 寄存器中的 4 位字段。无法设置非常快的 I3C 时钟。
    如果某些设备在 DAA 期间不支持更高的 PPBAUD,则可以设置更慢的 I3C,在 DAA 之前与较低的 PPBAUD 一起时钟,然后设置一个更快的 I3C 时钟以及较高的 PPBAUD。
    •为 I3C 总线上的所有传感器创建一个设备地址表,让所有这些传感器监听来自主机的广播命令。
    • 创建一个I3C 辅助主机作为总线上的第一个节点,并为该辅助主机分配一个动态地址NXP 供应商 ID 和一些伪设备特征。
    • I3C_BusMasterCreate() API 是用于创建主结构和分配的最重要的引擎动态地址到总线上的设备。


    主机结构创建不仅必须包括主机的所有资源能力,还必须考虑连接到总线的所有可能的设备,I3C 或 I2C,因此,所有波特率、I2C 波特率、I3C 推挽式波特率、此处必须考虑和配置 I3C 开漏波特率。
    • 首先向总线上的所有从站发出RSTDAA CCC 广播命令,以确保干净启动。
    • 向所有从机发出DISEC CCC 广播命令以在DAA 期间禁用从机事件,以防止诸如从机带内中断等事件。
    • 主机使用内置的输入动态地址分配 (ENTDAA) 机制来简化分配
    对奴隶的 DA。这种内置机制还负责处理那些不支持 SETDASA CCC 的从设备命令。在 LPC553x/LPC55S3x 用户手册中,“为 I3C 设备分配动态地址”部分描述了DAA 机制详解。在用于 LPC553x/LPC55S3x 的 SDK 中,I3C 驱动程序中的 API I3C_BusMasterDoDAA() 完全正确将动态地址分配给从设备。
    • 在DAA 过程中,master 也会读取slave 的唯一设备信息和能力,例如partnumber、Vendor ID(VID)、BCR、DCR注册并保存在每个设备的设备信息数据结构中。
    • 在DAA 完成后,向所有从机发出ENEC CCC 广播命令以重新启用从机事件。
    一旦 DAA 完成,在 i3c_sensor_network.c 文件中,主程序 demo_i3cBus.i3cDevList 包含一个列表在 I3C 总线上找到的设备。唯一的设备信息数据用作列表中所有设备的标识符。设备句柄是根据唯一的部件号和设备 VID 提取的,用于点对点通信在主设备和传感器设备之间。

    表 3. DAA 前后的传感器特定信息
    14.png
    未完
    完整版点击下方下载



    签到签到
    回复

    使用道具 举报

  • TA的每日心情

    3 小时前
  • 签到天数: 811 天

    [LV.10]以坛为家III

    5

    主题

    5634

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    6776
    最后登录
    2024-3-29
    发表于 2022-6-15 14:48:03 | 显示全部楼层
    看看是啥
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1334 天

    [LV.10]以坛为家III

    88

    主题

    4290

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9022
    最后登录
    2024-3-29
    发表于 2022-6-15 16:19:39 | 显示全部楼层
    I3C 这是要站在舞台中央的节奏啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 302 天

    [LV.8]以坛为家I

    4

    主题

    581

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2428
    最后登录
    2024-3-29
    发表于 2022-6-16 09:23:23 | 显示全部楼层
    I3C究竟是啥??
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 1912 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    16999
    最后登录
    2024-3-29
    发表于 2022-6-16 09:52:38 | 显示全部楼层
    I3C还没用过呢
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-23 09:57
  • 签到天数: 1587 天

    [LV.Master]伴坛终老

    5

    主题

    3046

    帖子

    23

    金牌会员

    Rank: 6Rank: 6

    积分
    8183
    最后登录
    2024-3-28
    发表于 2022-6-16 10:02:20 | 显示全部楼层
    有看到其他家也在推支持 I3C的器件了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    3
    最后登录
    2022-6-16
    发表于 2022-6-16 10:56:14 | 显示全部楼层
    学习一下I3C
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-3-29 21:26 , Processed in 0.151962 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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