打印

LP-MSPM0L1306开发板试用体验---数字电源输出模块

[复制链接]
1354|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LP-MSPM0L1306开发板试用体验---数字电源输出模块
开箱照
  在拿到开发板之前,我在21ic平台及TI的教育在线课堂收看多期MSPM0L1306这颗Cortex-M0+内核的芯片的讲座。MSPM0L1306具有我们现在常用的Cortex-M0+的内核指令集,与现在的通用MCU一致,最主要是Keil无需要更换,代码编译环境不用变更,没有再学习的成本。MSPM0L1306又具有较其它通用MCU更强大的模拟外设功能,比如ADC模数转换,OP放大器,COMP比较器等。总之,挺期待这颗芯片的。这不,试用的机会就来了,赶紧申请之。
  拿到快递后,我迫不及待地拆开包装。映入眼帘的是TI公司万年不变的红色主题,仍然是lanchpad系列的基调——从MSP430,再到Tiva系列。拿到板子,仔细端详,可以深刻体会到设计人员的良苦用心:
  •   跳线帽设计,同一个功能,通过跳线帽可以直接对比。做对比实验,完全不需要再自行设计电路;
  •   按键凹槽设计,设计人员将按键放置在PCB板的边缘,并贴心地设计了凹槽,特别方便按键按下,即使表贴按键比较小;
  •   芯片小小的三围设计,应该面向于小模块,如Iot设备,电表等,芯片的三围非常小,与板载的调试器芯片形成了鲜明对比
  接下来,让我们通过一组照片来欣赏一下吧!




开发环境搭建
  Keil MDK是ARM旗下的一款嵌入式编译开发环境,拥有多年的行业应用经验。本人也一直使用Keil开发环境做为主要的嵌入式软件代码编译工具。前面提到过,MSPM0L1306芯片是基于Cortex-M0+内核的芯片,因此,Keil软件可以通过安装器件包的方式增加其编译器件支持。于是,我们在Keil官方网站上下载支持MSPM0L1306器件的器件包TexasInstruments.MSPM0L11XX_L13XX_DFP.1.2.1.pack,并安装,如下图所示:

  为了加快我们开发,我还下载了官方的SDK,里面包含了TI公司MSPM0系列的硬件驱动库,外设示例代码,开发板的项目示例代码等。
  另外,官方的外设、引脚配置工具sysconfig也建议下载,方便我们配置GPIO、时钟、外设功能等寄存器。
  下图就是我的工程文件图:

  文档结构完成了,剩下的就是编写代码了。先编写一个LED灯闪烁与Uart输出字符串的实验。由于使用了sysconfig工具软件,其实我自己编写的代码量挺低的。
int main(void)
{
  uint8_t i;
  DL_SYSCTL_disableSleepOnExit();

  DL_SYSTICK_init(32000);
  DL_SYSTICK_enableInterrupt();
  DL_SYSTICK_enable();

  bsp_init();

  while (1)
  {
    if (timeline_ms > 500)
    {
      timeline_ms = 0;
      DL_GPIO_togglePins(GPIO_RGB_PORT, GPIO_RGB_GREEN_PIN);
      JPRINTF("hello 21ic.com\r\n");
    }
  }
}

void SysTick_Handler(void)
{
  timeline_ms++;
}
我们再来看看实验效果:


也玩模拟,小试模拟外设
  之前很少接触模拟电路,主要原因还是自己的模拟电路知识不扎实,不实用,而模拟电路又很吃水平,所以一直对模拟电路相关的应用敬而远之。今天借MSPM0L1306开发板小试一下,不过,也仅仅使用ADC外设来读取电压值。
  实验的硬件电路图如下:

  原理图上的J1跳线帽我们短接1-2。将RT热敏电阻直接分压进入ADC_CHANNEL_9(PA15引脚)。
  我们再使用TI官方的SysConfig图形化配置软件配置ADC外设,并生成C语言代码。
  这里,我没有使用示例里面的TIMER触发的方式,而是采用了软件触发,但转换完成依然使用了中断的方式。
  我设计了ADC采样流程的状态机,所以在ADC转换完成后,触发完成中断后将信号量通知Poll程序的方式升级为了状态机转换。状态机流转图如下图所示:

  核心代码如下:
int main(void)
{
  uint8_t i;
  uint16_t val;
  uint32_t ret;
  int16_t rt_temperature = 0;
  DL_SYSCTL_disableSleepOnExit();

  SYSCFG_DL_init();

  JPRINTF("hello 21ic.com\r\n");
  rt_adc_state = adc_idle;
  NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);
  /* Confirm VREF has settled before triggering ADC12 conversion */
  while (DL_VREF_CTL1_READY_NOTRDY == DL_VREF_getStatus(VREF))
    ;
  while (1)
  {
    if (timeline_ms > 1000)
    {
      timeline_ms = 0;
      DL_GPIO_togglePins(GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_0_PIN);
      if (rt_adc_state == adc_idle)
      {
        DL_ADC12_startConversion(ADC12_0_INST);
        rt_adc_state = adc_converting;
      }
    }
    if (rt_adc_state == adc_ready)
    {
      val = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
      DL_ADC12_enableConversions(ADC12_0_INST);
      rt_temperature = thermistor_calc_temperature(val);
      JPRINTF("temperature is %d[%04X]\r\n", rt_temperature, val);
      rt_adc_state = adc_idle;
    }
  }
}

void SysTick_Handler(void)
{
  timeline_ms++;
}

void ADC12_0_INST_IRQHandler(void)
{
  switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST))
  {
  case DL_ADC12_IIDX_MEM0_RESULT_LOADED:
  {
    rt_adc_state = adc_ready;
    break;
  }
  default:
    break;
  }
}
我们将结果通过串口打印出来,显示如下:
  我家的室温24度左右,中间部分数据升高是我在向温度电阻吹气。
  我在本实验中,没有使用示例中的VCCA做为参考电压,而是使用了内部2.5v。对于ADC转换值与温度的对应关系我也没有采用官方的曲线拟合的方式,而是使用查表的方式。
  从上面的实验看,似乎TI的MSPM0L1306与其它MCU没有什么区别!其实是我没有发挥其高级功能,比如低功率模式。此部分待**后有需求再来验证。
试试OPA
  TI推出MSPM0L1306其芯片内部集成了OPA,至此,硬件电路设计上面完全可以抛弃外部OPA的分离器件了。在测量电流时亦能根据电流的大小来动态配置OPA的增益值来实现对测量精度,测量范围,从而达到收益最大化。
  本次实验的硬件电路,我们选择光电二极管。

  跳线帽全部安装上,即使用OPA0外设,驱动代码的生成我们仍然使用SysConfig软件。
  本次实验中,ADC外设我们采用Timer触发的方式,采集数据结果通过串口打印出来。
  下面贴出来核心代码和运行结果。
总结
  TI沉寂多年后,再次牵手ARM公司推出Cortex-M0+内核MCU,发力低功耗与模拟外设,充分利用其强大模拟与数字技术雄厚背景。通过几个亲测实验,大家应该也都深刻体会到了其高集成度下的优势,这种优势一定会转化为我们项目中的效益!
致谢
  感谢TI公司提供MSPM0L1306开发板!感谢21ic论坛提供机会!感谢论坛网友,群友提供的各种帮助!

使用特权

评论回复

相关帖子

沙发
xyz549040622| | 2023-10-31 21:24 | 只看该作者
楼主的这个开发过程,测试的是ADC和定时器、串口,没有涉及到数字电源的输出呀。

使用特权

评论回复
板凳
jobszheng|  楼主 | 2023-11-1 09:34 | 只看该作者
xyz549040622 发表于 2023-10-31 21:24
楼主的这个开发过程,测试的是ADC和定时器、串口,没有涉及到数字电源的输出呀。 ...

是模块控制,并非制作一个数字电源。

在数字电源的输出后端添加本模块,对电压,电流与电量的监测与统计。
是不是标题有误导啊

使用特权

评论回复
地板
lemonboard| | 2023-11-2 14:27 | 只看该作者
标题确实有些误导了。
还以为你设计了一块数字电源呢

使用特权

评论回复
5
过期的塔头| | 2024-3-15 09:08 | 只看该作者
文章很生动地描述了LP-MSPM0L1306开发板的外观和设计特点,同时也提到了对MSPM0L1306芯片的期待。很棒~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:热爱开源,乐于分享。在嵌入式技术领域里面,主攻通讯协议,Modbus,TCP/IP以及虚拟化和RTOS

16

主题

389

帖子

2

粉丝