这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 课程1-任务1+2:认识TIMSPM0以及GPIO操作

共3条 1/1 1 跳转至页

课程1-任务1+2:认识TIMSPM0以及GPIO操作

高工
2024-04-30 14:04:15     打赏

MSPM0L1306 LaunchPad™开发套件用用于评估MSPM0L130x混合信号微控制器开发板。该套件包含在MSPM0L1xx上开始开发所需的一切微控制器平台,包括用于编程、调试和能量的板载调试探针测量。该板还具有板载按钮和LED,可为简单用户快速集成接口、板载热敏电阻、光传感器和RGB LED。

开发板靓照:

 https://www.bilibili.com/video/BV17m411C7xc/?buvid=XY75B537C416E17A953A00A33EDB883CA28EB&is_story_h5=false&mid=Pw2Hq3t6IhfKj%2FPD%2Bao96g%3D%3D&plat_id=147&share_from=ugc&share_medium=android&share_plat=android&share_session_id=24675ff3-531b-4190-887e-92ff72a910f3&share_source=WEIXIN&share_tag=s_i&timestamp=1714456421&unique_k=gZaBq1y&up_id=5269371684.jpg

MSPM0L1306是Arm®32位Cortex®-M0+CPU,频率高达32MHz。设备功能64KB嵌入式闪存与4KB片上RAM相结合。集成的高性能模拟12位1-Msps SAR ADC、零漂移和零交叉斩波运算放大器(OPA)以及通用放大器(GPAMP)等外围设备可帮助用户设计系统。40针BoosterPack™插入式模块头简化了快速原型设计,支持广泛的可用BoosterPack插件模块的数量。您可以快速添加无线连接、图形显示器、环境传感等等。设计您自己的BoosterPack插件模块或选择TI和第三方开发人员已经提供了许多。还提供免费软件开发工具,如TI的Code Composer Studio™IDE、IAR Embedded Workbench™IDE和Keil®µVision®IDE。Code Composer Studio IDE支持EnergyTrace™技术当与MSPM0L1306 LaunchPad开发套件配对时。有关LaunchPad的更多信息开发工具包、支持的BoosterPack插件模块和可用资源可以在TI上找到LaunchPad™开发工具包门户网站。快速入门并在MSPM0软件中查找可用资源开发工具包(SDK),请访问TI云开发区。MSPM0 MCU还得到广泛的支持在线辅助资料、MSP Academy培训以及通过TI E2E™支持论坛提供的在线支持。

 0.jpg

资源:

•带有外部编程选项的板载XDS110调试探头

•EnergyTrace技术可用于超低功率调试

•2个按钮、1个LED和1个RGB LED,用于用户交互

•热敏电阻电路

•光传感器电路

•ADC输入的RC滤波器(默认情况下未填充)

•支持GPIO和XDS110的BSL调用

•通过USB到PC的反向通道UART

 


芯片MSPM0L1306介绍:MSPM0L134x 和 MSPM0L130x 微控制器 (MCU) 属于 MSP 高度集成的超低功耗 32 位 MSPM0 MCU 系列,该系列基于增强型 Arm® Cortex®-M0+ 内核平台,工作频率最高可达 32MHz。这些低成本 MCU 提供高性能模拟外 设集成,支持 -40°C 至 125°C 的工作温度范围,并在 1.62V 至 3.6V 的电源电压下运行。MSPM0L134x 和 MSPM0L130x 器件提供高达 64KB 的嵌入式闪存程序存储器和高达 4KB 的 SRAM。这些 MCU 包含精度高达 ±1.2% 的高速片上振荡器,无需外部晶体。其他特性包括 3 通道 DMA、16 位和 32 位 CRC 加速器,以及各种高性能模拟外设,例如一个具有可配置内部电压基准的 12 位 1.68MSPS ADC、一个具有内置基准 DAC 的高速比较器、两个具有可编程增益的零漂移零交叉运算放大器、一个通用放大器和一个片上温度传感器。 这些器件还提供智能数字外设,例如四个 16 位通用计时器、一个窗口化看门狗计时器和各种通信外设(包括两个 UART、一个 SPI 和两个 I 2C)。这些通信外设为 LIN、IrDA、DALI、Manchester、Smart Card、SMBus 和 PMBus 提供协议支持。 TI MSPM0 系列低功耗 MCU 包含具有不同模拟和数字集成度的器件,可让客户找到满足其工程需求的 MCU。此架构结合了多种低功耗模式,并经过优化,可在便携式测量应用中延长电池寿命。

 


– Arm® 32 位 Cortex®-M0+ CPU,频率高达

32MHz

• 工作特性

– 工作温度范围:–40°C 至 125°C

– 宽电源电压范围:1.62V 至 3.6V

• 存储器

– 高达 64KB 的闪存

– 高达 4KB 的 SRAM

• 高性能模拟外设

– 一个具有总计多达 10 个外部通道的 12 位

1.68Msps 模数转换器 (ADC)

– 可配置的 1.4V 或 2.5V 内部 ADC 电压基准

(VREF)

– 两个零漂移、零交叉斩波运算放大器 (OPA)

• 0.5µV/°C 漂移,具有斩波

• 6pA 输入偏置电流 1

• 集成可编程增益级 (1-32x)

– 一个通用放大器 (GPAMP)

– 一个具有 8 位基准 DAC 的高速比较器 (COMP)

• 32ns 传播延迟

• 低功耗模式,低至 <1µA

– ADC、OPA、COMP 和 DAC 之间的可编程模拟

连接

– 集成温度传感器

• 经优化的低功耗模式

– 运行:71µA/MHz (CoreMark)

– 停止:4MHz 时为 151µA,32kHz 时为 44µA

– 待机:32kHz 16 位计时器运行时为 1.0µA,

SRAM/寄存器完全保留,32MHz 时钟唤醒时间

为 3.2µs

– 关断:61nA,具有 IO 唤醒能力

• 智能数字外设

– 3 通道 DMA 控制器

– 3 通道事件结构信号系统

– 四个 16 位通用计时器,每个计时器具有两个捕

捉/比较寄存器,支持待机模式下的低功耗运

行,总共支持 8 个 PWM 通道

– 窗口化看门狗计时器

• 增强型通信接口

– 两个 UART 接口;一个支持 LIN、IrDA、

DALI、Smart Card、Manchester 并且都支持待

机模式下的低功耗运行

– 两个 I2C 接口;一个支持 FM+ (1 Mbit/s),两个

都支持 SMBus、PMBus 和从停止状态唤醒

– 一个 SPI,支持高达 16Mb/s 的速率

• 时钟系统

– 精度为 ±1.2% 的内部 4MHz 至 32MHz 振荡器

(SYSOSC)

– 精度为 ±3% 的内部 32kHz 低频振荡器

(LFOSC)

• 数据完整性

– 循环冗余校验器(CRC-16 或 CRC-32)

• 灵活的 I/O 功能

– 多达 28 个 GPIO

– 两个具有失效防护保护功能的 5V 容限开漏 IO

• 开发支持

– 2 引脚串行线调试 (SWD)

• 封装选项

– 32 引脚 VQFN (RHB)

– 32 引脚 VSSOP (DGS)

– 28 引脚 VSSOP (DGS)

– 24 引脚 VQFN (RGE)

– 20 引脚 VSSOP (DGS)

– 16 引脚 SOT(DYY)

– 16 引脚 WQFN (RTR)

• 系列成员 (另请参阅器件比较)

– MSPM0L13x3:8KB 闪存、2KB RAM

– MSPM0L13x4:16KB 闪存、2KB RAM

– MSPM0L13x5:32KB 闪存、4KB RAM

– MSPM0L13x6:64KB 闪存、4KB RAM

• 开发套件与软件(另请参阅工具与软件)

– LP-MSPM0L1306 LaunchPad™ 开发套件

– MSP 软件开发套件 (SDK)

 软件进行GPIO操作:

首先进行芯片资源配置:

代码编写:

芯片原理图:

#include "ti_msp_dl_config.h"

/* This results in approximately 0.5s of delay assuming 32MHz CPU_CLK */
#define DELAY (26000000)

//粗延时函数,微秒
void delay_us1(unsigned int time)
{
    unsigned int i=0;
   while(time--)
   {
      i=10;  //自己定义
      while(i--) ;
   }
}
//毫秒级的延时
void delay_ms1(unsigned int time)
{
    unsigned int i=0;
   while(time--)
   {
      i=12000;  //自己定义
      while(i--) ;
   }
}
int main(void)
{
    /* Power on GPIO, initialize pins as digital outputs */
    SYSCFG_DL_init();

    /* Default: LED1 and LED3 ON, LED2 OFF */
    DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
    DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN |
                                        GPIO_LEDS_USER_LED_3_PIN |
                                        GPIO_LEDS_USER_TEST_PIN);

    while (1) {
        

              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              delay_ms1(500);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              delay_ms1(500);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);

              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              delay_ms1(500);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              delay_ms1(500);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);


              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              delay_ms1(500);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              delay_ms1(500);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);





              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              // 灭掉红色,点亮绿色
              delay_ms(500);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              // 灭掉绿色,点亮蓝色
              delay_ms(500);
              DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
              DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
    }
}

实现现象一下视频;



https://www.bilibili.com/video/BV17m411C7xc/?buvid=XY75B537C416E17A953A00A33EDB883CA28EB&is_story_h5=false&mid=Pw2Hq3t6IhfKj%2FPD%2Bao96g%3D%3D&plat_id=147&share_from=ugc&share_medium=android&share_plat=android&share_session_id=24675ff3-531b-4190-887e-92ff72a910f3&share_source=WEIXIN&share_tag=s_i&timestamp=1714456421&unique_k=gZaBq1y&up_id=526937168



 



高工
2024-04-30 14:07:03     打赏
2楼

高工
2024-04-30 15:12:15     打赏
3楼

谢谢分享


共3条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]