• Menu
  • Product
  • Email
  • PDF
  • Order now
  • UART 转 SPI 桥接器

    • ZHCADO7A January   2024  – September 2024 MSPM0G3507

       

  • CONTENTS
  • SEARCH
  • UART 转 SPI 桥接器
  1.   1
  2. 1 说明
  3. 2 所需外设
  4. 3 兼容器件
  5. 4 设计步骤
  6. 5 设计注意事项
  7. 6 软件流程图
    1. 6.1 器件配置
    2. 6.2 所需的 UART 数据包
  8. 7 应用代码
  9. 8 其他资源
  10. 9 E2E
  11. 10商标
  12. 重要声明
search No matches found.
  • Full reading width
    • Full reading width
    • Comfortable reading width
    • Expanded reading width
  • Card for each section
  • Card with all content

 

Subsystem Design

UART 转 SPI 桥接器

下载最新的英语版本

1 说明

该子系统演示了如何实现将 MSPM0 器件作为通用异步接收器/发送器 (UART) 到串行外设接口 (SPI) 的桥接器。传入的 UART 数据包应采用特定格式,以便于 SPI 通信。本示例还能够确定错误条件并将其传回 UART 器件。本示例的代码位于 MSPM0 SDK 中。

MSPM0G3507 系统功能方框图图 1-1 系统功能方框图

2 所需外设

表 2-1 所需外设
使用的外设 注释
UART 在代码中称为 UART_BRIDGE_INST
SPI 在代码中称为 SPI_0_INST

3 兼容器件

根据表 2-1 中的要求,该示例与表 3-1 中展示的器件兼容。通常,具有所需外设表中列出的功能的任何器件都可以支持本示例。

表 3-1 兼容器件
兼容器件 EVM
MSPM0Lxxxx LP-MSPM0L1306
MSPM0Gxxxx LP-MSPM0G3507

4 设计步骤

  1. 在 SysConfig 中设置 SPI 模块。将器件置于控制器模式,并将其余设置保留为默认值。在 Advanced Configuration 选项卡中,确保将 RX FIFO 阈值水平设置为 RX FIFO contains ≥ 1 entry。确保将 TX FIFO 阈值级别设置为 TX FIFO contains ≤ 2 entries。现在导航到 Interrupt configuration 选项卡,并启用 Receive、Transmit、RX Timeout、Parity Error、Receive FIFO Overflow、Receive FIFO Full 和 Transmit FIFO Underflow 中断。
  2. 在 SysConfig 中设置 UART 模块。将波特率设置为 9600。启用 Receive 中断。

5 设计注意事项

  1. 在应用程序代码中,请确保根据应用程序的要求检查 SPI 和 UART 最大数据包大小。
  2. 要提高 UART 波特率,请调整 SysConfig UART 选项卡中标记为 Target Baud Rate 的值。在此下方,观察计算得出的波特率变化以反映目标波特率。这可以使用可用的时钟和分频器进行计算。
  3. 检查错误标志并进行适当处理。UART 和 I2C 外设都能够引发信息性错误中断。为了方便调试,该子系统在引发错误代码时使用枚举和全局变量来保存错误代码。在实际应用中,应在代码中处理错误,以确保错误不会使工程中断。
  4. 工程的当前形式定义了数据包的所有格式化部分,例如 UART_START_BYTE、UART_READ_SPI_BYTE 和 UART_WRITE_SPI_BYTE。这些代码都附有定义,指定这些命令在数据包标头中的位置。可以更改本实现中的值。确保 UART 起始字节和读取/写入字节不是应用中预期的字节。

6 软件流程图

图 6-1 展示了本示例的代码流程图,并说明了不同的 UART 桥接器等待状态以及器件在每个状态下采取的操作。该流程图还展示了 UART 和 SPI 的中断服务例程。

MSPM0G3507 软件流程图图 6-1 软件流程图

6.1 器件配置

该应用利用 TI 系统配置工具 (SYSCONFIG) 图形界面来生成器件外设的配置代码。使用图形界面配置器件外设可简化应用原型设计过程。

软件流程图中描述的代码位于 uart_to_spi_bridge.c 文件中。

6.2 所需的 UART 数据包

图 6-2 展示了使用 SPI 执行读写操作所需的 UART 数据包。显示的值是示例中定义的默认标头值。

  • 起始字节:桥接器用来指示新事务开始的值。在桥接器检测到该值之前,UART 传输将被忽略。
  • SPI 读取或写入指示器:此值会告知桥接器是对 SPI 器件执行读取还是写入操作。
  • 消息长度 N:传输的数据长度(以字节为单位)。
  • D0, D1, ..., D(N – 1):数据正在传输到桥接器
注: 读取数据包仅包含标头。进行读取时,不需要在数据包之后发送数据。桥接器器件会自动向 SPI 外设发送正确数量的虚拟数据,以获取读取的数据。
MSPM0G3507 UART 写入和读取数据包格式图 6-2 UART 写入和读取数据包格式

7 应用代码

某些用户希望更改 UART 数据包标头使用的具体值,或更改最大数据包大小。这种更改可以通过修改 uart_to_spi_bridge.c 文件开头的 #define 值来实现,如以下代码所示。

/* Define UART Header and Start Byte*/
#define UART_HEADER_LENGTH  0x02
#define UART_START_BYTE     0xF8
#define UART_READ_SPI_BYTE  0xFA
#define UART_WRITE_SPI_BYTE 0xFB
#define RW_INDEX            0x00
#define LENGTH_INDEX        0x01

/*Define max packet sizes*/
#define SPI_MAX_PACKET_SIZE     (16)
#define UART_MAX_PACKET_SIZE    (SPI_MAX_PACKET_SIZE + UART_HEADER_LENGTH)

代码的许多部分旨在用于错误检测和处理。在代码中的这些点上,用户可以使用额外的错误处理或报告来实现更稳健的应用。例如,以下代码段演示了一种检查 SPI 传输中是否存在错误的方法,可在发生错误时设置错误标志。用户可以退出发送并更改此处的 UART 桥接器状态以反映错误。代码中的这一部分和许多其他部分都有考虑错误处理的选项。

for(int i = 0; i < gMsgLength; i++){
                if(!DL_SPI_transmitDataCheck8(SPI_0_INST, gSPIData[i])){
                    gError = ERROR_SPI_WRITE_FAILED;
        }
}

8 其他资源

  • 德州仪器 (TI),下载 MSPM0 SDK
  • 德州仪器 (TI),详细了解 SysConfig
  • 德州仪器 (TI),MSPM0L LaunchPad™
  • 德州仪器 (TI),MSPM0G LaunchPad™
  • 德州仪器 (TI),MSPM0 SPI Academy
  • 德州仪器 (TI),MSPM0 UART Academy

9 E2E

请访问 TI 的 E2E 支持论坛来查看讨论并发布新主题,以获得在设计中使用 MSPM0 器件的技术支持。

10 商标

LaunchPad™is a TM ofTI corporate name.

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 德州仪器半导体技术(上海)有限公司

 

Texas Instruments

© Copyright 1995-2025 Texas Instruments Incorporated. All rights reserved.
Submit documentation feedback | IMPORTANT NOTICE | Trademarks | Privacy policy | Cookie policy | Terms of use | Terms of sale