该子系统演示了如何实现将 MSPM0 器件作为通用异步接收器/发送器 (UART) 到串行外设接口 (SPI) 的桥接器。传入的 UART 数据包应采用特定格式,以便于 SPI 通信。本示例还能够确定错误条件并将其传回 UART 器件。本示例的代码位于 MSPM0 SDK 中。
使用的外设 | 注释 |
---|---|
UART | 在代码中称为 UART_BRIDGE_INST |
SPI | 在代码中称为 SPI_0_INST |
根据表 2-1 中的要求,该示例与表 3-1 中展示的器件兼容。通常,具有所需外设表中列出的功能的任何器件都可以支持本示例。
兼容器件 | EVM |
---|---|
MSPM0Lxxxx | LP-MSPM0L1306 |
MSPM0Gxxxx | LP-MSPM0G3507 |
图 6-1 展示了本示例的代码流程图,并说明了不同的 UART 桥接器等待状态以及器件在每个状态下采取的操作。该流程图还展示了 UART 和 SPI 的中断服务例程。
图 6-2 展示了使用 SPI 执行读写操作所需的 UART 数据包。显示的值是示例中定义的默认标头值。
某些用户希望更改 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;
}
}
请访问 TI 的 E2E 支持论坛来查看讨论并发布新主题,以获得在设计中使用 MSPM0 器件的技术支持。
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 德州仪器半导体技术(上海)有限公司