ZHCAES6 October 2024 MSPM0C1104 , MSPM0L1306
此子系统演示了如何使用 MSPM0 通过主机从串行外设接口 (SPI)、I2C 或通用异步接收器-发送器 (UART) 发出的通信命令来实现 IO 扩展器功能。当主机上的 GPIO 数量不足时,此扩展很有帮助。除了支持控制 GPIO 输出之外,子系统还可以通过 SPI、I2C 或 UART 回读 GPIO 状态。图 1-1 展示了此例中使用的子系统和模块的基本架构。
表 1-2 具有指向示例代码的链接。在此演示中,IO 控制数限制为 8。但是,用户可以通过参考此演示来进一步扩展 IO。
表 2-1 展示了此应用中所需的外设和功能模块。
子块功能 | 外设使用 | 注释 |
---|---|---|
串行外设接口 | (1 个)SPI | 在代码中称为 SPI_0_INST |
I2C 接口 | (1 个)I2C | 在代码中称为 I2C0_INST |
UART 接口 | (1 个)UART | 在代码中称为 UART_0_INST |
GPIO | (8 个)GPIO | 在代码中称为 GPIO_GRP_0 |
若要基于 MSPM0 来评估 IO 扩展器,需要以下硬件元件:
在此子系统中,客户可灵活选择不同的通信接口,包括 I2C、SPI 或 UART。这可充分提高客户系统设计的灵活性。图 4-1 以 LP-MSPM0C1104 为例展示了此设计中的硬件连接。
表 4-1 展示了引脚配置,您还可以根据需要更改配置。SPI 通信配置为三线模式以节省 GPIO 资源。MSPM0L1306 和 MSPM0C1104 的引脚配置相同。
模块 | 功能 | 引脚配置 | 备注 |
---|---|---|---|
I2C 接口 | SDA | PA0 | 地址:0x48,I2C 时钟频率:400kHz |
SDL | PA1 | ||
串行外设接口 | POSI | PA25 | SPI 时钟频率:500kHz |
PISO | PA26 | ||
时钟 | PA17 | ||
UART 接口 | RX | PA18 | 波特率:9600bps |
TX | PA23 | ||
GPIO | GPIO | BIT0:PA2、BIT1:PA27、 BIT2:PA17、BIT3:PA24、 BIT4:PA4、BIT5:PA6、 BIT6:PA16、BIT7:PA22 |
本节介绍此演示的支持命令。gpioDirectionSet 函数用于启用或禁用 GPIO 输出。因为 MSPM0 可以同时启用 GPIO 输入和输出,所以 GPIO 输入始终是启用的。然后,方向字节中的每个位都用于启用或禁用 GPIO 输出。1 表示启用 GPIO 输出和输入,而 0 表示仅启用 GPIO 输入。有关受控位和 GPIO 之间的关系,请参阅 表 4-1。
类型 | 接头 | 命令 | 方向 | 校验和 |
---|---|---|---|---|
gpioDirectionSet | 0x5A | 0x01 | 1 个字节(1:OUT;0:IN) | 1 字节 |
gpioOutputCtl 函数用于控制 GPIO 输出。然后,输出控制字节中的每个位都用于设置 GPIO 输出高电平或输出低电平。1 表示输出高电平,而 0 表示输出低电平。请记住,此函数仅在主器件发送 gpioDirectionSet 函数之后有效。有关受控位和 GPIO 之间的关系,请参阅 表 4-1。
类型 | 接头 | 命令 | 输出控制 | 校验和 |
---|---|---|---|---|
gpioOutputCtl | 0x5A | 0x02 | 1 个字节(1:高电平;0:低电平) | 1 字节 |
gpioStateRead 函数用于读取 GPIO 状态。主器件需要将此命令发送到辅助器件,然后辅助器件将 GPIO 状态发送回主器件。然后,辅助器件所发送的引脚状态字节中的每个位都用于显示 GPIO 状态。1 表示 GPIO 状态为高电平,而 0 表示 GPIO 状态为低电平。此命令还可用于在主器件发送 gpioOutputCtl 命令之后检查 GPIO 控制是否符合预期。有关受控位和 GPIO 之间的关系,请参阅 表 4-1。
类型 | 接头 | 命令 | 引脚状态 | 校验和 |
---|---|---|---|---|
gpioStateRead | 0x5A | 0x03 | 1 个字节(1:高电平;0:低电平) | 1 字节 |
图 5-4 展示了主器件和辅助器件上的命令发送条件,另请参阅 节 7。
请完成以下步骤来评估该设计:
请按照本文档前面讨论的内容准备相关的硬件资源和软件代码。使用真实主机系统将 PC 替换为 USB2ANY GUI。请注意 MSPM0C1104 的 I2C 设置,因为 PA1 重复用作复位引脚。对于软件,禁用 SysConfig 中的复位功能,对于硬件,移除 J9 连接器以避免下拉电容器影响 I2C 通信。使用额外的上拉电阻器。
通过在 expander.h 中取消不需要的通信功能宏的注释来选择合适的通信接口(UART、SPI 或 I2C),如 图 5-3 中所示。现在,初始化通信接口并在 io_expander.syscfg(如果使用 UART)中设置通信参数,诸如波特率、数据位和停止位。
确保正确调用 transmitPacket 和 receivePacket 函数,以在通信期间发送和接收数据包,并验证校验和以确保通信正确。
通过引用 节 5.2 来写入执行 gpioDirectionSet、gpioOutputCtl 和 gpioStateRead 命令的函数。从主机向扩展模块发送相关命令,然后可以验证 GPIO 方向设置、输出值和输入值是否符合预期。
基于 I2C 的协议用法:图 7-1 展示了四种不同命令的用法,包括 GPIO 输出启用命令、GPIO 输出控制命令、GPIO 状态读取请求命令和 GPIO 状态读取响应命令。请注意,回读 GPIO 状态与 GPIO 输出控制命令中的稳定 GPIO 状态相同。
图 7-2 展示了三种不同命令的用法,包括 GPIO 输出启用命令、GPIO 状态读取请求命令和 GPIO 状态读取响应命令。在此测试中,所有 GPIO 都稳定为输入状态。
基于 UART 的协议用法:图 7-1 展示了四种不同命令的用法,包括 GPIO 输出启用命令、GPIO 输出控制命令、GPIO 状态读取请求命令和 GPIO 状态读取响应命令。
基于 SPI 的协议用法:图 7-1 展示了四种不同命令的用法,包括 GPIO 输出启用命令、GPIO 输出控制命令、GPIO 状态读取请求命令和 GPIO 状态读取响应命令。
LaunchPad™is a TM ofTI corporate name.
Microsoft® and Windows®are reg TMs ofMicrosoft Corporation.
Other TMs
TI 均以“原样”提供技术性及可靠性数据(包括数据表)、设计资源(包括参考设计)、应用或其他设计建议、网络工具、安全信息和其他资源,不保证其中不含任何瑕疵,且不做任何明示或暗示的担保,包括但不限于对适销性、适合某特定用途或不侵犯任何第三方知识产权的暗示担保。
所述资源可供专业开发人员应用TI 产品进行设计使用。您将对以下行为独自承担全部责任:(1) 针对您的应用选择合适的TI 产品;(2) 设计、验证并测试您的应用;(3) 确保您的应用满足相应标准以及任何其他安全、安保或其他要求。所述资源如有变更,恕不另行通知。TI 对您使用所述资源的授权仅限于开发资源所涉及TI 产品的相关应用。除此之外不得复制或展示所述资源,也不提供其它TI或任何第三方的知识产权授权许可。如因使用所述资源而产生任何索赔、赔偿、成本、损失及债务等,TI对此概不负责,并且您须赔偿由此对TI 及其代表造成的损害。
TI 所提供产品均受TI 的销售条款 (http://www.ti.com.cn/zh-cn/legal/termsofsale.html) 以及ti.com.cn上或随附TI产品提供的其他可适用条款的约束。TI提供所述资源并不扩展或以其他方式更改TI 针对TI 产品所发布的可适用的担保范围或担保免责声明。IMPORTANT NOTICE
邮寄地址:上海市浦东新区世纪大道 1568 号中建大厦 32 楼,邮政编码:200122
Copyright © 2024 德州仪器半导体技术(上海)有限公司