msp430串口调试全记录

发布者:Qianfeng最新更新时间:2016-08-18 来源: eefocus关键字:msp430  串口调试 手机看文章 扫描二维码
随时随地手机看文章
先交代一下相关背景:

Mcu型号:MS9430F149;

实验板:自制(有些毛病,稍后坦白:)

开发环境:IAR Embedded Workbench V2.10A+串口调试助手;

试验仪器:泰克数字示波器,万用表等;

笔者的底细:马上步入而立之年,学习点新东西,已感到有些力不从心了:)以前有些51基础,430是第一次搞!当然这些都是业余爱好,以乐以闹为主:)

 

PCB以前倒是做过一些,不过都是51的简单板子,线也少,在protel99se下自动布线后再手动调整一下就蒙混过关,作出的板子虽然不太漂亮但也勉强实现功能,呵呵。这次做这块430实验板完全手动布线,大约做了两天,眼睛都花花了:(等到拿到板子一调试发现还是有几处粗心大意的地方,无奈只能飞线:(

 

转入正题吧,开始串口的收发数据调试:

找了根现成的串口线,和pc连接好,并设置好《串口调试助手》参数,如图。运行,没反应,一模MAX3232有些烫手,赶紧关闭电源,停止!经仔细检查发现9针串口DB9封装错了,应该是DB/M我用的是DB/F一个公头一个母头线序不一样,补救措施:将串口拆下来焊接在底层(Bottom Layer)正好就对应上了,不过当时DB9焊的賳结实,拆下来太困难,于是自己找了两个串口母头和一段线自己做一根串口线,有了前车之鉴这次特别小心别2、3对调,做好后又反复测了几次,没问题了,接好进行二进宫!

接上实验板用示波器测串口的2、3脚(RS232电平)没有波形,拔下来直接测有波形,将2、3短接<串口调试助手接收区>显示发送的内容,没问题。如此一看可能是板子上的MAX3232刚才被烧毁了,拨拉下来再来一片新的,有波形了,但还是没达到设计要求。

用示波器测430的串口1的TXD1端(P3.6)发现没有波形,看来根本没启动串口发送程序,将程序(▲)修改再测,恩不错有波形了经过MAX3232后也有波形了,按常理说这时应该在<串口调试助手接收区>显示接收内容了,但是让人崩溃的是依旧没有:(

以为是MAX3232的硬件(包括4个电容,典型值是0.1uF,当时没找到0.1的就用4.7uF的代替了)出问题了,或者是RS232判决电平的毛病,这时在网上搜到了如下资料:

MAX232/MAX202接口输出的电平为何比计算机输出的RS-232电平低?

由于计算机内部的RS-232接口多数采用±12V供电的接口芯片,而MAX232/MAX202及其它多数Maxim的RS-232接口都是采用单电源(+3.3V或+5V)供电,由内部的电荷泵电路(倍压和倍压反相两种方式)产生接口所需的电源,这样就简化了电源设计。由于工作在倍压和倍压反相的电荷泵输出电压最高为±2×Vin(空载时),且带载能力有限,不管怎样,多数Maxim接口驱动器还是能够保证幅值在±5V以上,以满足RS-232接口端±3V的接收门限值。

没问题啊,我测到的波形在±6V左右啊,正在一筹莫展之际,想到了波特率是否一致的问题,从示波器观察PC发给430的1Bit数据的宽度约100us,频率f=10k和设定的9600非常接近,没问题;在测430发给PC的1Bit数据宽度为6.4us,频率f=156250,于是发现问题所在,重新检查源程序时钟源选择,发现程序(▲2)的疏忽,更改后,一切ok,再看<串口调试助手接收区>正反复的显示“MSP430 MSP430 MSP430 MSP430…”

#include  

 

void init_system(void);

void init_UART(void);

void transmit_data(void);

 

char Data[6]="MSP430";

//char Data[6]={0xff,0xff,0xff,0x55,0xff,0xff};

 

void main(void)

{

  init_system();

  while(1)

  {

     transmit_data();

  }

}

void init_system(void)

{

 WDTCTL=WDTPW+WDTHOLD;

 init_UART();

}

void init_UART(void)

{

 //P3SEL|=UART1_TX+UART1_RX;

 P3SEL|=0xc0;

 P3DIR |= 0x40; // 串口发送数据端口为输出,接收数据端口为输入?

 UCTL1=SWRST;         //reset cotrol bit in UCTL1 ?

 //UTCTL0|=SSEL0;       //ACLK (▲2)

 UTCTL1|=SSEL0;       //ACLK

 UBR01=0x03;          //bode rate 9600.

 UBR11=0x00;

 UMCTL1=0x4a;

 UCTL1=CHAR;          //8 bits data format. enable UART

 IFG2&=~UTXIFG1;

 IE2|=URXIE1;       //enable receive interrupt.

 ME2|=URXE1+UTXE1;

}

void transmit_data(void)

{

  unsigned char i;

  for(i=0;i<6;i++)

  {

   TXBUF1=Data[i];

   while((UTCTL1&TXEPT)!=TXEPT);

  }

}

//***************************************************************************

//ISR for uart1 receive a byte.

//***************************************************************************

#pragma vector=UART1RX_VECTOR

__interrupt void usart1_rx (void)

{

  if (RXBUF1 =='u')                  // 'u' received?

  {

    _NOP();

    //TXBUF1 = string1[i++];                     

  }

 }

以下是网上找到的资料:

使用ACLK为时钟源(32768Hz)做9600bps误差在±13%左右,尝试使用SMCLK为时钟源(默认情况下外部晶振为32768Hz时,SMCLK为1048576Hz)。 如下设置后,波特率误差小于±1%。不过此时CPU低功耗不能使用LPM3/LPM4。
UTCTL0 = SSEL1;     // UCLK = SMCLK
UBR00 = 0x6D;       // 1M/9600 波特率寄存器低字节
UBR10 = 0x00;      // 1M/9600 波特率寄存器高字节
UMCTL0 = 0x10;     // 波特率调整值

总结:通过这次430的串口调试过程,发现这个东西容易之处在于,任何一本430书都能找到串口收发的例子,而且也比较简单易懂;难处在于:涉及到软硬两方面的东西,一旦发现问题得先判断是硬毛病还是软错误,尤其对于象我这样第一次搞的处男,而且还是自制的实验板,出了问题简直是晕菜!!不过只要你不抛弃不放弃,再加上网路上众多高手的指点,相信调试成功只是时间的问题:)祝你成功!!

关键字:msp430  串口调试 引用地址:msp430串口调试全记录

上一篇:MSP430内部时钟(DCO)频率测量
下一篇:讨论移植51程序到430上时需要注意那些问题(2)

推荐阅读最新更新时间:2024-03-16 15:06

TI针对智能仪表测量推出16款全新MSP430 MCU
在欧美立法要求日益严格以及各种实施标准不断推出的背景下,公共设施公司正积极寻求符合相关标准的仪表测量解决方案,以充分满足严格的低能耗标准要求。为满足这些需求,德州仪器 (TI) 日前宣布推出 16 款针对电气仪表测量应用的最新超低功耗 MSP430 微处理器(MCU),进一步壮大了其智能仪表测量产品阵营。这些全新 MSP430F4xx 器件是高度集成型解决方案,可支持独立的模拟前端 (AFE) 需求,并可实现业界领先的高准确度,其误差不足 0.1%。 16 款全新 MSP430 仪表测量 MCU 的主要特性与优势: • 不断壮大的仪表测量产品系列新增 F471xx、Fx461x 以及 F44x 系列 MCU,可支持多种实施
[测试测量]
MSP430学习总结——UART串口
一、MSP430串口 我用的这个单片机是MSP430F5529,这个单片机有两个串口,分别是USCI_A0和USCI_A1,以下是关于MSP430串口的配置以及接收函数和发送函数。 二、串口配置 说到串口,那肯定离不开起始位、数据位、校验位、停止位以及波特率。 先来说一下常用的寄存器。 串口控制寄存器0 这个寄存器可以设置数据位,停止位和校验位等 串口控制寄存器1 这里可以设置时钟源和中断使能等 波特率设置寄存器 波特率设置涉及到三个寄存器UCA0BR,UCA0BR1,UCA0MCTL 具体的设置方法在芯片手册上有写,也可以参考一下这位大佬的博客https://blog.csdn.net/weixin_27070451
[单片机]
<font color='red'>MSP430</font>学习总结——UART串口
MSP430F1611周期图谱校正FFT
引 言 基于FFT的频谱分析方法可以从含有噪声的信号中提取有用的信息,在仪器仪表的数据处理中具有重要的应用价值。为了保证频谱分析的精度,往往进行多点的FFT运算,例如,1024点、2048点等,这样运算量大、所占内存也大,只有采用DSP(数字信号处理器)才能实现实时的处理。目前,在工业现场普遍使用的两线制、低功耗自动化仪表,由于仪表本身消耗电流必须控制在4 mA之内,所以无法采用DSP等运算能力强的芯片,只能采用低功耗单片机;而低功耗单片机的运算速度和内存容量都很有限,所以,至今未见用其进行多点数FFT运算的报道。为了能够用低功耗单片机实时做FFT运算,以提高自动化仪表信息处理的能力,我们用汇编语言编制FFT程序,在程序中用定
[单片机]
<font color='red'>MSP430</font>F1611周期图谱校正FFT
lcd12864驱动程序 用于MSP430
LCD函数库,可用于MSP430 单片机源程序如下: /* * LCD_BASIC_LIBRARY.C * * Created on: 2017年7月20日 * Author: Hasee */ #include msp430.h typedef unsigned char uchar; typedef unsigned int uint; #define LCD_DataIn P8DIR=0x00 //数据口输入模式 #define LCD_DataOut P8DIR=0xFF //数据口输出模式 #define LCD2MCU_Data P8IN //LCD向芯片输入数据 #define MCU2
[单片机]
如何使用Energia快速开发常见的MSP430/432LaunchPad
今天发现一个很好的开发MSP430单片机的IDE,感觉能够对大多数正在准备电赛和入门使用MSP430单片机的同学提供到很大的帮助,特意来发一份博客,将我收集的资料分享出来,需要的同学自取就可以了。 相信很多同学都听参加过电赛的学长说过Arduino,而今天的这份资料就是让大家使用Arduino的开发方式去开发MSP430。我是在Seeed发现的该方法,上面主要是介绍一款LaunchPad的扩展板,只是引出IO,想自制的也可以自制一块,也包括一些常见传感器使用的Demo,该教程我也会放在资料包里,官网链接为https://wiki.seeedstudio.com/cn/Grove_Base_BoosterPack/。 话不多说,
[单片机]
如何使用Energia快速开发常见的<font color='red'>MSP430</font>/432LaunchPad
MSP430单片机的AD转换
ADC12模块中是由以下部分组成:输入的16路模拟开关(外部8路,内部4路),ADC内部电压参考源,ADC12内核,ADC时钟源部分,采集与保持/触发源部分,ADC数据输出部分,ADC控制寄存器等组成。 四种采样模式: (1)单通道单次转换模式 (2)序列通道单词转换模式 (3)单通道多次转换模式 (4)序列通道多次转换模式 个人觉得(3)模式应该是使用较多的, 对选定的通道进行多次转换,直到关闭该功能或ENC=0。进行如下设置: x=CSStartAdd,指向转换开始地址 ADC12MEMx存放转换结果 ADC12MCTLx寄存器中定义了通道和参考电压 在这种模式下,改变转换模式,不必先停止转换,在当前正在进行的转换结束
[单片机]
<font color='red'>MSP430</font>单片机的AD转换
基于MSP430的湿度计及定标
对于商业应用FPGA还远没有达到取代单片机,甚至完全取代DSP的程度。随着FPGA的普及,学DSP的人越来越少,MCU又五花八门,ARM/CorteX有计算机的抢饭碗,学电子的大多都会选择FPGA。真正能接触到科技前沿的毫无例外全是FPGA,大多数人只能停留在商业层面。话虽如此,不过现今赚钱才是硬道理,行行都能出状元。其实单片机也有大智慧,不必一味的追求高科技。 实物图如下: 上位机软件GUI界面: 系统功能概述:该湿度计由湿度采集和显示两部分组成,显示部分通过串口排线与采集部分相连,并采用7段式LED显示湿度值,定标所需的最小二乘法直线拟合参数由上位机软件计算完成并将参数发回湿度计进行定标处理。软件的定标也分手动和自
[单片机]
基于<font color='red'>MSP430</font>的湿度计及定标
Keil软件仿真的串口调试技巧
引言 在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景。 在单片机编程中,串口占了很重要的地位。传统方式串口程序的调试,往往是利用专用的单片机硬件仿真器。在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。使用硬件仿真器的确是很有效的
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved