20
MSP340 LaunchPad介绍 LaunchPad 是一款 适用于TIMSP430G2xx 系列 产品的完整开发解 决方案,可支持多 20 个引脚,提供 板上Flash 仿真工 具,以直接连接至 PC 轻松进行编程、 调试和评估。

MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

MSP340 LaunchPad介绍 LaunchPad 是一款适用于TI的MSP430G2xx 系列产品的完整开发解决方案,可支持多达20 个引脚,提供板上Flash 仿真工具,以直接连接至PC 轻松进行编程、调试和评估。

Page 2: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

目录 一、基本时钟系统 二、通用IO 三、中断 四、定时器 五、ADC10 六、课程软件任务介绍

Page 3: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

LAUNCHPAD时钟系统包括:VLO、LFXT、DCO • 超低功耗/低频振荡器 (VLO) – 4 – 20kHz (典型值12kHz) – 500nA 待机流耗 – 0.5%/°C and 4%/V 漂移 • 外接晶体振荡器(LFXT1) – 片内可编程负载电容 – 故障保护 OSC_Fault – 脉冲滤波器 • 数字控制振荡器(DCO) – 0-to-16MHz – + 3% 容差 – 出厂校准(Flash I.M.)

MCLKCPU

SMCLKPeripherals

ACLKPeripherals

16MHzDCO

Min. Puls Filter

VLO

OSC_Fault

上电后: MCLK 和 SMCLK 由DCOCLK 提供(约1.1 MHz) ACLK 由 LFXT1CLK 提供(LF 模式,6pF内部负载电容)

辅助时钟

主系统时钟

子系统时钟

32768Hz

一、时钟系统

Page 4: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

// 设定 MCLK BCSCTL2 |= SELM_1 + DIVM_3; // 设置 MCLK

对MCLK,即指令运行的时钟源进行分频 DIVM_0: MCLK=1M DIVM_1: MCLK=1M/2 DIVM_2: MCLK=1M/4 DIVM_3: MCLK=1M/8

// 设置DCO为1MHz

BCSCTL1 = CALBC1_1MHZ;

DCOCTL = CALDCO_1MHZ;

对MCLK的时钟源进行选择 SELM_0: MCLK选择DCOCLK SELM_1 : MCLK选择DCOCLK SELM_2 : MCLK选择XT2CLK/LFXTCLK SELM_3: MCLK选择LFXTCLK

设置时钟涉及到寄存器BCSCTL1、BCSCTL2的设置,具体见用户说明说,下面举例设置DOC为1MHz及系统主时钟MCLK。

Page 5: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

二、通用IO 1、P口端口寄存器: (1)、PxDIR 输入/输出方向寄存器 (0:输入模式 1:输出模式) (2)、PxIN 输入寄存器 输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的

内容知道I/O口的输入信号。 (3)、PxOUT 输出寄存器 寄存器内的内容不会受引脚方向改变的影响。 (4)、PxIFG 中断标志寄存器 (0:没有中断请求 1:有中断请求) 该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求; 这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复

位; 外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接

受; (5)、PxIES 中断触发沿选择寄存器 (0:上升沿中断 1:下降沿中断) (6)、PxSEL 功能选择寄存器 (0:选择引脚为I/O端口 1:选择引脚为外围模块功能) (7)、PxREN 上拉/下拉电阻使能寄存器 (0:禁止 1:使能)

Page 6: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

2、P口端口功能示意图:

Page 7: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

3、基本操作: (1)、所有P口都可作为通用IO口使用 (2)、所有P口都可进行字节操作和位操作 按字节操作: 例 : P1DIR=0xff; //将P1口作为输出口 PIOUT=0x20; // P1口输出0x20 P1DIR=0x00; //将P1口作为输入口 data=P1IN //读取P1口外部输入值 按位操作: 例: P1DIR=BIT0; //将P1.0作为输出口 P1OUT|=BIT0; //P1.0输出1 P1OUT&=~BIT0; //P1.0输出0 P1DIR&=~BIT0 //将P1.0口作为输入 data=P1IN&BIT0 //读取P1.0口外部输入值

Page 8: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

三、中断

1、中断源: 外部中断:P1、P2、定时器中断、看门狗定时器中断、串口中断、A/D转换 中断、比较器中断。

2、中断的 一般设置: (1)、打开、关闭局部中断: 打开局部中断一般是给想关的特殊功能寄存器相关位置1 以P1口外部中断为例: 打开局部中断: P1IE|=BIT0;//打开P1.0外部中断 ,BIT0的值为0x01,即把P1IE的第一位置1

Page 9: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

关闭局部中断一般是给想关的特殊功能寄存器相关位置0 同样以P1口外部中断为例: 关闭局部中断: P1IE&=~BIT0;//关闭P1.0外部中断 (2)、打开、关闭全局中断:

_EINT();//打开总中断,相当于51的EA=1; _DINT();//关闭总中断,相当于51的EA=0; (3)、各中断向量Interrupt Vectors: • PORT1_VECTOR • PORT2_VECTOR • ADC10_VECTOR • TIMER0_VECTOR • TIMER0_A0_VECTOR • TIMER0_A1_VECTOR • TIMER1_A0_VECTOR • TIMER1_A1_VECTOR • WDT_VECTOR

Page 10: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

(4)、中断应用程序举例(外部中断): void interrupt_initial() { P1DIR&=~BIT7; //P1.7为输入 P1IE|=0x80; //P1.7中断允许 P1IES|=0x00; //P1.7上升沿触发 P1IFG=0; //P1.7中断标志清除,对于多源中断必须先清中断标志再打开中断 _EINT(); //总中断允许 } #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { P1IFG&=~BIT7; //P1.7中断标志清除 /*在此写中断服务子程序*/ } • #pragma vector - 下面的函数是一个用于所列矢量的中断

• __interrupt void - 识别中断名称

Page 11: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

四、定时器

Compararator 2

CCI

CountMode

SetTAIFG

TACCR2

ACLKSMCLK

TACLK

INCLK

GNDVCC

CCI2ACCI2B

SetCCIFG2

OutputUnit2

CCR0

SCCI Y AEN

CCR1

CCR2

CaptureMode

16-bit TimerTAR

异步16位定时器/计数器 连续、递增-递减、递增计

数模式 3个捕获/比较寄存器 PWM 输出 中断向量寄存器,实现快速

中断响应 可触发DMA 多个时钟源可选 所有430均有Timer_A

Page 12: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

增计数模式: 捕获/比较寄存器CCR0用作Timer_A增计数模式的周 期寄存器,因为CCR0为16位寄存器,所以该模式 适用于定时周期小于65536的连续计数情况。计数器 TAR可以增计数到CCR0的值,当计数值与CCR0的 值相等时,定时器复位,并从0开始重新计数。

本次课程设计中,采用增计数模式产生PWM波

Page 13: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

增计数模式:

void zengjishu() { TACTL=TASSEL1+TACLR; //选择计数时钟为ACLK,将计数器TAR清零 CCTL0=CCIE; //使能中断 CCR0=200; //计数终值,方波频率为:32768/200/2 TACTL|=MC_1; //选择Timer_A为增计数模式 P1DIR|=BIT0; //P1.0作为输出 _EINT(); //使能总中断 } #pragma vertor =TIMERA0_VECTOR __interrupt void Timer_A(void) { P1OUT^=0X01; //P1.0取反 }

例程:

0FFFFh

0h

增计数模式

Page 14: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

#include"in430.h" #include "msp430g2553.h" static unsigned char temp = 0xaa; void main( void ) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P1DIR = 0xff; //设定P1口为输出方式 P1OUT = 0xff; //给P1口赋初始值 TA0CCTL0 = CCIE; //打开中断 (Timer0_A3 Capture/Compare Control 0 ) TA0CCR0 = 50000; //设定计数变量 TA0CTL = TASSEL_2 + MC_2; //定时器选择时钟SMCLK,使用模式二连续计数方式 _EINT(); //开总中断 while(1) { LPM0; } //开启低功耗模式0,进入低功耗模式,等待中断唤醒 } #pragma vector = TIMER0_A0_VECTOR __interrupt void time1(void) { temp = ~temp; //取反 P1OUT = temp; //P1口赋值 }

例程

Page 15: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

五、ADC10 一、主要特点: 1、 10位转换精度。 2、有多种时钟源可供选择,内带时钟发生器。 3、配有6个外部通道和2个内部通道。 4、内置参考电源,并且参考电压Vref有8种组合。 5、采样速度快,最快200Ks/s。 6、四种工作模式: 1、单通道单次转换模式: CONSEQ_0。 2、单通道多次转换模式: CONSEQ_2。 3、序列通道单次转换模式:CONSEQ_1 。 4、序列通道多次转换模式:CONSEQ_3。

Page 16: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

例程: P1SEL&=0x20; //使能A/D通道A5; ADC10CTL0 = ADC10SHT_1+ ADC10ON+SREF_1+REF2_5V+REFON+MSC; // 打开ADC10内核,确定采样周期为8*ADC10OSC/2,选择内部参考电压为2.5v; ADC10CTL1 = INCH_5+ADC10DIV_1+CONSEQ_2; // input A5模拟信号输入选择通道A5即P1.5,设置为单通道多次转换模式,分频因子为2 ADC10AE0 |= BIT5; // 使P1.5允许AD模拟输入信号 ADC10CTL0|=ENC; //使能转换; ADC10CTL0|=ADC10SC; //开始转换;

Page 17: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

单片机系统 本课程设计是把输入电压通过buck电路降压给锂电池充电,锂电池电压输出端通过boost电路升压输入到逆变桥得到交流电。有三处用到单片机的地方:buck电路降压、boost电路升压和逆变桥触发输入信号。前两者通过闭环调节取得给定电压,逆变桥触发输入信号则是由单片机输出SPWM波。 充电部分 软件设计

Page 18: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

定时器中断模块 设置定时器中断TIMER_A (1) 它的工作方式和周期,此处设为使用 32位的周期定时器 TIMER1_A0,周期为 1ms。 (2) 使能定时器中断。 (3) 使能定时器 在定时器中断中,对单片机原始频率8MHz 进行8 分频,再乘以1000 成为TIMER1-A0 的周期1ms,每触发一次中断就计数加1,当计数500 下,即500ms 后,对转换好的采 样值进行一次处理,进行PI 调节控制输出PWM 波的占空比。

Page 19: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

三段式充电:

Page 20: MSP340 LaunchPad介绍eeilab.sjtu.edu.cn/userfiles/files/实验教学2019/EE340 嵌入式系统应用技术... · bcsctl1、bcsctl2的设置,具 体见用户说明说,下面举例设置doc为1mhz及系统主时

SPWM

输出SPWM则通过SPWM数组表实现,数组表有足够多的数值,按照正弦规律变化,实现正弦波的近似输出。当数字表的元素越多,精度越高。