Table of Contents
早期样片迁移指南
引言
重要提示:本指南仅适用于已收到 MSPM0 的 早期样片并希望将其现有应用程序迁移至量产样片的 客户。
本文档旨在强调以下几点:
- 支持早期样片的 MSPM0 SDK 版本与支持 量产样片的 MSPM0 SDK 1.00.xx.xx 版本之间的可能不互相兼容。
- 使用同一个系统,在早期样片和量产样片上 进行开发时的注意事项。
强烈建议使用早期样片的客户将其应用程序迁移至 支持量产样片的 MSPM0 SDK 版本。MSPM0 SDK 对早期 样片的支持将不会长期持续。
下面的部分介绍了支持量产样片的推荐工具版本, 并针对使用 DriverLib 和 SysConfig 配置文件的应用程序 提供了迁移指南。
该指南假定用户在 Windows 环境中工作。不过, 指南中讨论的概念也适用于 Linux 和 MacOS 环境。
e2e.ti.com 将会在线发布最新信息。
我当前使用的 MSPM0 SDK 支持哪些样片?
- 如果您所用的 MSPM0 SDK 的版本号中包含 *_eng* 后缀,则该 SDK 支持 早期样片。
- 如果您所用的 MSPM0 SDK 的版本号中不包含 *_eng* 后缀,则该 SDK 支持量产样片。
如何确定 MSPM0 样片版本
如果是以下情况,则表示您拥有的是量产样片:
- 您直接从 ti.com 订购样片,且不需要联系 TI 销售办事处。
- 您的器件按如下方式进行标记:MSPM0Lxxx、MSPM0Gxxx、M0Lxxx、M0Gxxx、Lxxx、Gxxx。
- 您的 LaunchPad 标记为 Rev A
- DEVICEID 寄存器中的 VERSION 位字段 (31-28) 为 0x1(请参阅技术参考手册)
如果是以下情况,则表示您拥有的是早期样片:
- 您未直接从 ti.com 订购样片,而是通过 TI 销售办事处订购样片。
- 您的器件按如下方式进行标记:XM0L 或 XM0G。
- 您的 LaunchPad 标记为 Rev 1.0
- DEVICEID 寄存器中的 VERSION 位字段 (31-28) 为 0x0(请参阅技术参考手册)
重要文档
- MSPM0L130x、MSPM0L134x、MSPM0L110x 特定
- MSPM0G 和 MSPM0L 系列:与早期样片之间的功能差异。请向 TI 销售办事处申请访问此文档。
- MSPM0Lx 技术参考手册
- MSPM0L134x、MSPM0L130x 数据表
- MSPM0L110x 数据表
- MSPM0G350x、MSPM0G310x、MSPM0G150x、MSPM0G110x 特定
- MSPM0G 和 MSPM0L 系列:与早期样片之间的功能差异。请向 TI 销售办事处申请访问此文档。
- MSPM0Gx 技术参考手册
- MSPM0G350x 数据表
- MSPM0G310x 数据表
- MSPM0G150x 数据表
- MSPM0G110x 数据表
工具注意事项
下表列出了可与量产样片一同使用的 MSPM0 量产 兼容配套工具的版本
产品 | 版本 |
---|---|
MSPM0 SDK | 1.00 或更高版本 |
SysConfig | 1.19.x 或更高版本 |
CCS Eclipse | 12.6.0 或更高版本 |
CCS Theia | 1.2.0 或更高版本 |
IAR Embedded workbench for ARM | 9.50.1 或更高版本 |
Keil MDK-Arm with uVision | 5.38a 或更高版本 |
Code Composer Studio (CCS)
以下 Code Composer Studio 版本支持 MSPM0 器件的量产 样片:
- Code Composer Studio 12.6.0 或更高版本
- Code Composer Studio Theia 1.2.0 或更高版本
重要提示:对于计划同时使用早期样片和量产样片的客户, 强烈建议在与默认安装路径不同的 安装路径下安装专用 CCS。例如,量产 样片的 CCS 可以安装在“C:\ti\production”。
重要提示:部分闪存加载程序设置在早期样片和量产样片的 CCS 支持包中不同。在将早期样片中的示例导入 具有较新支持包的 CCS 中时,建议检查并确认如下所示的 闪存擦除设置:
IAR Embedded workbench for ARM
IAR Embedded workbench for ARM 9.50.1 或更高版本支持 MSPM0 器件的量产样片。
重要提示:对于计划同时使用早期样片和量产样片的客户, 强烈建议在与默认安装路径不同的 安装路径下安装专用 IAR。例如,量产 样片的 IAR 可以安装在“C:\Program Files\IAR Systems\production”。 有关在 IAR 中选择 SysConfig 的说明,请参阅 SysConfig 指南中的在 IAR 中启用 SysConfig。
Keil MDK-Arm with uVision
对于量产样片开发,仍建议使用带有 ARM Clang 编译器 v6.16 或更高版本的 Keil MDK-Arm with uVision v5.38a 或更高版本,并且用户需要安装 最新的 TexasInstruments.MSPM0L_DFP 包或 TexasInstruments.MSPM0G_DFP 包, 如 MSPM0 SDK KEIL 快速入门指南 中所述
重要提示:对于计划同时使用早期样片和量产样片的客户, 客户,强烈建议在与默认安装路径不同的 安装路径下安装专用 Keil。例如, 量产样片的 Keil 可以安装在“C:\Keil_v5\production”。 有关在 Keil 中选择 SysConfig 版本的说明,请参阅 SysConfig 指南中的在 Keil 中启用 SysConfig。
DriverLib 变更
本节总结了已在 Driverlib 中更新或移除的 API、 定义和枚举。客户可以参考本节来确定在迁移期间 解决编译错误所需的适当操作。
以下每个小节的名称都引用了位于 或
Driverlib 部分使用了以下方案:
- 红色文本表示在 MSPM0 SDK 1.00.00.xx 中 不再可用的 Driverlib API/枚举/定义早期样片
- 粗体文本用于标识 MSPM0 SDK 1.00.00.xx API 中已重命名的 输入参数或新的输入参数
dl_sysctl_mspm0g
定义
定义组 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_SYSCTL_INTERRUPT | DL_SYSCTL_INTERRUPT_BOR_LEVEL | DL_SYSCTL_INTERRUPT_SRAM_SEC | PMCU_ENH_02 |
DL_SYSCTL_INTERRUPT_FLASH_DED | |||
DL_SYSCTL_INTERRUPT_LFCLK_FAIL |
枚举
枚举名称 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_SYSCTL_IIDX | DL_SYSCTL_IIDX_BOR_LEVEL | DL_SYSCTL_IIDX_SRAM_SEC | PMCU_ENH_02 |
DL_SYSCTL_IIDX_FLASH_DED | |||
DL_SYSCTL_IIDX_LFCLK_FAIL |
API
已移除
- DL_SYSCTL_setSRAMWriteProtection
- 请参阅以下新 API:
- DL_SYSCTL_setSRAMBoundaryAddress
- 请参阅以下新 API:
- DL_SYSCTL_getSRAMWriteProtection
- 请参阅以下新 API:
- DL_SYSCTL_getSRAMBoundaryAddress
- 请参阅以下新 API:
- DL_SYSCTL_useLowerFlashBank
- 当前 MSPM0G 量产样片器件不支持多个闪存存储体。
- DL_SYSCTL_useUpperFlashBank
- 当前 MSPM0G 量产样片器件不支持多个闪存存储体。
- DL_SYSCTL_setUpperFlashBank
- 当前 MSPM0G 量产样片器件不支持多个闪存存储体。
已更新
- DL_SYSCTL_setLFCLKSourceEXLF
- API 原型从 DL_SYSCTL_setLFCLKSourceEXLF(bool enableMonitor) 更改为 DL_SYSCTL_setLFCLKSourceEXLF(void)
dl_sysctl_mspm0l
定义
定义组 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_SYSCTL_INTERRUPT | DL_SYSCTL_INTERRUPT_BOR_LEVEL | PMCU_ENH_02 |
注:此中断是 M0L 唯一的“电源中断”,因此删除了与此相关的整个小节。 您不能再使用 powerSysInterrupts 或 pmcuInterruptPriority 对 MSPM0L 器件进行中断管理
枚举
枚举名称 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_SYSCTL_IIDX | DL_SYSCTL_IIDX_BOR_LEVEL | PMCU_ENH_02 |
API
已移除
- DL_SYSCTL_setSRAMWriteProtection
- 请参阅以下新 API:
- DL_SYSCTL_setSRAMBoundaryAddress
- 请参阅以下新 API:
- DL_SYSCTL_getSRAMWriteProtection
- 请参阅以下新 API:
- DL_SYSCTL_getSRAMBoundaryAddress
- 请参阅以下新 API:
- DL_SYSCTL_useLowerFlashBank
- 当前 MSPM0L 量产样片器件不支持多个闪存存储体。
dl_crc
枚举
- 因为出现了 CRC_ENH_01 问题,枚举 DL_CRC_ENDIANESS 已重命名为 DL_CRC_INPUT_ENDIANESS
API
已移除
- DL_CRC_saveConfiguration
- 因为早期样片器件错误修复 CRC_01 而移除
- DL_CRC_restoreConfiguration
- 因为早期样片器件错误修复 CRC_01 而移除
已更新
- DL_CRC_init
- 更新了 API 以支持“输出字节交换”配置
- SDK API 的量产版本有新的输入参数 DL_CRC_init(CRC_Regs *crc、DL_CRC_POLYNOMIAL poly、 DL_CRC_BIT bitOrd、DL_CRC_INPUT_ENDIANESS inEndianness、 DL_CRC_OUTPUT_BYTESWAP outByteSwap)
- 更新了 API 以支持“输出字节交换”配置
dl_dma
枚举
枚举名称 | 从 | 更改为 | 更新与以下项有关 |
---|---|---|---|
DL_DMA_TRANSFER_MODE | DL_DMA_REPEAT_SINGLE_TRANSFER_MODE | DL_DMA_FULL_CH_REPEAT_SINGLE_TRANSFER_MODE | DMA_ENH_01 和 DMA_ENH_02 |
DL_DMA_REPEAT_BLOCK_TRANSFER_MODE | DL_DMA_FULL_CH_REPEAT_BLOCK_TRANSFER_MODE | ||
DL_DMA_EXTENDED_MODE | DL_DMA_FILL_MODE | DL_DMA_FULL_CH_FILL_MODE | |
DL_DMA_TABLE_MODE | DL_DMA_FULL_CH_TABLE_MODE |
结构
添加了以下结构成员:
结构名称 | 已添加 | 更新与以下项有关 |
---|---|---|
DL_DMA_Config | DL_DMA_TRIGGER_TYPE triggerType | 就 DMA 是选择内部信道还是外部信道作为 DMA 触发器进行配置。 DMA_ENH_06 |
API
已更新
- DL_DMA_setTrigger
- 更新了 API 以支持 DMA 通道配置的简单级联 (DMA_ENH_06)。
- SDK API 量产版本有新的输入参数 DL_DMA_setTrigger(DMA_Regs *dma、uint8_t channelNum、 uint8_t trigger、DL_DMA_TRIGGER_TYPE triggerType)
- 更新了 API 以支持 DMA 通道配置的简单级联 (DMA_ENH_06)。
dl_i2c
枚举
枚举名称 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_I2C_IIDX | DL_I2C_IIDX_CONTROLLER_CLOCK_TIMEOUT | DL_I2C_IIDX_TIMEOUT_A | I2C_ENH_05 |
DL_I2C_IIDX_TIMEOUT_B |
定义
定义组 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_I2C_INTERRUPT | DL_I2C_INTERRUPT_CONTROLLER_CLOCK_TIMEOUT | DL_I2C_INTERRUPT_TIMEOUT_A | I2C_ENH_05 |
DL_I2C_INTERRUPT_TIMEOUT_B |
API
已移除
- DL_I2C_getClockLowTimeoutCounterPreload
- 请参阅以下新 API:
- DL_I2C_getTimeoutACount
- DL_I2C_getTimeoutBCount
- 请参阅以下新 API:
- DL_I2C_setClockLowTimeoutCounterPreload
- 请参阅以下新 API:
- DL_I2C_setTimeoutACount
- DL_I2C_setTimeoutBCount
- 请参阅以下新 API:
- DL_I2C_getClockLowTimeoutCounter
- 请参阅以下新 API:
- DL_I2C_getCurrentTimeoutACounter
- DL_I2C_getCurrentTimeoutBCounter
- 请参阅以下新 API:
dl_mathacl
枚举名称 | 已移除 | 建议 |
---|---|---|
DL_MATHACL_OP_TYPE | DL_MATHACL_OP_TYPE_ARCTAN | 使用 DL_MATHACL_OP_TYPE_ARCTAN2 |
DL_MATHACL_OP_TYPE_MPY | 使用 DL_MATHACL_OP_TYPE_MPY32 |
dl_opa
API
已移除
- DL_OPA_isSoftwareBusy
- 位字段 BUSY 已从 OPA.STAT 寄存器中移除
dl_rtc
API
已更新
- DL_RTC_setTemperatureCompensation
- 函数原型已从 DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION offsetDirection, uint32_t offsetValue) 更改为 void DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION_SIGN offsetDirection, uint32_t offsetValue)
- DL_RTC_TEMP_CALIBRATION_SIGN_DOWN 已重命名为 DL_RTC_TEMP_CALIBRATION_DOWN1PPM
- DL_RTC_TEMP_CALIBRATION_SIGN_UP 已重命名为 DL_RTC_TEMP_CALIBRATION_UP1PPM
- 函数原型已从 DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION offsetDirection, uint32_t offsetValue) 更改为 void DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION_SIGN offsetDirection, uint32_t offsetValue)
dl_spi
结构
添加了以下结构成员:
结构名称 | 已添加 | 用途 |
---|---|---|
DL_SPI_Config | DL_SPI_DATA_SIZE dataSize | 指定数据传输的大小 |
DL_SPI_CHIP_SELECT chipSelectPin | 指定用于芯片选择的引脚。在使用 Motorola 格式的控制器或外设 模式中使用。 |
枚举
枚举名称 | 已移除 | 已添加 | 更新与以下项有关 |
---|---|---|---|
DL_SPI_PARITY | DL_SPI_PARITY_BIT0_EVEN | DL_SPI_PARITY_EVEN | |
DL_SPI_PARITY_BIT0_ODD | DL_SPI_PARITY_ODD | ||
DL_SPI_PARITY_BIT1_EVEN | |||
DL_SPI_PARITY_BIT1_ODD |
API
已移除
- DL_SPI_setControllerChipSelect
- 请参阅以下新 API:
- DL_SPI_setChipSelect
- 请参阅以下新 API:
- DL_SPI_getControllerChipSelect
- 请参阅以下新 API:
- DL_SPI_getChipSelect
- 请参阅以下新 API:
已更新
- DL_SPI_setDataSize
- 函数原型已从 DL_SPI_setDataSize(SPI_Regs *spi, uint32_t dataSize) 更改为 DL_SPI_setDataSize( SPI_Regs *spi, DL_SPI_DATA_SIZE dataSize)
- DL_SPI_getDataSize
- 函数原型已从 uint32_t DL_SPI_getDataSize(SPI_Regs *spi) 更改为 DL_SPI_DATA_SIZE DL_SPI_getDataSize(SPI_Regs *spi)
dl_timera
API
已移除
- DL_TimerA_configPipelineUpdate
- 请参阅以下新 API:
- DL_TimerA_setCaptCompUpdateMethod
- 请参阅以下新 API:
- DL_TimerA_getPipelineUpdateMode
- 请参阅以下新 API:
- DL_TimerA_getCaptCompUpdateMethod
- 请参阅以下新 API:
- DL_TimerA_setCaptureCompareValuePipeline
- PCC 寄存器已从量产样片中移除。捕获/比较更新模式 现在通过 DL_TimerA_setCaptCompUpdateMethod 和 DL_TimerA_setLoadValue 来配置
dl_timerg
定义
已更新
- DL_TIMERG_INTERRUPT_DIR_CHANGE_EVENT 已重命名为 DL_TIMERG_INTERRUPT_DC_EVENT
API
已更新
- DL_Timer_setCaptureCompareAction
- actionsMask 参数不再接受 DL_TIMER_CC_DBEXACT 或 DL_TIMER_CC_DBENACT 屏蔽,原因是已经 移除了 CCACT_01 寄存器中的 DBEXACT 和 DBENACT 位字段。
已移除
- DL_TimerG_configPipelineUpdate
- 请参阅以下新 API:
- DL_TimerG_setCaptCompUpdateMethod
- 请参阅以下新 API:
- DL_TimerG_getPipelineUpdateMode
- 请参阅以下新 API:
- DL_TimerG_getCaptCompUpdateMethod
- 请参阅以下新 API:
- DL_TimerA_setCaptureCompareValuePipeline
- PCC 寄存器已从量产样片中移除。捕获/比较更新模式 现在通过 DL_TimerG_setCaptCompUpdateMethod 和 DL_TimerG_setLoadValue 来配置
dl_timerh
已移除所有 DL_TimerH API。原因是 已移除器件中的所有 TimerH 实例,并且一些 TIMG 实例 已更新为 32 位计时器且不支持预分频。有关此器件级更改的额外更新,请参阅“MSPM0G 和 MSPM0L 系列: 与早期样片之间的功能差异”文档。
SysConfig 代码生成/GUI 更改
本节显示 SysConfig 的早期样片和量产样片版本之间的差异,因为差异与 GUI 本身和生成的代码有关。 每行显示一个代码更改,该更改反映了对 SDK 的更新或对 SysConfig 的更改。
迁移指南中的 DriverLib 部分说明了每节所做的更改,并在该节的标题中链接了相关内容以供参考。
系统模块
DMA
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
|
SYSCTL
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
中断已移除 | |
中断已移除 |
通信
I2C
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
|
|
|
SPI
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
数据完整性
CRC
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
CRC Init 更改 |
CRC Init 更改 |
<Application_File>.syscfg 比较
本节重点介绍了早期样片和量产样片 .syscfg 文件之间的差异,以及如何修改旧的 .syscfg 文件,使其与量产样片兼容。 每个工程都包含一个 .syscfg 文件,该文件包含通过 GUI 设定的所有 SysConfig 配置设置,并且迁移到最新的 SDK 和 SysConfig 会导致某些参数和函数发生更改。 每行都反映了 SysConfig GUI/SDK 中导致参数发生更改的改动。 用户可以通过文本编辑器直接修改此文件,以将配置设置迁移到最新版本,而不用通过 GUI 进行这些更改。
系统模块
DMA
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
SysCtl
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
G 器件定义 |
设置已删除 |
L 器件定义 |
设置已删除 |
通信
I2C
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
数据完整性
CRC
早期 SysConfig 设置 | 量产 SysConfig 设置 |
---|---|
不适用 | 可选。如果不需要,可直接删除这一行 |