MSP430G2553微控制器:低功耗特性与时钟系统解析

版权申诉
0 下载量 4 浏览量 更新于2024-07-01 收藏 103KB DOC 举报
"MSP430G2553学习笔记(数据手册).doc" MSP430G2553是德州仪器(Texas Instruments)推出的一款超低功耗微控制器,它属于MSP430系列。该芯片特别适合于电池供电的便携式应用,如传感器节点、智能仪表和消费电子设备。以下是对MSP430G2553的关键特性、性能参数和时钟系统的详细说明: 1. **性能参数**: - 工作电压范围:1.8伏到3.6伏,这使得它能够适应各种电源条件。 - 5种低功耗模式:运行模式、空闲模式、待机模式、掉电模式和关闭模式,这些模式使得在不同应用场景下可以有效地管理能耗。 - 架构:16位精简指令集计算(RISC)架构,具有高效的指令执行能力,指令周期为62.5纳秒。 - 超低功耗特性:在不同的工作模式下,功耗分别为运行模式230微安、待机模式0.5微安和关闭模式0.1微安。快速唤醒功能可在不到1微秒的时间内从待机模式恢复到运行模式。 2. **时钟系统**: - 基本时钟模块(Basic Clock Module, BCS)提供多种时钟源,包括内部频率可达16MHz的四种校准频率,一个内部低功耗LF振荡器,支持32.768kHz晶体,以及外部数字时钟源。 - 寄存器控制:DCOCTL、BCSCTL1、BCSCTL2和BCSCTL3用于控制时钟频率和分频。例如,DCOCTL中的DCOx和MODx决定DCO频率,BCSCTL1的RSELx和DIVAx设定ACLK分频,BCSCTL2的SELMx和DIVMx选择MCLK的来源和分频,而SELS和DIVSx则控制SMCLK。 3. **模拟和数字功能**: - 两个16位Timer_A,每个都有三个捕获/比较寄存器,适用于定时和计数任务。 - 片上比较器可用于模拟信号比较或斜率模数转换,这对于模拟到数字转换(A/D)至关重要。 - 10位200千样本每秒(ksps)的A/D转换器,具备内部基准、采样及保持和自动扫描功能,简化了数字信号处理。 4. **存储和I/O**: - 内置16KB闪存用于程序存储,512字节的RAM供运行时数据使用。 - 提供16个I/O端口,但要注意MSP430G2553不包含P3口。 在进行MSP430G2553的开发和应用时,理解这些参数和特性至关重要。数据手册是编程和调试的必备参考资料,包含了详细的硬件信息和技术规格,有助于开发者充分利用MSP430G2553的优势。在设计电路和编写代码时,必须考虑这些参数以优化性能和降低功耗。
2015-07-20 上传
void mcu_init() { WDTCTL = WDTPW + WDTHOLD; WDTCTL=WDTPW+WDTHOLD; BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ; BCSCTL3|=LFXT1S_0; IFG1&=~OFIFG; BCSCTL2 |=SELM_1 + DIVM_0; lcd_port_dir|=RST+SCE+D_C+DIN+SCK; lcd_port_out=RST+SCE+D_C+DIN+SCK; //lcd_back_dir|=BIT4; //cd_back_out|=BIT4; } void lcd_write(uchar dat,uchar cmd) { uchar i; lcd_port_out&=~SCE; if(cmd) lcd_port_out|=D_C; else lcd_port_out&=~D_C; for(i=0;i<8;i++) { if(dat&0x80) lcd_port_out|=DIN; else lcd_port_out&=~DIN; dat<<=1; lcd_port_out&=~SCK; lcd_port_out|=SCK; } lcd_port_out|=SCE; } ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// //LCD_init: LCD初始化 void LCD_init(void) { lcd_port_out&=~RST; delay_1ms(); lcd_port_out|=RST; delay_1ms(); lcd_port_out&=~SCE; delay_1ms(); lcd_port_out|=SCE; delay_1ms(); lcd_write(0x21,0);//初始化Lcd,功能设定使用扩充指令 lcd_write(0xd0,0);//设定液晶偏置电压 lcd_write(0x06,0); lcd_write(0x13,0); lcd_write(0x20,0);//使用基本指令 水平寻址 lcd_write(0x0C,0);//设定显示模式,正常显示 //lcd_write0x0D,0); //设定显示模式,反白显示 lcd_port_out&=~SCE;//选择芯片SCE=0; } ///////////////////////////////////////////////////////////// void lcd_s_xy(uchar x,uchar y) { lcd_write(0x40|y,0); lcd_write(0x80|x,0); } void LCD_Clear(void) { uchar x; uchar y; lcd_s_xy(0,0); lcd_write(0x0c,0); lcd_write(0x80,0); for(y=0;y<=5;y++) { for(x=0;x<=83;x++) { lcd_write(0x00,1); } } } void display_ASIll(uchar s_x,uchar s_y,uchar ASI) { uchar i; lcd_s_xy(s_x*8,s_y); for(i=0;i<8;i++) { lcd_write(nAsciiDot[ASI-0X20][i],1); } lcd_s_xy(s_x*8,s_y+1); for(i=8;i<16;i++) { lcd_write(nAsciiDot[ASI-0X20][i],1); } } void Display_hz(uchar S_X,uchar S_Y,uchar n)///汉字显示函数S_X为x坐标;y为纵坐标;n为显示第几个汉字; { uchar i,j; uchar dx; lcd_s_xy( S_X*16, S_Y); for(i=0;i<16;i++) { dx=Chinese_table[i+n*32]; lcd_write(dx,1); } lcd_s_xy( S_X*16, S_Y+1); for(j=0;j<16;j++) { dx=Chinese_table[j+16+n*32]; lcd_write(dx,1); } } void LCD_Write_str68(uchar x, uchar y,uchar *string) { uchar i; lcd_s_xy(x*8,y); while(!(*string=='\0')) { for(i=0; i<6;i++) { lcd_write(font6x8[*string-0x20][i],1); } string++; } } /*void lcd_draw_bmp(uchar x,uchar y,const uchar *map,uchar pin_x_y,uchar pin_x_x) { uint n,i; uchar row; if(pin_x_y%8==0) row=pin_x_y/8; else row=pin_x_y/8+1; lcd_s_xy(x,y); for(n=0;n<row;n++) for(i=0;i< pin_x_x;i++) { lcd_s_xy(x+i,y+n); lcd_write(map[i+n*pin_x_x],1); } }*/ void lcd_draw_bmp(uchar x,uchar y,const uchar map[][84],uchar pin_x_y,uchar pin_x_x) { uint n,i; uchar row; if(pin_x_y%8==0) row=pin_x_y/8; else row=pin_x_y/8+1; lcd_s_xy(x,y); for(n=0;n<row;n++) for(i=0;i< pin_x_x;i++) { lcd_s_xy(x+i,y+n); lcd_write(map[n][i],1);////*(p+i)等价与p[i] } }