【单片机】MSP430MSP432入门

文章目录

    • 0 前言
    • 1 开发方式选择
    • 2 CCS和开发相关软件
    • 3 Keil开发MSP432
    • 4 IAR for 430开发MSP430
    • 5 总结

0 前言

  最近因为想学DSP,所以把之前卸载的CCS给装回来了,手头也还有之前电赛剩下的MSP430和MSP432的板子,由于年代久远,想着花点时间回忆一下,顺便整理之前乱七八槽的文件资料,以作备忘。

不得不说,随着学习的深入,面对新的事物,已经没有之前的迷茫和冲动了,从容不迫才是学习的最高境界。

1 开发方式选择

  对于新手来说,可能会非常纠结这个工具的选择,因为在开发过程中难免会有找到好用的例程但是是基于其他平台这样的经历,但其实,不同的平台只不过是采用的编辑器和UI交互不一样罢了,内部的编译链接以及仿真等都是一致的(工具链可能不同,但结果是差不多的)。所以不同的平台有必要了解吗?还是有必要的,尤其是项目起步阶段,如果有一个完善的例程,直接换个平台先验证一下非常有利。

  言归正传,通过查阅TI官方的资料,得知目前MSP430的开发方式主要有:TI官方出品的Code Composer Studio,即CCS;开源的Energia(基于GCC工具链实现的类似于Arduino的代码框架);和Keil齐名的IAR,不过是For MSP430。而MSP432由于是基于ARM内核(Cortex-M4F),所以可以使用Keil(需要先安装一个固件包)或者IAR(ForARM);或者其他ARM内核相关工具链的IDE;以及官方自己的CCS。
  其中,由于最早Keil和IAR比较流行,而且当年TI自己的工具并不是特别完善,所以形成了早期用IAR开发MSP430、用Keil开发MSP432的大致格局。这也就是为什么在找MSP430的相关资料时,大都是各种古老的文档,配上一个IAR的例程。因为MSP430是16bit的RISV芯片,年代可以说比较久远了,然而现在大都是用32bit的单片机,所以感觉专业开发这些芯片的人并不是很多。
  虽然说可以继续以IAR和Keil作为IDE主力,但随着TI官方的CCS不断完善,界面也越来越好看,加上eclipse本身的编辑器就比Keil/IAR要好用,而且还支持其他的如DSP系列芯片,所以还是有必要学习使用CCS,当然,Keil和IAR在后面也有介绍。下面分别阐述。

2 CCS和开发相关软件

这一节可能是最重要的了,直接关系到对整个开发框架的理解

  以前年少无知,现在重新来审视这个CCS,就感觉CCS这个软件的组织架构就很奇怪,且听我来细细吐槽。
  由于只需要适配自家的芯片,所以在软件安装阶段直接勾选对应的芯片型号即可,这个没啥毛病。比如,如果要开发430和432,那么可以勾选这两个:

在这里插入图片描述

如果还要开发28335/2812等DSP芯片,可以再加上这个:

在这里插入图片描述

TM320F2812/28335芯片竟然叫做C2000系列。。。

这里安装的包决定了后面新建项目时可以选哪些芯片型号。如果已经安装好了软件,还想要更新的话,可以再次运行安装程序来实现增加组件。

  但是安装好之后,就会发现,虽然说可以新建项目了,也可以正常编译下载了,但只提供了寄存器式的代码!?可能也是历史原因,对于早期开发者来说,SDK可能就是指芯片的寄存器库。。。这是怪异点之一。显然,TI官方也意识到了这个问题,所以 为开发者再次封装了一下寄存器操作,命名为driverlib,和STM32的Pack包很像,也是一堆库函数封装加上一堆零散例程。但是怪的点又来了,可能是觉得只有库函数和例程不太够,为了让大家都来用我的芯片,我得同时照顾初学者和高级用户呀!所以在库里面加上整合度更高的例程以及一些文档资料,比如guid,get start之类的,还有一些高级的组件等等,又给取了一个名字,叫做xxxxWare,如MSP430Ware, MSP432Ware。有一说一,这个做法还是非常好的,但是就会让人感觉很绕——我在安装软件的时候都勾选了这个芯片,为什么不能一次性都给我装上?不说高级组件,至少基本的函数库得安排上呀。还只装一个寄存器库,如果开发者不知道有库函数这个东西,岂不是要一直都用寄存器开发?

  可能是受STM32CubeIDE/CubeMX的影响,CCS也有一个下载安装并管理软件包的东西,叫做Resorce Explorer,就是点开之后可以访问官方的一个在线资源服务器,这个想法也非常好,即需要啥直接在软件里面下载即可,不需要就卸载,节约空间。然后第三个问题来了——这个resource explorer经常出问题,比如一直loading的,完全空白的,点开之后报错然后告诉你从一个使用手册上找解决方法的等等。其实大概率就是网络的问题,包括是否要挂代理都有可能影响,对国内用户可以说很不友好。另外,就是这个resource explorer的结构,我印象中之前刚接触CCS的时候目录很乱,现在不知道是不是有改进了,目录结构还是很明确的:

在这里插入图片描述

但是,相比于STM32每一个芯片系列就对应一个包那种非常清晰明了的结构,这个还是不够直观,比如Wireless Connectivity,mmWave xxxx,大概知道是适合做这类项目的芯片,但问题来了——为什么要在IDE里面放解决方案呢?为什么不能在放在官网,然后提供参考手册加例程,这不比放在这清晰?

  当然,这个resource explorer我感觉最大的好处可能就是这些软件包里面有一些例程可以直接Import Project,不用自己挨个目录去找然后复制文件之类的操作。这可能是唯一的好处了吧,相比于单独安装这些软件(后面再说)。

  另外,是关于这个软件版本的问题,为了找到一个可以同时开发MSP430/432以及TMS320F2812/28335的版本,我花了一整天的时间尝试各种版本,汇总一下我遇到的问题:

  • v10.4 安装C2000组件之后发现新建项目搜索不到28335,而且resource explorer点开是空白,遂放弃。

  • v20 是跨平台的版本,原来截至v12都是基于eclipse平台,而v20是eclipse的一个进阶版,叫做Theia,界面和VSCode非常相似,也可以安装VSCode下的一些插件(有兴趣可以看一下这个介绍)。新建项目时,可以搜到28335以及相关的开发板,但新建项目不成功,没有细究,而且无法搜索到MSP432P401,后来得知是这一系列芯片停产了,然后新版的软件也移除了对这个芯片的支持!?

    多插一句:由于是在线的资源包,所以各个软件版本访问的都是同一个数据库,所以最新版的软件对这个支持得最好,旧版打不开好像也挺合理?

  • 后来尝试换v12.6,听说v12.6还可以支持MSP432P401,但是在安装过程中进度条走到最后时出现了那个论坛很多人提问的Child killed xxxx unknown signal,先后尝试装C盘(原来装D盘)、删除install-log、关闭Windows Defender等操作,均不好使,所以这个版本咋样也没试。

  • 最后,还是决定降低版本,安装了v9.0,发现可以正常搜索到28335,然后resource explorer也相对正常(不能开启全局代理访问),但无法安装里面的那些软件包,报错{"code":"ECONNRESET","errno":"ECONNRESET","syscall":"read"}

  既然内部无法安装,那咱索性直接下载安装程序来单独安装,无非就是一堆文件嘛,大不了手动复制到项目里面。

  • MSP430Ware.exe
  • MSP432Ware.exe
  • C2000Ware.exe

下载之后,建议还是安装到CCS同级的目录,如下所示

在这里插入图片描述

后面无论是在CCS里面使用,还是Keil/IAR,都可以从这里复制文件,所以关键就是理解这个Ware的文件结构。这里以MSP430为例,来看一下其目录结构

在这里插入图片描述

如前所述,这个MSP430Ware是在driverlib的基础上新增了一大堆东西,可以看到有dsplib(数字信号处理库),grlib(图形库)以及pmbus,smbus等通信相关的库。所以理论上需要啥都可以从这里复制。再来单独看一下driverlib:

在这里插入图片描述

这个结构是不是很眼熟?和STM32的固件库是差不多的,一个lib,加上一些例程,使用的时候先把lib复制到项目底下,然后参考例程的使用方式进行开发,这就是最有效最好的开发方式。

在这里插入图片描述

点开lib,可以发现,这里还区分的不同的芯片系列,但好像没有入门款G2系列?emmmm,可能是太基础了没有库吧,hh。但如果真想用我觉得也可以参考库组织的方式,毕竟很多寄存器还是一致的。

在这里插入图片描述

在example里面随意点开一个项目,发现都兼容了三种平台,还是非常完善的。

  因为是外部安装,所以在CCS软件里面不会显示已经安装这个软件包,如果要使用的话,建议还是手动把文件复制过去,可以参考这篇文章介绍的方法,步骤还是很明确的。


小结一下

  以上就是CCS平台下芯片开发的各个组件的作用和关系了,剩下的就是各个库和组件的使用了,好在都提供了文档和例程,认真研究,关键是需要时间和项目的磨练。

3 Keil开发MSP432

  和上面一样,还是打开msp432ware里面的driverlib,先查看一下例程:

在这里插入图片描述

打开Keil项目文件,发现其使用了RTE里面的Core,这也是很多型号单片机的一个特点,非常合理,也少复制几个文件,这里也采用相同的方式。

  首先,肯定是安装pack,这里推荐直接在Keil里面安装,相比于前面提到的resource explorer模糊的状态,这个pack installer的状态就非常确定——必须得科学上网。
在这里插入图片描述

安装好包之后,新建项目就可以选择对应的芯片型号了,接下来就是传统的那一套:建立文件夹和group并一一对应、在group中添加文件,这里重点介绍一下需要添加哪些文件。

  • core
    这个driverlib里面好像是没有的,只提供了头文件,所以需要使用Keil的RTE:
    在这里插入图片描述

    关于RTE的介绍可以参考我之前的一篇博客

  • lib
    这个没啥好说的,直接添加到项目中即可,然后记得设置C++包含路径

  • system文件
    就是上面那张图提到的例程下的system_msp432p401r.c

  • 启动文件(.s)
    也在例程下,startup_msp432p401r_uvision.s

到此就建立好了一个工程模板,记得在main函数中包含以下内容:

#include "msp.h"         // 各种寄存器
#include "driverlib.h"   // 库

另外,如果是使用那块经典的MSP432P401R LaunchPad板子,仿真可以直接选择DAP-Link,亲测可以正常下载和仿真。Reference

4 IAR for 430开发MSP430

  由于没有找到适配IAR WorkBench 8.3的软件包,所以这里不再详细介绍,大抵和上面Keil开发类似。

【如何在一个IAR里面开发多种芯片】

已获取的消息:

  • 7.12 对应WorkBench 8.0
  • 8.10 目前最新版对应Workbench 9.1

所以我需要的版本大抵是7.20或者7.21
在这里插入图片描述
链接:https://updates.iar.com/?product=EW430 把后面的产品改成别的即可查看别的软件各版本情况

5 总结

  本文主要是介绍了MSP430和MSP432在各个平台下的开发方式和基本开发流程,芯片外设和库的使用也只是起了一个头,后续如果有机会会再更新相关的外设使用以及实际代码编写等内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978271.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解

Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 前面我们已经将进程通信部分讲完了,现在我们来讲一个进程部分也非常重要的知识点——信号,信号也是进程间通信的一…

74道高级Java面试合集,java开发模式面试题

前言 今天我们来说说Redis为什么高性能?如何做高可用? Redis为什么这么快? Redis是单线程的,避免了多线程的上下文切换和并发控制开销;Redis大部分操作时基于内存,读写数据不需要磁盘I/O,所以速…

【江科协-STM32】5. 输出比较

1. 输出比较简介 OC(Output Compare)输出比较。 输出比较可以通过CNT(CNT计数器)与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。 :::tip CNT计数器是正向计数器。它只能正向累…

轻量级日志管理平台Grafana Loki

文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki?架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…

使用 Postman 访问 Keycloak 端点

1. 引言 在本教程中,我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后,我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。 2. OAuth 2.0 OAuth 2.0 是一个授权框架,它允许经过身份验证的用户通过令牌向第三方授予访问…

WEB1~6通杀

##解题思路 这六道题,通杀了,只因为是PHP的特性 来,看web6,过滤最复杂的正则,而且不能解析成大于999的值,但是,php是弱类型的语言,我只要输入任意字符数字,最终值就为0&…

I2C协议简介:串行通信的关键技术

目录 一、总线通信基本概念 二、I2C总线协议介绍 1. 时序图解析 (1)起始信号 (2)应答信号 (3)终止信号 (4)设备地址 (5)I2C传输方法 ​编辑 &#…

第二十四:5.2【搭建 pinia 环境】axios 异步调用数据

第一步安装&#xff1a;npm install pinia 第二步&#xff1a;操作src/main.ts 改变里面的值的信息&#xff1a; <div class"count"><h2>当前求和为&#xff1a;{{ sum }}</h2><select v-model.number"n">  // .number 这里是…

Web漏洞——命令注入漏洞学习

一、什么是命令注入漏洞 想象一下&#xff0c;你家有一个智能管家机器人。这个机器人可以通过你发出的指令来完成各种任务&#xff0c;比如“请打开电视机、播放音乐、开灯等等”。你只需要对它说&#xff1a;“请打开电视”&#xff0c;它就会去执行这个任务。但是&#xff0…

大模型自动提示优化(APO)综述笔记

自大型语言模型&#xff08;LLMs&#xff09;出现以来&#xff0c;提示工程一直是各种自然语言处理&#xff08;NLP&#xff09;任务中激发期望响应的关键步骤。然而&#xff0c;由于模型的快速进步、任务的多样性和相关最佳实践的变化&#xff0c;提示工程对最终用户来说仍然是…

快速排序(详解)c++

快速排序(Quick Sort)&#xff0c;既然敢起这样的名字&#xff0c;说明它是常⻅排序算法中较为优秀的。事实上&#xff0c;在很多情况下&#xff0c;快排确实是效率较⾼的算法&#xff1b;c的排序是以快排为基础&#xff0c;再加上堆排和插入排序做优化实现的&#xff0c;我们这…

【工具变量】公司企业数字领导力(2004-2023年)

数据简介&#xff1a;企业数字化领导力是指在数字经济时代&#xff0c;领导者通过战略性地使用数字资产、引领组织变革&#xff0c;使企业在数字化环境中获得持续成功的能力。对于上市公司而言&#xff0c;这种领导力尤为重要&#xff0c;因为它直接关系到企业的战略方向、市场…

浅谈新能源汽车充电桩建设问题分析及解决方案

摘要&#xff1a; 在全球倡导低碳减排的大背景下&#xff0c;新能源成为热门行业在全球范围内得以开展。汽车尾气排放会在一定程度上加重温室效应&#xff0c;并且化石能源的日渐紧缺也迫切对新能源汽车发展提出新要求。现阶段的新能源汽车以电力汽车为主&#xff0c;与燃油汽…

seacmsv9报错注入

1、seacms的介绍 ​ seacms中文名&#xff1a;海洋影视管理系统。是一个采用了php5mysql架构的影视网站框架&#xff0c;因此&#xff0c;如果该框架有漏洞&#xff0c;那使用了该框架的各个网站都会有相同问题。 2、源码的分析 漏洞的部分源码如下&#xff1a; <?php …

python学习四

python运算符与表达式 表达式: Python中的表达式是一种计算结果的代码片段。它可以包 含变量、运算符、常数和函数调用,用于执行各种数学、逻辑 和功能操作 算术运算符: 比较(关系)运算符: 赋值运算符: 逻辑运算符: 位运算符: 成员运算符: 身份运算符 <

Nginx面试宝典【刷题系列】

文章目录 1、nginx是如何实现高并发的&#xff1f;2、Nginx如何处理HTTP请求&#xff1f;3、使用“反向代理服务器”的优点是什么?4、列举Nginx服务器的最佳用途。5、Nginx服务器上的Master和Worker进程分别是什么?6、什么是C10K问题?7、请陈述stub_status和sub_filter指令的…

数字可调控开关电源设计(论文+源码)

1 设计要求 在本次数字可调控开关电源设计过程中&#xff0c;对关键参数设定如下&#xff1a; &#xff08;1&#xff09;输入电压&#xff1a;DC24-26V,输出电压&#xff1a;12-24&#xff08;可调&#xff09;&#xff1b; &#xff08;2&#xff09;输出电压误差&#xf…

清华大学《AIGC发展研究3.0》

大家好&#xff0c;我是吾鳴。 AIGC已经爆火好长一段时间了&#xff0c;特别是DeepSeek的爆火&#xff0c;直接让很多之前没有体会过推理模型的人可以免费的使用上推理模型&#xff0c;同时DeepSeek产品形态也是全球首创&#xff0c;就是直接把AI的思考过程展示给你看&#xff…

模型和数据集的平台之在Hugging Face上进行模型下载、上传以及创建专属Space

模型下载 步骤&#xff1a; 注册Hugging Face平台 https://huggingface.co/ 新建一个hf_download_josn.py 文件 touch hf_download_josn.py 编写hf_download_josn.py文件 import os from huggingface_hub import hf_hub_download# 指定模型标识符 repo_id "inter…

脚本无法获取响应主体(原因:CORS Missing Allow Credentials)

背景&#xff1a; 前端的端口号8080&#xff0c;后端8000。需在前端向后端传一个参数&#xff0c;让后端访问数据库去检测此参数是否出现过。涉及跨域请求&#xff0c;一直有这个bug是404文件找不到。 在修改过程当中不小心删除了一段代码&#xff0c;出现了这个bug&#xff…