本应用手册可作为准备和使用与 LP-MSPM0G3507 配对的 TPS929xxx-Q1 器件系列示例代码的指南。用户还可以使用系统配置工具 (SYSCONFIG) 轻松地将此代码移植到其他 MSPM0 器件。
Code Composer Studio™is a TM ofTI corporate name.
Windows®is a reg TM ofMicrosoft Corporation.
Other TMs
示例代码展示了点亮 TPS929120EVM、TPS929160EVM 和 TPS929240EVM 上的 LED 的功能。每个 TPS929xxxEVM 都有各自的示例代码。但是,唯一的区别在于在 led_driver.h 文件中选择所用的 LED 驱动器 IC。这有助于用户无需对示例代码进行任何修改即可点亮 EVM。
代码中有两种模式:动画和 EEPROM 编程。默认选择动画模式。节 4.2介绍了如何在这两种模式之间切换。在动画模式下,根据预定义的顺序使用 6 种不同的动画。通过点击 LP-MSPM0G3507 上的按钮 S2,可在不同动画之间切换。在每次播放动画后,都会执行诊断以确定是否发生了任何故障。有关诊断的更多信息,请参阅节 4.3。
示例代码附带许多预定义的 API,这些 API 可用于更改 LED 驱动器的配置、执行诊断或构建自定义 FlexWire 命令。预定义的 API 会根据指定的系统自动调整。如需了解有关系统演示的更多详情,请参阅节 4.2。
本节介绍了硬件设置与每个器件特定 EVM 用户指南中的描述之间的差异。检查以下指南中的硬件设置:
示例代码将 USB2ANY 替换为 LP-MSPM0G3507。可采用两种方法将 LP-MSPM0G3507 连接到 TPS929xxxEVM,此处使用 TPS929240EVM 进行演示。
表 2-1 中列出了这两种连接方法。图 2-1 中显示了 LP-MSPM0G3507 上的各个位置。首先,将 SW1 和 J14 的 PA9 连接在一起。除上述连接外,示例代码中还使用了 LP-MSPM0G3507 的开关 S1(青色)和 S2(绿色)。有关更多详细信息,请参阅节 4.1。在 TPS929xxxEVM 上,必须针对每种模式正确设置跳线。器件特定 EVM 用户指南对此进行了介绍。
接口 | 电路板 | UART-RX | UART-TX | +3.3V | GND | +5V |
---|---|---|---|---|---|---|
LP-MSPM0G3507 | PA9 | PA8 | J1-1 | J1-22 | J1-21 | |
CAN | TPS929120CANEVM | J3-13 | J3-14 | J3-15 | J3-16 | +5V (J3-21) |
UART | TPS929120EVM | J3-3 | J3-4 | J3-5 | J3-6 | \ |
TPS929160EVM | J29-3 | J29-4 | J29-5 | J29-6 | \ | |
TPS929240EVM | J4-3 | J4-4 | J4-5 | J4-6 | \ |
要为 LP-MSPM0G3507 设置软件,请执行以下步骤(在装有 Windows® 10 操作系统的计算机上演示):
示例代码中的简要流程如图 4-1 所示。在整个流程中,使用了 FlexWire 总线上的器件数量及地址。system_info.h 和 system_info.c 文件中指定了这些信息,节 4.2中对此进行了更详细的说明。
设置 MCU 会配置 UART 接口并设置为 750000 波特。解锁 LED 驱动器后,M0 会检查是选择了动画模式还是 EEPROM 编程模式。节 4.2介绍了如何在这两种模式之间切换。在动画模式期间,系统将执行 LED 图形,并在完成后检查诊断结果。如需详细了解诊断结果,请参阅节 4.3。诊断完成后,M0 会检查 LP-MSPM0G3507 上的按钮 S2 是否已按下。如果该按钮未按下,将再次执行同一 LED 图形。如果该按钮已按下,则执行下一个 LED 图形,直到所有 6 个图形都已执行,循环再次从第一个图形重新开始。
在 EEPROM 编程模式期间,LP-MSPM0G3507 上的按钮 S1 和 S2 以及 LED2 用于向用户提供反馈。选择非默认 EEPROM 编程后,eeprom_data.h 和 eeprom_data.c 文件用于对 EEPROM 进行编程。这些文件可由节 2中提到的 EEPROM 配置工具自动生成。如需更多有关 EEPROM 编程的信息,请参阅节 4.4。
本节介绍了示例代码如何设置不同的参数来识别系统的构建方式。第一部分是实际使用的 LED 驱动器 IC。在 led_driver.h 文件中,选择使用的 LED 驱动器 IC。示例代码默认包括 TPS929240。
示例代码还支持:
请注意,对于 Q1 器件,不会添加该后缀,仅使用基本产品名称。所选器件对于处理寄存器中不同的寄存器地址和字段非常重要。此外,在对默认 EEPROM 进行编程时,指定的 LED 驱动器 IC 是用于对默认值进行编程的驱动器 IC。这意味着当用户想要将 TPS929120 编程为 TPS929120A 时,必须在 led_driver.h 文件中选择 TPS929120A。
表 4-1 中汇总了影响系统设置的宏和变量。
文件名 | 宏或变量名称 | 说明 |
---|---|---|
system_info.h | DEVICE_CNT | FlexWire 总线上的器件数量 |
CAN_USED | 在 UART 或 UART 转 CAN 之间进行选择 | |
ALWAYS_CHECK_CRC | 为所有非广播命令启用 CRC 检查功能 | |
PROG_EEPROM | 启用 EEPROM 编程模式 | |
PROG_DEFAULT_EEPROM | 对默认 EEPROM 值进行编程,而不是对自定义 EEPROM 值进行编程 | |
USE_REF_PIN_FOR_EEPROM_PROG | 在 EEPROM 编程期间使用 REF 引脚 | |
system_info.c | device_address | FlexWire 总线上的器件地址列表 |
FlexWire.c | rcvCrcError | 如果接收到的 CRC 有错误则报告 |
在 system_info.h 文件中,FlexWire 总线上的器件数由宏 DEVICE_CNT 定义。示例代码仅支持 1 条 FlexWire 总线。
// Total devices on FlexWire bus #define
DEVICE_CNT 1
这些器件的实际地址在 system_info.c 文件中指定。地址序列决定了 FlexWire 非广播写和读命令的顺序。因此,对于不同的器件地址序列,动画模式下的 LED 图形看起来会有所不同。
const uint16_t
device_address[DEVICE_CNT] = {DEVICE_ADDR__1};
system_info.h 文件还定义了其他系统参数。
//
Define if CAN or UART is used #define CAN_USED FALSE // When non-broadcast is transmitted,
does the CRC need to be checked #define ALWAYS_CHECK_CRC FALSE
宏 CAN_USED 定义是否为 FlexWire 总线使用 UART 或 UART 转 CAN。这会影响在 MCU UART-RX 引脚上接收到的总字节数。
宏 ALWAYS_CHECK_CRC 定义对于接收到的反馈,是否每个非广播写入命令都需要检查 CRC。当检查 CRC 后发现其不正确时,全局变量 rcvCrcError 设置为 TRUE。在所有其他情况下,该变量设置为 FALSE。变量 rcvCrcError 在文件 FlexWire.c 中定义。
// When an error in CRC of the received data is observed, set this to TRUE unsigned
int rcvCrcError;
示例代码提供了一个 API 来检测哪些器件存在开路、短路或单 LED 短路等故障。TPS929xxx_APIs.h 文件中定义了该 API 的原型。
void LED_Update_Chip_Status(unsigned int dev_addr_x);
该 API 会更新 system_info.h 中定义的变量 chip_status。对于器件 TPS929160-Q1 和 TPS929240-Q1,还有一个称为 VBAT 的额外电源引脚。因此,对于这些器件,该变量包括为此引脚测得的电压结果。此外,这些器件还包括一个称为电源欠压的额外故障类型。因此,这些器件包含标志 SUPUV。
struct chipStatus {
// Indicates open, short, and/or single-LED-short fault
uint16_t OUT_flag;
uint16_t SHORT_channels[MAX_CHANNEL_CNT];
uint16_t OPEN_channels[MAX_CHANNEL_CNT];
uint16_t SLS_channels[MAX_CHANNEL_CNT]; // Single-LED-short
uint16_t EEPCRC; // EEPROM CRC fault
uint16_t TSD; // Thermal Shutdown
uint16_t PRETSD; // Pre-thermal shutdown warning
uint16_t REF; // REF-pin fault
uint16_t LOWSUP; // Low supply
uint16_t POR; // Power-on-reset
#ifndef TPS92912X
uint16_t SUPUV; // Supply undervoltage
uint16_t VBAT_mV; // *1 mV
#endif
uint16_t VSUPPLY_mV; // *1 mV
uint16_t VLDO_mV; // *1 mV
uint16_t TEMPSNS_10mC; // *10 mC
uint16_t VREF_100uV; // *100 uV
uint16_t IREF_10nA; // *10 nA
};
// For diagnostics
extern struct chipStatus chip_status[];
在代码调试期间,可以按照“观察变量、表达式和寄存器”中的步骤在表达式视图中观察变量 chip_status。图 4-2 中描述了一个没有任何错误的示例。变量 chip_status 的第一个索引是 FlexWire 总线上 LED 驱动器的地址。总共有 16 个不同的地址。因此,索引的范围为 0 至 15。
图 4-3 中显示了一个带有短接的示例。TPS929240-Q1 具有地址 0x1 并设置了 OUT_Flag 标志。当数组 SHORT_channels 被扩展时,引脚 OUT2 上发生短路。
图 4-4 中展示了 TPS929240-Q1 中出现低电源电压警告 (V(SUPPLY) < V(ADCLOWSUPTH)) 时的示例。已为地址为 0x1 的器件设置了标志 LOWSUP。此外,对于该警告,电源电压由 ADC 测量并在诊断中报告。在本例中,测量得到的结果为 4804mV。
示例代码包括对 EEPROM 进行编程的功能。此功能由 system_info.h 文件中定义的宏启用。
// When set to 1, the EEPROM programming routine is executed instead of normal program
#define PROG_EEPROM (FALSE)
// When set to 1, program the EEPROM to the default value
#define PROG_DEFAULT_EEPROM (FALSE)
// Use external device address settings for EEPROM programming
#define USE_REF_PIN_FOR_EEPROM_PROG (FALSE)
当宏 PROG_EEPROM 被定义为 TRUE 时,EEPROM 编程模式被启用。示例代码可以对指定 LED 驱动器 IC 或自定义设置的默认 EEPROM 值进行编程。当 PROG_DEFAULT_EEPROM 宏定义为 FALSE 时,会对自定义设置进行编程。此设置在 eeprom_data.h 和 eeprom_data.c 文件中指定。这些文件可由节 3中提到的 EEPROM 配置工具自动生成。
LED 驱动器 IC 支持两种针对单独芯片选择的方法,即通过拉高 REF 引脚或通过使用地址引脚配置器件地址来实现。当 USE_REF_PIN_FOR_EEPROM_PROG 宏被定义为 TRUE 时,REF 引脚在编程期间被拉高。当 USE_REF_PIN_FOR_EEPROM_PROG 被定义为 FALSE 时,使用当前器件地址。TI 建议使用当前器件地址。
当代码进入 EEPROM 编程例程时,M0 会使 LP-MSPM0G3507 上的 LED2 (PB27) 亮起。当宏 USE_REF_PIN_FOR_EEPROM_PROG 定义为 TRUE 时,REF 引脚会在 LED2 亮起后被上拉。表 4-2中列出了为每个 EVM 上拉 REF 引脚所需的跳线。
LED2 亮起后,需按下 LP-MSPM0G3507 上的按钮 S1 以开始编程。当使用当前器件地址时,LED2 会在编程完毕后熄灭。
当使用 REF 引脚时,LED2 会在编程完毕后开始闪烁。此时,移除 REF 引脚上的上拉电阻,然后需要按下 LP-MSPM0G3507 上的按钮 S2。然后,LED2 熄灭。
EVM | 跳线 |
---|---|
TPS929120EVM | J2 位置 2 和 3 (+5V) |
TPS929160EVM | J52 位置 2 和 3 (VLDO) |
TPS929240EVM | J10 位置 2 和 3 (VLDO) |
汽车照明广泛用于汽车前照灯、尾灯和环境照明。随着汽车照明领域对动画的需求不断增加,必须对 LED 进行单独控制。因此,需要更出色的 MCU 和设计来满足新的要求。MSPM0G 系列搭配 TPS929xxxEVM,可实现独立 LED 控制设计。
本应用手册介绍了 LP-MSPM0G3507 和 TPS929xxxEVM 之间的硬件连接以及如何从零开始设置测试和调试环境,包括 IDE 和 SDK 安装以及代码导入步骤。
此外,本应用手册还提供了软件图、软件系统参数设置和演示代码的基本功能,并展示了如何通过简单的步骤测试芯片错误状态并提供结果用于比较。
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 德州仪器半导体技术(上海)有限公司