3、MSP430 微控制器开发全解析
MSP430 微控制器开发全解析
1. 不同 LaunchPad 介绍
在微控制器开发领域,有多种 LaunchPad 可供选择,它们各有特点,适用于不同的应用场景。
- MSP - EXP430FR2355 :这是一款用于 MSP430FR2355 MCU 的开发板。其微控制器工作电压范围为 1.8V 至 3.6V,拥有 32kB FRAM 和 4kB SRAM,还有 20kB ROM 存储不同的驱动和 FFT 库,可在 CCS 中直接使用以加快代码执行速度并节省 FRAM 空间。该 16 位 RISC 微控制器运行频率达 24MHz,具备一些特殊外设,如智能模拟组合(SAC - L3),提供通用运算放大器、轨到轨输入输出、可配置的高功率和低功率模式,还有可配置的 PGA 模式,支持多种增益倍数。此外,还包含定时器、RTC、CRC 模块、32 位硬件乘法器等智能数字外设。板上有 2 个用户按钮和 LED,还有一个光电二极管,新开发板的开箱演示会利用该光电二极管,通过板上的 LED1 和 LED2 指示光强度,还能在 P1.5 引脚生成 1Hz、0.8V 振幅的反相正弦波。
- MSP - EXP432P401R :此开发板让我们跳出了 MSP430 系列。板上的 MSP432P401R 是 SimpleLink™ 超低功耗 32 位 Arm Cortex - M4F MCU,带有精密 ADC、256KB Flash 和 64KB RAM,时钟频率最高可达 48MHz,还包含 32kB ROM 及 SimpleLink MSP432SDK 库。集成了至少四个 16 位定时器(具有捕获、比较或 PWM 功能)、两个 32 位定时器和一个 RTC 模块,可构建多达八个串行通信通道(I2C、SPI、UART 和 IrDA)以及许多模拟外设。开发板提供 40 针连接,可添加 BoosterPack 插件模块。
- MSP - EXP430G2ET :这是一款常用的开发板,支持所有 14 和 20 针 DIP MSP430 微控制器。其优势在于使用 20 针 IC 插座支持 DIP 封装微控制器,可将固件写入微控制器闪存,然后将 MCU 从开发板取出用于自有硬件,再放入新的 MCU 写入相同或其他固件。以 MSP430G2553 为例,其供电电压为 1.8V 至 3.6V,是 16 位 RISC 微控制器,时钟频率最高 16MHz,包含 16kB 闪存和 512 字节 RAM,具备 8 通道 10 位 ADC、8 通道比较器、两个 16 位定时器、USCI 接口和 16 个 GPIOs(QFN 或 TSSOP 封装提供 24 个 GPIOs)。该开发板还支持众多其他微控制器,如 MSP430F2001、MSP430G2101 等共 43 种设备。板上有一个自定义按钮、复位按钮、绿色 LED、红色 LED 和一个 RGB LED。
以下是 MSP - EXP430G2ET 支持的部分微控制器信息:
| 微控制器 | Flash | RAM | 外设 |
| — | — | — | — |
| MSP430F2001 | 1 kB | 128 B | 比较器 |
| MSP430F2002 | 1 kB | 128 B | 10 位 SAR A/D,用于 SPI / I2C 的 USI |
| MSP430F2003 | 1 kB | 128 B | 16 位 Sigma - Delta A/D,用于 SPI / I2C 的 USI |
|… |… |… |… |
| MSP430G2553 | 16 kB | 512 B | 10 位 SAR A/D,比较器,用于 SPI / I2C / UART 的 USCI |
- BOOSTXL - EDUMKII :这是一种通用的 BoosterPack,可与多种 LaunchPad 配合使用,如 MSP - EXP432P401R。它包含多个传感器和输入输出设备,如 OPT3001 光传感器、TMP006 远程温度传感器、伺服电机驱动器、3 轴加速度计、RGB LED、压电蜂鸣器等。板中央有一个 128x128 TFT LCD,还有麦克风、2 轴操纵杆和一些用户按钮。在德州仪器网站上可找到许多展示如何使用这些外部外设的软件示例。
2. 集成开发环境(IDE)
在开发过程中,选择合适的集成开发环境至关重要,这里介绍两款适用于德州仪器微控制器的 IDE。
- Code Composer Studio (CCS)
- 下载与安装 :可从德州仪器免费下载当前版本的 Code Composer Studio,最新版本为 10.3.0.00007,文档可在 https://www.ti.com/tool/CCSTUDIO 获取。选择合适的下载选项并安装后,即可启动 IDE。
- 选择工作区 :启动时需选择“工作区”,工作区是文件系统中的一个目录,用于存储所有创建和使用的项目。通常将所有项目存储在一个工作区中,在对话框中选择相应目录后,点击“Launch”启动 CCS。
- 创建新项目 :点击“New Project”或通过菜单路径“Project -> New CCS Project”创建新项目。在弹出的对话框中,选择要使用的微控制器(如 MSP430G2553),输入项目名称,选择“Empty Project (with main.c)”,点击“Finish”完成项目创建。创建后会自动导航到 main.c 文件,该文件已预填充一些代码,包含 库、main() 函数和停止看门狗定时器的代码。
- 代码编写与上传 :编写代码并确保无语法错误后,可通过按 F11 或选择菜单“Run -> Debugging”启动调试会话,IDE 会编译代码并将其写入微控制器闪存。调试开始后,可从 IDE 直接跟踪代码执行。若不想调试,可按“Resume”或 F8 让代码运行。结束调试会话可点击“Terminate”按钮或按 Ctrl + F2,此时微控制器将自主执行上传的代码,可关闭 CCS、断开开发板连接或取出微控制器用于自有应用。
- Energia (MSP430 Arduino)
- 适用范围与下载 :Energia 可与部分 MSP430、一些 MSP432、Tiva C 和 CC3200 LaunchPad 板配合使用,对于 MSP430 LaunchPad,仅支持 MSP - EXP430G2ET 搭配 MSP430G2553 微控制器。可从 https://energia.nu/ 下载,当前最新版本为 Energia 23(即 Energia 1.8.10E23),示例代码使用的是 1.8.7E21 版本。
- 代码编写与设置 :启动 Energia 后,会自动准备 setup() 和 loop() 两个函数,setup() 函数在复位后执行一次,loop() 函数是固件的无限主循环。从菜单“Tools -> Board”选择“MSP - EXP430G2ET w/MSP430G2553”,再选择板连接的端口,由于每次连接板到 PC 的 USB 插槽时可用端口列表可能不同,启动时需检查上次选择的端口是否仍然有效。保存空代码可使用 Ctrl + S 或通过菜单“File -> Save”或“File -> Save As”,输入项目名称完成保存。
- 代码上传 :编写代码完成后,按 Ctrl + U 或选择菜单“Sketch -> Upload”,若代码无语法错误,Energia 会编译并上传代码到微控制器,上传完成后微控制器开始执行代码,不过 Energia 没有调试代码的选项。
3. MSP430G2553 简单示例
为了更好地掌握 MSP430G2553 微控制器的使用,下面介绍一些不同外设的示例。
- 外设概述
| 外设 | 章节 | 简要描述 |
| — | — | — |
| GPIO | 3.1 | 查看可用端口(端口 1 和端口 2)的通用输入输出功能,将端口配置为数字线路并学习使用方法。 |
| ADC10 | 3.2 | 了解内置 10 位模数转换器的功能。 |
| WDT + | 3.3 | 典型的微控制器看门狗,扩展了 MSP430 特定功能,可将看门狗模块设置为定时器模式并生成中断。 |
| Timer0 / Timer1 | 3.4 | 通用的 16 位定时器。 |
| Custom | 3.5 | 自定义串行通信,利用特殊的 Energia 库实现 OneWire 通信。 |
| COMP_A + | 3.6 | 探索如何比较两个模拟信号。 |
-
示例介绍
- Hello World :这是一个简单的闪烁 LED 示例,通过 GPIO 控制 LED 的闪烁。
- Hello World 2 :两个 LED 同时闪烁的示例,进一步展示 GPIO 的使用。
- Game Cube :涉及 7 个 LED 和一个按钮的游戏立方体练习,锻炼对 GPIO 的综合运用。
- Connecting LCD :学习如何将基于 HD44780 兼容控制器的 LCD 连接到 MSP430 并进行驱动。
- Reading ADC Control Registers :通过读取和解释 ADC10 控制寄存器,了解 ADC10 模块的设置。
- Internal Temperature Sensor :利用 ADC10 模块读取内部温度传感器的值。
- Own Voltage :使用 ADC10 模块和内部参考测量电源电压。
- Reading Potentiometer :获取外部连接电位器的位置。
- WatchDog Reset :将 WDT + 模块用作看门狗。
- WatchDog Interrupt Flag :将 WDT + 模块用作定时器,使其生成中断。
- Simple 16 - bit counter :将 Timer_A 模块用作简单的 16 位计数器。
- OneWire Thermometer :利用特殊的 Energia 库实现与 DS18B20 传感器的 OneWire 通信。
- Hit the reference :展示 Comparator_A + 模块比较两个不同模拟信号的用法。
-
串行监视器的使用 :对于 Energia 环境,串行监视器是一个常用工具。默认情况下,MSP - EXP430G2ET 的开箱设置不允许使用串行监视器,需要更改两个开关。更改后,可选择与开发板通信的端口,通过菜单“Tools -> Serial Monitor”初始化串行监视器终端,执行简单程序后,可在串行监视器中查看程序内部变量的信息。
-
电源供应 :MSP430 微控制器需要低于 5.0V 的电源供应,可使用手机的 5.0V USB 电源或移动电源,但需使用一个小的 LDO(低压差线性稳压器)将 5.0V 转换为 3.3V。例如 MCP1702 - 3302E/TO,它提供 3.3V / 250mA 的输出电流,输入工作电压可达 13.2V,非常适合将 5.0V 转换为 3.3V,可在通用板上构建该模块。
通过以上对不同 LaunchPad、集成开发环境和 MSP430G2553 示例的介绍,相信大家对 MSP430 微控制器的开发有了更深入的了解,能够根据自己的需求选择合适的开发板和开发环境,开展相关的开发工作。
MSP430 微控制器开发全解析(下半部分)
4. 详细示例代码分析
4.1 GPIO 示例(Hello World)
在 CCS 中使用 C 语言编写让 LED 闪烁的代码示例:
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // 停止看门狗定时器
P1DIR |= BIT0; // 将 P1.0 配置为输出
while(1)
{
P1OUT ^= BIT0; // 翻转 P1.0 的电平
__delay_cycles(100000); // 延时
}
}
操作步骤:
1. 停止看门狗定时器,避免其复位系统。
2. 将 P1.0 端口配置为输出模式。
3. 在无限循环中,使用异或操作翻转 P1.0 的电平,实现 LED 的闪烁。
4. 使用 __delay_cycles 函数进行延时,控制闪烁频率。
在 Energia 中实现相同功能的代码:
void setup() {
pinMode(1, OUTPUT); // 将引脚 1 配置为输出
}
void loop() {
digitalWrite(1, HIGH); // 引脚 1 输出高电平
delay(1000); // 延时 1 秒
digitalWrite(1, LOW); // 引脚 1 输出低电平
delay(1000); // 延时 1 秒
}
操作步骤:
1. 在 setup 函数中,将引脚 1 配置为输出模式。
2. 在 loop 函数中,使用 digitalWrite 函数控制引脚 1 的电平,通过 delay 函数控制闪烁间隔。
4.2 ADC10 示例(Internal Temperature Sensor)
在 CCS 中读取内部温度传感器值的代码:
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // 停止看门狗定时器
ADC10CTL0 = ADC10SHT_2 | ADC10ON | ADC10IE; // 配置 ADC10
ADC10CTL1 = INCH_10; // 选择内部温度传感器通道
ADC10AE0 |= 0x10; // 使能 A10 通道
while(1)
{
ADC10CTL0 |= ENC + ADC10SC; // 启动转换
__bis_SR_register(CPUOFF + GIE); // 进入低功耗模式等待转换完成
// 处理转换结果
}
return 0;
}
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
__bic_SR_register_on_exit(CPUOFF); // 退出低功耗模式
}
操作步骤:
1. 停止看门狗定时器。
2. 配置 ADC10 控制寄存器,选择内部温度传感器通道并使能该通道。
3. 在无限循环中,启动 ADC 转换,进入低功耗模式等待转换完成。
4. 在 ADC 中断服务函数中,退出低功耗模式,后续可对转换结果进行处理。
4.3 WDT+ 示例(WatchDog Interrupt Flag)
在 CCS 中使用 WDT+ 作为定时器生成中断的代码:
#include <msp430.h>
volatile unsigned int counter = 0;
void main(void)
{
WDTCTL = WDTPW + WDTTMSEL + WDTCNTCL + WDTSSEL_1; // 配置 WDT+ 为定时器模式
IE1 |= WDTIE; // 使能 WDT 中断
__bis_SR_register(LPM0_bits + GIE); // 进入低功耗模式并使能全局中断
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
counter++;
// 处理中断事件
}
操作步骤:
1. 配置 WDT+ 控制寄存器,将其设置为定时器模式。
2. 使能 WDT 中断。
3. 进入低功耗模式并使能全局中断。
4. 在 WDT 中断服务函数中,对计数器进行操作,可根据需求处理中断事件。
5. 开发流程总结
以下是使用 CCS 开发 MSP430 微控制器的流程图:
graph TD;
A[下载安装 CCS] --> B[选择工作区];
B --> C[创建新项目];
C --> D[选择微控制器和项目类型];
D --> E[编写代码];
E --> F[编译代码];
F --> G[上传代码到微控制器];
G --> H[调试或运行代码];
操作步骤:
1. 从德州仪器官网下载并安装 CCS。
2. 启动 CCS 时选择合适的工作区。
3. 创建新项目,选择微控制器和项目类型。
4. 在 main.c 文件中编写代码。
5. 编译代码,检查是否有语法错误。
6. 将编译好的代码上传到微控制器。
7. 可选择调试代码或直接运行代码。
使用 Energia 开发的流程如下:
graph TD;
A[下载安装 Energia] --> B[选择开发板和端口];
B --> C[编写代码];
C --> D[保存代码];
D --> E[编译代码];
E --> F[上传代码到微控制器];
F --> G[运行代码];
操作步骤:
1. 从官网下载并安装 Energia。
2. 启动 Energia 后,选择合适的开发板和端口。
3. 在 setup 和 loop 函数中编写代码。
4. 保存代码。
5. 编译代码,确保无语法错误。
6. 将代码上传到微控制器。
7. 微控制器开始运行代码。
6. 总结与展望
通过对不同 LaunchPad、集成开发环境以及 MSP430G2553 微控制器各种外设示例的介绍和分析,我们对 MSP430 微控制器的开发有了全面的了解。无论是使用 CCS 还是 Energia,都能方便地进行代码编写、编译和上传。在实际开发中,可以根据项目需求选择合适的开发板和开发环境,利用微控制器的各种外设实现不同的功能。
未来,随着技术的不断发展,MSP430 微控制器可能会有更多的应用场景和功能扩展。例如,在物联网领域,MSP430 可以作为低功耗节点,实现数据的采集和传输;在工业控制领域,其丰富的外设可以满足各种控制需求。我们可以持续关注相关技术的发展,不断探索 MSP430 微控制器的更多可能性。
同时,对于开发者来说,不断学习和实践是提高开发能力的关键。可以通过阅读官方文档、参考示例代码、参与技术论坛等方式,深入了解 MSP430 微控制器的原理和应用,从而开发出更加优秀的项目。
更多推荐



所有评论(0)