【转贴】总结下开发调试MSP430系列的一些另类问题 ——备份下以便查阅

 从99年第10届全国单片机展示会上(当时在杭州大学举办的)认识MSP430,呵呵,那个时候FLASH的只有F1101,F1121等初级芯片,觉得这个玩意还有点特殊,尤其可以JTAG调试,免了个编程器

从2002年开始折腾这个系列,低功耗,流行的SOC结构,适合做智能仪表的MSP430开始吸引我了.呵呵,下面我将说说开发至今遇到的一些另类问题,跟大家切磋下.

不管是N年前的1.21/1.26版本,还是现在的3.10/3.40版本,IAR一直是我用的最多的一个编译/调试器,玩MSP430不可能不接触到这个 那我就以IAR调试为例来说说了咯

原始级 问题,一般是刚开始入门的哥们姐们要遇到的问题

1, 接上仿真器,发现不能下载,这个问题想必大家都有遇到过,IAR提示找不到目标!??

    可能的原因:  A 并口驱动能力不足,在电脑的BIOS界面下设置成ECP或者       ECP+EPP模式

                      B JTAG线太长,一般超过20CM不推荐,而且这个线最好不要交叉缠绕,会影响实时在线调试

                      C 你的负载太大,一般功耗相对比较大,电流超过20MA以上的板子,建议用外接电源,要不光靠并口那点驱动能力,那MCU电压就要被拉低到不能写FLASH了,呵呵

2, 程序下载到一半,突然告警并报错,说某某地址写不进去!??倒~~我开始也以为是FLASH被写坏了,呵呵,其实MSP430的FLSH没这么脆弱

   可能的原因:  A 芯片的复位电路引起的,在写FLASH的时候,会造成系统电压的一些波动,可能导致芯片复位,而为什么都是写到这个地址才错,那是IAR的问题,改用BSL再烧一边,就可以克服了

                     B 芯片有可能死机了,给断电,拔掉JTAG没,稍后再试,一般没有问题

                     C 如果都不是上述的方法能解决的,告诉你一个更酷的办法,给芯片上电,电压=3.6V,重新写一次,一定OK.为什么,写不进FLASH主要是F1XX系列的写FLASH电压不能低于2.7V,一般2.5V以下才不能真正工作,因此用3.6V电压,什么样的片子都能写回来(BTW,到现在为止,我还没写坏过一片MSP430的FLASH)

3, 关于3.40以上版本的仿真器设置问题.

说实在的,真正开发起来,我都不太愿意随便换IAR的版本,有些语法不兼容,有些设置不一样,不花点时间开 WHAT'S NEW,就要到BBS上去发贴了,呵呵

最近装了3.40的 限制版,一路NEXT,好象没什么特别的地方,装好后发现芯片的选择余地多了很多,包括了F2XX,N多种类,哈哈再上硬件FET接着跑个DEMO看看,居然不成,报错!!

原来:  在仿真栏目里选好 FET 硬件仿真以后,还有一项是访真器的选择,我倒~

没仔细看的哥们姐们一定纳闷,为啥还要搞个 LPT || J-LINK || TI-USB ,更滑稽的是IAR居然认为现在大伙都有米买USB的FET,默认选项是 TI-USB,那就是这个问题咯,改成 LPT(并口FET) 就完事了。

另类级问题

1, F1611大数组定义,不能正常运行的问题

   相信有不少朋友已经用上了F1611,这个RAM大大的MSP,呵呵.那就有可能会遇到 RAM中定义的变量/数组在超过一个极限的时候,MSP程序不能正常运行的现象吧.一般初步判断,可以用I/O输出电平 来 确定程序进程.这样可以非常方便的知道该问题是由于WDT造成的,哈哈 (RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位)

下面来看下解决的办法:

A  对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM

B  修改IAR中Cstartup.S43文件中__program_start子程序,增加一个关闭WDT的操作或者设置WDT时间长度超过32MS

C  在Project--Options--Linker--Config中选择 Override default programe,并将
Entry lib 设置成 __program_start

上述是已知解决1611RAM初始化时间超WDT默认而复位的解决方法,如果用汇编,则没有这个问题

2,SVS导致MSP "坏死" 问题

去年开发一款仪表,用上了F425,只怪这个玩意口线太少,只能把能用上的功能模块都赶上了.SVS在F42X里可是个不错的模块,外部设计可以节约一个VD,成本和空间,呵呵

意外的是,我将这个SVS的电压设置在3.3V,结果一次JTAG写入后,那板子便没有再起来工作,刚开始以为真的写废了这个MSP,后来想判断下MCU是否还能工作,接上电源和电流表,发现电流有周期性跳跃----倒~~该MCU正在被SVS复位中

重新加电压,超过3.3V,修改设置,重写FLASH,一切搞定

希望能给用SVS和SVS+的朋友起个提醒的作用,呵呵,有时这个问题还不太容易被发现

3,I/O电压供电居然也行?

在设计低功耗设备时,有时我们经常用MCU的引脚给一些IC供电,这个方案我最早用在PIC的单片机上,前人的经验,照着抄没错 MSP430当然也没问题

有兴趣的朋友不仿可以试试,DVCC/AVCC不接,直接从某个I/O加电压,MCU照样能跑哦.这个问题大家要注意的,可能是好事,也可能很麻烦

但是在做硬件设计的时候一定要想清楚了,I/O可以供电给其他IC,当然也能从其他IC中取电,在一些设计中,MCU的静态功耗降不下来,尤其是设计变送器,4`20MA双线制设备上,要谨慎处理.

 

 

附上今天自己发现的问题:

#include "msp430x41x2.h"
#define uchar unsigned char


const unsigned char macAddr[3] @0x1080 ={0x00,0x00,0x43};

const unsigned char longAddr[4] @0x1050 ={0x00,0x00,0x97,0x44};

const unsigned char ray[4] @0x10c0 ={0x00,0x00,0x97,0x43};

//const unsigned char info0Array[10] @0x1000  = {0,1,2,3,4,5,6,7,8,9};
const  unsigned char gamma @"INFO"=3;

unsigned char mystr1[3];

unsigned char mystr2[4];

main()

{


mystr1[1]=macAddr[2];

mystr2[2]=longAddr[3];

mystr1[2]=ray[0];

mystr1[0]=gamma;
}

@1000
03
@1050
00 00 97 44
@1080
00 00 00
@10C0
00 00 97 43
@C000
31 40 00 04 3C 40 00 02 3D 40 07 00 B0 12 34 C0
B0 12 18 C0 B0 12 46 C0 D2 42 82 10 01 02 D2 42
53 10 05 02 D2 42 C0 10 02 02 D2 42 00 10 00 02
0C 43 30 41 0F 4C 0F 5D 03 3C CC 43 00 00 1C 53
0C 9F FB 23 30 41 30 40 4A C0 30 40 4E C0 FF 3F
@FFFE
00 C0
q

---------做一些修改后,编译的结果

main()

{


mystr1[1]=macAddr[2];

//mystr2[2]=longAddr[3]; //注释掉了这行

mystr1[2]=ray[0];

mystr1[0]=gamma;
}

 

@1000
03
@1080
00 00 43
@10C0
00 00 97 43
@C000
31 40 00 04 3C 40 00 02 3D 40 03 00 B0 12 2E C0
B0 12 18 C0 B0 12 40 C0 D2 42 82 10 01 02 D2 42
C0 10 02 02 D2 42 00 10 00 02 0C 43 30 41 0F 4C
0F 5D 03 3C CC 43 00 00 1C 53 0C 9F FB 23 30 41
30 40 44 C0 30 40 48 C0 FF 3F
@FFFE
00 C0
q

定义到信息段中的数据,如果在程序中没有被使用则编译时不会被编译到TXT文件中。这个可能是优化的结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
328254178Msp430F149.rar AD_DA.rar e96e317f-d9ab-41e5-b87f-ebc3f6131c4b.zip MSP430-149单片机应用实例(USB实例).rar MSP430-F149对应的液晶程序(描述详细,易于调用).rar MSP430F149 AD转换C程序.rar MSP430F149 C语言驱动DS18B20.zip MSP430F149 GSM基本控制,初始化接收短息,解读短信.rar MSP430F149+1602数码显示和实时时钟.rar MSP430F149+DS1302+UART程序可以用.rar MSP430F149,IAR,ADC采样之后对太阳点光源进行跟踪.rar MSP430F149--485串行通信.rar MSP430F149-SHT15传感器例程(,随时调用,含注释) (1).rar MSP430F149-SHT15传感器例程(,随时调用,含注释).rar MSP430F149下的s级别,us级别,ms级别延时.rar MSP430F149单片机与RF2401硬件SPI无线通信 (1).zip MSP430F149单片机与RF2401硬件SPI无线通信.zip MSP430F149单片机定时器A的PWM输出程序.rar MSP430F149单片机对1602液晶进行的简单测试.rar MSP430F149单片机对1604液晶进行的简单操作.rar MSP430F149单片机对PS2键盘的控制程序和源码.rar MSP430F149单片机对继电器的控制程序和源码.rar MSP430F149单片机控制LED全彩显示屏的某一行列数据传输控制显示程序.rar MSP430F149单片机模拟IIC和DS18B20通信进行测试温度代码.rar MSP430F149单片机的Flash程序.rar MSP430F149可以通过串口显示温度传感器的数值.rar MSP430F149开发板例程(控制8个LED闪烁).rar MSP430f149控制LCD12864显示汉字、字母.zip MSP430F149温度测量.zip MSP430F149的无线模块24L01程序.rar MSP430F149跑ADC和USB好用的代码.rar MSP430F149通过SPI接口控制ADS1216.zip MSP430x14x控制SED1335驱动320×240屏.rar MSP430x14x系列单片机实现了对EEPROM的读写测试.rar MSP430内置温度传感器的C语言程序.zip MSP430单片机 串口像PC发送数据.rar MSP43F149的USB测试程序.rar mulu.txt RF24L01-AD.rar RF24L01-MCU-PC通信例程.rar RF24L01-PC-MCU通信例程.rar RF24L01无线温度例程.rar RF24L01遥控例程.rar 基于MSP430F149为主芯片下的红外线解码资料源程序.zip 基于MSP430F149单片机中看门狗电路的中断实验.zip 基于MSP430F149单片机的1602程序代码.zip 基于MSP430F149单片机的nRF24L01无线通信程序.rar 基于MSP430F149单片机的串口0驱动程序.rar 基于MSP430F149单片机的温湿度传感器SHT1X驱动程序.rar 基于MSP430F149的12864的显示图片.rar 基于MSP430F149的数字钟源代码(以1602LCD液晶显示).rar 基于MSP430F149的触摸手写程序.zip 展示了MSP430F14x单片机的AD操作.rar 德州仪器MSP430F1449-F169的LCD12864测试程序 (1).rar 德州仪器MSP430F1449-F169的LCD12864测试程序.rar 德州仪器MSP430F149-F169初学者常用代码.rar 演示了如何操作MSP430F149单片机的DMA操作.rar 演示了如何操作MSP430F149的I2C功能.rar

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值