- 2024-03-13
-
发表了主题帖:
[MSPM0L130x]可配置的内部 ADC 电压基准
本帖最后由 hsh007 于 2024-3-15 09:00 编辑
# 概述
根据MSPM1L130X的规格书,ADC支持1.4V和2.5V的内部参考电压。
我们今天来实际测试一下。
# 内部电压基准2.5V
## 硬件配置
### 需要如下硬件
- TI的MSPM0L1306 LaunchPad
- 直流电源
### 根据MSPM0L1306 LaunchPad的原理图如下部分,如果用到PA25,那么需要将J4断开。
## SYSCFG配置
### 配置SWD
### 选用时钟SYSOSC,采样时钟4MHz,转换模式是单次,软件触发转换
### 板载芯片的具体型号是MSPM0L1306SRHB,这里ADC对应的PIN脚是PA25
### 参考电压VREF设置为内部2.5V
## 用户代码adc12_single_conversion_vref_internal.c
在一个while循环中采集ADC12_0的值,当值大于0x7ff(即电压大于0.5*2.5V=1.25V)的时候,点亮LED1,否则熄灭LED1
```c
while (1) {
DL_ADC12_startConversion(ADC12_0_INST);
while (false == gCheckADC) {
__WFE();
}
adcResult = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
if (adcResult > 0x7ff) {
DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
} else {
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
}
gCheckADC = false;
DL_ADC12_enableConversions(ADC12_0_INST);
}
```
## 在PA25接上2V电
LED1亮起,如下图:
watch看到的值如下:
## 在PA25接上1V电
LED1熄灭,如下图:
watch看到的值如下:
# 内部电压基准1.4V
## SYSCFG配置
### 基于上面测试修改VREF为1.4
### 用户代码adc12_single_conversion_vref_internal.c
基于上面的代码,不用修改
当值大于0x7ff(即电压大于0.5*1.4V=0.7V)的时候,点亮LED1,否则熄灭LED1
## 在PA25接上1V电
LED1亮起,watch看到的值如下:
## 在PA25接上0.5V电
LED1熄灭,watch看到的值如下::
- 2024-03-12
-
回复了主题帖:
MSPM0L130x工作模式分析和测试
Jacktang 发表于 2024-3-10 15:02
LP-MSPM0L1306 LaunchPad 开发套件的图片没上传上来
谢谢提醒,已经换成了开发套件的图片
- 2024-03-09
-
发表了主题帖:
MSPM0L130x工作模式分析和测试
本帖最后由 hsh007 于 2024-3-12 07:36 编辑
# 1 目录
1. MSPM0L130x的电源域
2. MSPM0L130x的工作模式
3. 测试环境准备
4. 测试和分析
5. 参考
# 2 电源域
两个核心电源域:PD1 和 PD0。
PD1在RUN 和 SLEEP 模式是开的,但在所有其他模式下禁用。PD0 始终在 RUN、SLEEP、STOP 和 STANDBY模式开的。PD1 和 PD0 在 SHUTDOWN 模式下均被禁用。
- PD1 域包括 CPU 子系统、SRAM 存储器、PD1 外设和 PD1 外设总线,从 MCLK(包括 DMA)运行,最大频率为 32 MHz。 PD1 在 STOP 和 STANDBY 模式下禁用;CPU 寄存器、SRAM 和外设 MMR 配置寄存器都保留,以便从STOP 或 STANDBY 模式退出的时候可以立即恢复操作。
- PD0 域包括 PD0 外设和 PD0 总线段,后者从 ULPCLK 运行,最大RUN 和 SLEEP 模式下的频率为 32 MHz,STOP 模式下的频率为 4 MHz,待机模式下的频率为 32 kHz。PD0 域在除 SHUTDOWN 之外的所有模式下均通电,可以将其视为“始终开启”域。
# 3 工作模式
提供五种工作模式(电源模式),按功率递减顺序为:RUN、SLEEP、STOP、STANDBY 和 SHUTDOWN。下图显示了模式之间的交互:
![](Writing/MSPM0评测/attachments/MSPM0L130x工作模式分析和测试/IMG-MSPM0L130x工作模式分析和测试-20240309104557164.png)
## 3.1 RUN模式
在 RUN 模式下,CPU 处于活动状态,可以执行代码,并且可以启用任何外设。
有三个 RUN 模式策略选项:RUN0、RUN1 和 RUN2。
- RUN0:MCLK 和 CPUCLK 从快速时钟源 (SYSOSC) 运行。
- RUN1:MCLK 和 CPUCLK 从 LFCLK(32 kHz)运行以降低有功功率,但留下 SYSOSC支持为模拟模块提供服务,例如 ADC、OPA 或 COMP(在 HS 模式下)。
- RUN2:MCLK 和 CPUCLK 从 LFCLK(32 kHz)运行,SYSOSC 完全禁用省电。这是 CPU 运行时的最低功耗状态。
## 3.2 SLEEP模式
在 SLEEP 模式下,CPU 被禁用(时钟门控);除此之外,设备配置与 RUN 相同。
有三个 SLEEP 模式策略选项:SLEEP0、SLEEP1 和 SLEEP2。确定 SLEEPx 策略进入 SLEEP 模式时按当前 RUNx 策略执行。
- SLEEP0:与 RUN0 相同,但 CPU 已禁用。
- SLEEP1:与 RUN1 相同,但 CPU 已禁用。
- SLEEP2:与 RUN2 相同,但 CPU 已禁用。
## 3.3 STOP模式
在 STOP 模式下,CPU、SRAM 和 PD1 外设被禁用并处于保留状态(如果适用)。PD0外设的最大 ULPCLK 频率为 4 MHz。 SYSOSC 可以在更高的频率下运行,以支持 ADC、OPA 或 HS COMP 操作,但 ULPCLK 将自动限制为 4 MHz SYSOSC由 SYSCTL 输出。
可以触发 DMA。DMA 触发器唤醒 PD1 电源域以产生 SRAM 和 DMA可用于处理 DMA 传输,并且 DMA 传输在当前的 MCLK 和 ULPCLK 上处理率。传输完成后,SRAM将返回到保留状态,并自动禁用PD1。
STOP模式是最低功耗模式,支持ADC、OPA和高速COMP操作。
STOP 模式有三个策略选项:STOP0、STOP1 和 STOP2。
- STOP0:进入 STOP 模式时,SYSOSC 以当前频率运行(32 MHz、24 MHz、16 MHz 或 4 MHz)。ULPCLK 始终由硬件自动限制为 4 MHz,但 SYSOSC 是不受干扰,以支持模拟外设(如ADC、OPA或COMP)的一致操作。
**注意**:如果 STOP0 是从 RUN1 输入的(启用了 SYSOSC,但 MCLK 来自 LFCLK),则 SYSOSC
与 RUN1 一样保持使能状态,ULPCLK 与 RUN1 一样保持在 32 kHz。
**注意**:如果从 RUN2 输入 STOP0(SYSOSC 已禁用,MCLK 源自 LFCLK),
SYSOSC 在 RUN2 中保持禁用状态,ULPCLK 在 RUN2 中保持 32 kHz。
- STOP1:SYSOSC 从当前频率换档至 4 MHz,以实现最低功耗在 STOP 模式下,SYSOSC 正在运行。SYSOSC 和 ULPCLK 均以 4 MHz 运行。
- STOP2:SYSOSC 被禁用,ULPCLK 以 32 kHz 的频率来自 LFCLK。这是最低的STOP 模式下的电源状态。
## 3.4 STANDBY模式
在STANDBY模式下,CPU、SRAM 和 PD1 外设被禁用并处于保留状态。PD0 外设,带除ADC和OPA外,ULPCLK的最大频率为32 kHz。SYSOSC是禁用。
可以触发 DMA。DMA 触发器唤醒 PD1 电源域以产生 SRAM 和 DMA。可用于处理 DMA 传输,并且 DMA 传输在当前的 MCLK 和 ULPCLK 上处理速率 (32 kHz)。传输完成后,SRAM将返回到保留状态,并自动禁用PD1。
在待机模式下不支持 ADC、OPA 和高速 COMP 操作。
STANDBY 模式有 2 个策略选项:STANDBY0 和 STANDBY1。
- STANDBY0:所有 PD0 外设都接收 ULPCLK 和 LFCLK。
- STANDBY1:只有 TIMG0 和 TIMG1 接收 ULPCLK 或 LFCLK。TIMG0 或 TIMG1 中断或 ADC触发器 STANDBY1 始终触发异步快速时钟请求以唤醒系统。其他PD0外设(如 UART、I2C、GPIO 和 COMP)也可以在发生外部事件时唤醒系统通过异步快速时钟请求,但它们不会主动STANDBY1时钟。
## 3.5 SHUTDOWN模式
在 SHUTDOWN 模式下,没有可用的时钟。核心稳压器被完全禁用,所有SRAM和寄存器内容将丢失,但 SYSCTL 中的 4 个字节的通用内存除外,该内存可以用于存储状态信息。BOR 和带隙电路被禁用。
设备可以通过支持唤醒功能的 IO、调试连接或 NRST 进行唤醒。
SHUTDOWN 模式具有所有工作模式中最低的电流消耗。退出 SHUTDOWN 模式触发 BOR。
# 4 测试环境准备
## 4.1 测试硬件
### 4.1.1 TI的MSPM0L1306 LaunchPad
是适用于MSPM0L1306 微控制器 (MCU) 的评估模块。该套件包含在 MSPM0L1xx 微控制器平台上开始开发所需要的全部资源,包括用于编程、调试和能量测量的板载调试探针。该板还具有用于快速集成简单用户界面、板载热敏电阻、光传感器和 RGB LED 的板载按钮和 LED。
下图显示了 LP-MSPM0L1306 LaunchPad 开发套件。
### 4.1.2 ST的X-NUCLEO-LPOM01A
板子如下图。用于给MSPM0L1306提供电源,并测试耗电。
可以通过USB接口供电,也可以外置电源供电。
可以单独使用,也可以配合电脑上的STM32CubeMonitor-Power软件工具使用。
![793986](/data/attachment/forum/202403/12/072131iibqhizdxdddmkb2.jpg?rand=6609.5444025535735)
## 4.2 测试软件
### 4.2.1 [Code Composer Studio](https://www.ti.com.cn/tool/cn/CCSTUDIO)
### 4.2.2 例程:timx_timer_mode_periodic_sleep_LP_MSPM0L1306_nortos_ticlang
## 4.3 测试环境准备
### 4.3.1 硬件准备
#### 4.3.1.1 TI的MSPM0L1306 LaunchPad
参考User Guid(MSPM0L1306 LaunchPad Development Kit),去掉该去掉的跳线,如下图:
![793437](/data/attachment/forum/202403/09/155450bcwyu0u59mcndrcf.jpg.thumb.jpg?rand=8213.87724923905)
当要通过XDS110烧写固件的时候,连接如下下图:
![793438](/data/attachment/forum/202403/09/155518rjwc267dc5a2l2l2.png?rand=5529.156703189462)
#### 4.3.1.2 TI的MSPM0L1306 LaunchPad和ST的X-NUCLEO-LPOM01A的连接
烧写完固件后,将两块板子如下连接。(用于烧写的跳线要断开)
![793439](/data/attachment/forum/202403/09/155537faksnja3nuukcguj.jpg.thumb.jpg?rand=4246.3909845823)
# 5 测试和分析
voltage: 3.3,Temperature: 22C°
## 5.1 测试
图片太多,后面几个的就不贴出来了。
### 5.1.1 STANDBY0
不设置Configure Unused Pins,添加TIMER_0
测试值如下:1.214uA
### 5.1.2 STANDBY1
基于如上修改为:
测试值如下:894.7nA
### 5.1.3 RUN0
```
int main(void)
{
SYSCFG_DL_init();
while (1) {
// __WFI();
}
}
```
测量值:1.344mA
因为图片过多,这里和下面就不贴出来了。
### 5.1.4 SLEEP0
![793441](/data/attachment/forum/202403/09/155640rjdkd6j9z981655d.png.thumb.jpg?rand=6414.901602882823)
测量值:941.7uA
### 5.1.5 RUN1
```
int main(void)
{
SYSCFG_DL_init();
DL_SYSCTL_setPowerPolicyRUN1SLEEP1();
while (1) {
// __WFI();
}
}
```
测量值:525.2uA
### 5.1.6 SLEEP1
```
int main(void)
{
SYSCFG_DL_init();
DL_SYSCTL_setPowerPolicyRUN1SLEEP1();
while (1) {
__WFI();
}
}
```
测量值:519.9uA
### 5.1.7 RUN2
```
int main(void)
{
SYSCFG_DL_init();
DL_SYSCTL_setPowerPolicyRUN2SLEEP2();
while (1) {
// __WFI();
}
}
```
测量值:258.0uA
### 5.1.8 SLEEP2
```
int main(void)
{
SYSCFG_DL_init();
DL_SYSCTL_setPowerPolicyRUN2SLEEP2();
while (1) {
__WFI();
}
}
```
测量值:255.4uA
### 5.1.9 STOP0
测量值:323.2uA
### 5.1.10 STOP1
测量值:156.6uA
### 5.1.11 STOP2
测量值:44.85uA
### 5.1.12 SHUTDOWN
```
int main(void)
{
SYSCFG_DL_init();
DL_SYSCTL_setPowerPolicySHUTDOWN();
while (1) {
__WFI();
}
}
```
测量值:64.3nA
## 5.2 分析
汇总上面的测试结果如下:
| Mode | Current |
| -------- | ------- |
| RUN0 | 1.344mA |
| RUN1 | 525.2uA |
| RUN2 | 258.0uA |
| SLEEP0 | 941.7uA |
| SLEEP1 | 519.9uA |
| SLEEP2 | 255.4uA |
| STOP0 | 323.2uA |
| STOP1 | 156.6uA |
| STOP2 | 44.85uA |
| STANDBY0 | 1.214uA |
| STANDBY1 | 894.7nA |
| SHUTDOWN | 64.3nA |
和数据手册中的7.5 Supply Current Characteristics节基本一致。
# 6 参考
- [LP-MSPM0L1306 评估板 | TI.com.cn](https://www.ti.com.cn/tool/cn/LP-MSPM0L1306#tech-docs)
- [User's Guide: MSPM0L1306 LaunchPad Development Kit](https://www.ti.com.cn/cn/lit/ug/zhcuap0e/zhcuap0e.pdf?ts=1709956116753&ref_url=https%253A%252F%252Fwww.eetree.cn%252F)
- [CCSTUDIO IDE、配置、编译器或调试器 | 德州仪器 TI.com.cn](https://www.ti.com.cn/tool/cn/CCSTUDIO)
- [MSPM0L1306](https://www.ti.com/lit/gpn/MSPM0L1306?keyMatch=MSPM0L130X)
- [MSPM0官方培训:生态系列(10个短视频,从软硬件开发到量产烧录)](https://bbs.eeworld.com.cn/thread-1244342-1-1.html)
- [X-NUCLEO-LPM01A - 用于功耗测量的STM32 Power shield和Nucleo扩展板(UM2243) - 意法半导体STMicroelectronics](https://www.st.com/zh/evaluation-tools/x-nucleo-lpm01a.html)
- [um2243-stm32-nucleo-expansion-board-for-power-consumption-measurement-stmicroelectronics.pdf](https://www.st.com/resource/en/user_manual/um2243-stm32-nucleo-expansion-board-for-power-consumption-measurement-stmicroelectronics.pdf)
- 2024-02-09
-
发表了主题帖:
MSPM0开发生态---软件开发工具
本帖最后由 hsh007 于 2024-2-9 10:39 编辑
开发生态对开发者非常重要,所以各个MCU厂家非常重视。
笔者先以STM32为例来看看开发生态包含哪些内容,然后体验一下TI MSPM0的软件开发工具。
# 概述
下图是STM32的开发生态系统示意图,是以STM32Cube为核心构建的。
在软件开发工具方面,ST提供的如下:
TI主要提供Code Composer Studio(CCS), SysConfig和MSPM0 Analog Configurator。
# IDE
## CCS
### 概述
[CCS(Code Composer Studio/CCSTUDIO)](https://www.ti.com/tool/CCSTUDIO?keyMatch=&tisearch=search-everything&usecase=partmatches)是TI 用于微控制器和处理器的集成开发环境 (IDE),它包含一整套用于开发和调试嵌入式应用的工具。CCS可在 Windows®、Linux® 和 macOS® 上使用。此外,还可以通过访问 [TI 开发人员专区](https://dev.ti.com/),在云中使用它。
CCS正在从 Eclipse 过渡到 Theia应用框架。在此过渡期间,这两个版本均可用并受到维护。对器件系列和功能的支持将逐渐添加到CCStudio Theia中。
与传统的CCS相比,CCStudio Theia具有更现代化的界面和更强大的扩展性。THEIA采用了Web技术,可以通过浏览器访问,也支持本地安装。它提供了丰富的插件生态系统,使开发人员可以根据自己的需求定制IDE,并支持多种编程语言。
项目在 Eclipse 和Theia 版本的 CCS之间兼容,因此可在项目之间轻松切换。听说CCS 12.x 将是最后一个基于Eclipse的大版本,未来CCStudio Theia将使用CCS 13.x。
另外,容易忽略的是TI还有基于云的CCS,无需下载和安装大量软件即可在云中进行开发。
附上用户在线用户指南:[Code Composer Studio 用户指南](https://software-dl.ti.com/ccs/esd/documents/users_guide_zh/index.html)
### [编译器](https://www.ti.com/tool/TI-CGT)
CCS包括专为 TI 器件获得卓越性能和理想代码尺寸而定制的 C/C++ 编译器:包含用于 MSP430TM、C2000TM 和 DSP 等专有架构的编译器,以及用于基于 Arm 的微控制器的编译器。
TI Arm Clang 编译器将 LLVM 和 Clang 与 TI 增添的功能(如链接时优化)相结合,为基于 Arm 的 TI 微控制器提供出色的代码大小。
### Resource Explorer
通过 Resource Explorer 可以访问嵌入式开发所需的资源。快速访问为所用器件定制的示例、培训、软件开发套件和文档。除了包含在 Code Composer Studio 中,另外也可通过 [https://dev.ti.com/tirex](https://dev.ti.com/tirex) 在云中找到。
### [SysConfig](https://www.ti.com/tool/SYSCONFIG)
SysConfig是一款类似STM32CubeMX的直观而全面的工具,可简化配置难题,用于配置引脚、外设、驱动程序、无线电和其他组件。 SysConfig 可以自动检测、发现和解决冲突,来加快软件开发。
可以在CCS中点击*.syscfg文件打开:
也可以单独打开:
### [EnergyTrace](https://www.ti.com/tool/ENERGYTRACE) ™
EnergyTrace是一款分析工具,用于测量和显示应用的电能系统配置并帮助优化应用,从而实现超低功耗。
可以选择MCU运行时间,如10s,20s来测量功耗:
### 脚本与自动化
CCS拥有完整的脚本环境,允许自动执行重复性任务,例如测试和性能基准测试。
Debug Server Scripting (DSS) 是 Debug Server 的一组跨平台 Java API,允许通过 Java 或第三方工具(如 [JavaScript(通过 Rhino)](https://www.mozilla.org/rhino)、Java、[Python(通过 Jython)](https://www.jython.org/)、[TCL(通过 Jacl/Tclblend)](https://wiki.tcl-lang.org/page/Jacl)等)进行脚本编写。JavaScript 是 DSS 支持的默认(也是优选)脚本语言。
Debug Server 是 Code Composer Studio (CCS) 的基本调试引擎,可通过 DSS 和 CCS IDE 来访问它。
## 第三方IDE
作为大厂,ARM Keil和IAR肯定是要支持的。本次我没有去尝试这些第三方IDE,CCS(Theia)是免费的,能用就尽量用免费的吧,帮公司和自己省点钱。
# SysConfig
续前面介绍,SYSCONFIG 虽然跟 STM32CubeMX 一样是一个代码配置工具,但是 SYSCONFIG 不会生成嵌入形式的代码,它基本只生成单独的4个文件:
上图中第一个第二个文件就是初始化代码的C和H文件,在一个空工程中,最基础的程序是这样的:
![[SysConfig生成文件后main中的调用.png]]
这里面的SYSCFG_DL_init函数,就是在ti_msp_dl_config.c中,这里面的任何代码都不建议修改,因为每一次保存SYSCONFIG的配置,这个文件就会被SYSCONFIG改动。
# MSPM0 Analog Configurator
是一个在线的图形配置工具,旨在使用 MSPM0 器件简化和加快模拟信号链的设计和实现,无需进行传统的编码开发。
目前只支持浏览器Chrome和Firefox,不支持微软和苹果的浏览器:
但是FQ后用Chrome也登录不了。
# 需要注意的几点
## CCStudio Theia的下载
安装包总是下载失败,通过网页、迅雷以及其它下载工具试了多次都不行。
最后请管理员帮忙下载的。
## 版本管理
- CCS没有带版本管理功能,只有CCStudio Theia带了
- CCStudio Theia中不能新建或者切换branch,只能用默认的
使用git commit提交项目后,然后git checkout,CCS(Theia)需要使用git smart导入:
否则会编译出错:
- 2024-01-26
-
回复了主题帖:
测评入围名单(最后一批):年终回炉,FPGA、AI、高性能MCU、书籍等42个测品
个人信息无误,确认可以完成评测计划