This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【活动结束】- 快来讲述您成功采用TI MCU的故事!我们热切期待ing!

Other Parts Discussed in Thread: OMAP3530, LM3S811, MSP430F147, CC2530, CC2430, AM3517, LM3S8962, TMS320F28335, ADS805, TLC5510, MSP430F149, MSP430F5438, TMS320F2812, TMS320F28027, CONTROLSUITE, MAX3232, CC2500, MSP430F2417, MSP430F2617, DXP, TMS320C6747, MSP430F1611, LM3S5632, MSP430F449, TMS320F2808, LM3S615, MSP430F2618, CC2420, MSP430F438, MSP430F435, BQ20Z80, BQ2050, BQ2060, OPA335, MSP430F2132, LM3S5749, MSP430F413, MSP430F425, MSP430G2211, TMS570LS20216, TMS320F2801, AM1810
在您的产品设计中,您是否有采用TI MCU的成功经历?也许是MSP430、也许是C2000,或Stellaris® ARM® Cortex™-M如果您有这样的成功故事,我们期待您的分享!

活动时间:即日到2012215

 

参与方式:可跟帖讲述
     采用TI MCU的设计经验总结和技巧心得;           
     采用TI MCU碰到的问题和后来的解决办法

 

 

参与评奖要求:
  1、所有故事均须为参与者原创;
  2、文字150字以上;
  3、描述清晰、具体。

 

 

奖品
一等奖1 : 拉杆电脑包一个9B96EVM板子一块F28035开发板(内置XDS100仿真器)
二等奖 2 : 蓝牙键盘
三等奖5名:  电脑背包
热心参与奖50(先到先得):8*20mm迷你望远镜  

一等奖、二等奖、三等奖分别由TI FAE团队评出。每个 ID 不限制参与次数,但每个 ID 只有 1 次获奖机会。

 

  • 在学校的时候开始接触TI DSP,后来进入第一家公司,学习做电源,但由于功率较小也没用上DSP,后来来到北京一家公司,大功率电源,都是DSP控制的,于是阔别多年的DSP又联系上了,呵

    呵。DSP当然要数TI的啦,稳定性高,资源丰富,平台成熟,而且供应商的支持力度也比较大(合众达的FAE来支持过过多次),想想当年合众达卖TI开发板的时候,就一直觉得这家公司不错

    ,如今是越来越红火了。

    电源方面的DSP主要是C2000,我这用2808,10年的时候C2000抄得很高,害的我们都考虑想换个平台了,不过后来稳定了下来,从这个过程来看,TI的DSP是相当的火的。不过最近发现一个小

    BUG,CCS上的,当用3.1版本编译的.OUT文件再用3.3版本的来烧录的话,会出现程序烧录不完成,表面上是烧录成功了,但是当电源运行的某个状态时就出现异常(加重载),而用对应版本烧

    录的话就没有该问题(硬件不改变),关于软件上的该处BUG,TI高人能否给解决下,因为产品做多了,生产加工的时候用的软件烧录版本跟研发使用的版本可能存在不一样,相近的版本应该

    能够兼容,至少实现烧录功能应该不出现异常。呵呵。

    最后,想说的TI的DSP一向市场占有率很高,也很支持,MCU M系列也做的很出色,听说M4也出来了,有机会多研究研究。支持TI!

  •    2010年本科毕业设计开始接触TI的MSP430系列,一开始觉得它就是低功耗做的相当好,而且网上可以申请样片(当然,当时是用老师申请的样片,自己做的板子),用起来,感觉不错,PIC和AVR的单片机我也接触过因为工程需要,我还是比较习惯430,理由有三:

    1.学习周期相对比较短,TI公司针对每一个系列的的MCU都有相应的demo程序,PDF的文档做的也是很到位的。

    2.Debug 很方便,不管是20元钱的一个并口仿真器还是基于TUSB3410的 USB仿真器,支持在线烧写,在线仿真,而且仿真工具易制作,这是很多其它系列的单片机不可比拟的。

    3.个人很欣赏TI MCU 架构里的 低功耗配置,还有clock 选择位,增加了系统开发的灵活性。

    另外,个人建议:

    1.我所了解的,TI的MCU好像还没有公开支持一些开源的项目。比如硬件开源平台arduino 大部分是基于ATmel 的AVR,也有一部分PIC系列的单片机,如果能做一些开源的东西,我想TI 的MCU会让更多的爱好者所熟悉。

    2.大学计划做的不错,只是中国的部分学校,很有限,希望以后会有更多的学校加入进来吧!

  • 占位,等我买到票再来。

  • 说起我与TI产品的结缘,可以说是陪伴我多年的老朋友了。从最初的还在学生时期2000左右的c2000流行的F206,到2003年参加工作至今,TI的产品一直陪伴我左右,且越来越成为我产品设计最可信赖的伙伴。TI的产品发展也是嵌入式技术发展的一个缩影。

    2003年参加工作后,接触的第一个产品开发是一个电信测试设备,最初采用的是DSPc5410A,还记得当时为了实现与外部ARM cpu的HPI通讯及bootloader功能,经常咨询当时的TI技术支持,最终顺利的实现了产品的功能。后来由于实际功能的需要,我们对设计产品进行升级,选择了更高性能的TI C6000系列的浮点DSP(c6711),以及更高性能的ARM9系列CPU,圆满完成了设计需求,产品大量的应用到电信领域。由于采用了高端的TI DSP及先进的算法,该产品还获得了广州市科技进步二等奖。

    后来,由于个人的发展,我进入了另一家公司。但与TI的缘分不仅没有淡化,反而更加紧密,由于开发的产品是应用到智能家居里,因此范围也从DSP扩展到cortex-m3, cortex-a8, msp430, cc2430等等,使我对TI丰富的产品线有了更深刻的认识,同时惊叹于TI公司对市场需求的敏感度。

    现在TI产品已成为我产品设计不可或缺的重要伙伴,相信TI以后会不断的向我们展示更多完美的产品,to change the world!!!

  • 刚看到,TI的MCU用了好几年了稍等我把经验发一下,欢迎大家拍砖

  • 之前一段时间由于学习需要,有幸接触了TI的两款产品——MSP430 和 C5509的DSP。既然这里要讲MCU,那我就只能说430了,呵呵。

    接触的第一片430是F149,现在看算是430里的低端产品了,但给我最大的感受就是功耗低,而且是相当的低。功能也很强大,无论是外设资源还是速度,都比以前玩的51要高上一个档次。也正是因为这些原因,当时我们临时决定选择F149为我们参加比赛作品的核心控制器,所以就弄了一块F149的最小系统板再和我们的外围板连起来,当时测试也是正常的。但由于比赛当天电池出了点故障,在弥补故障的时候,好像是把板子上的ADC芯片给弄坏了,这把我们都给急坏了,当时并没有备用的ADC芯片在手上,由于是去外地比赛,现买肯定也来不及。遇到如此悲剧的情况后,我们当即决定飞线接F149的片上AD。于是大家就赶紧动起来了,改程序的改程序,改电路的改电路。最后终于在演示之前将问题解决,虽然AD的位数减少了,但依然可以满足最基本的要求。而且我们发现使用片内AD,同时合理控制AD电源,整体功耗又下降了一些,早知道就直接用片上AD了 -_-! 。这样我们顺利通过了比赛,我本人也因此继续在本校深造,有的队友因此得到了更好的机会,呵呵。算是片上AD救了大家,也给了大家更多的选择和机会。借此机会也感谢一下TI公司为我们提供了这么多优秀的控制器。

  • 接触Ti的产品也是大一大二的电子赛期间,主要的接触的是MSP430系列的低功耗MCU,那时学完51单片机本想跳到AVR的,后来听说有MSP430,是16位的功耗低单片机,其资源充足,还有丰富的片内外设功能,于是边看视频教程边看书边敲代码,一直到现在,大概有一年时间了。最让我最不可思议的是,当时用MSP430f1611的捕获功能做了个频率计,竟然能测到1Hz到60MHz的频率,要不是实验室的DDS函数发生器只能到60MHz,说不定还能测得更高,当然只能显示整数是个缺点,但是误差都不大,大概都小于2%的误差。本以为用8MHz的晶振,再怎么样也不可能超过其晶振频率的,想不到MSP430系列的MCU功能这么强大。

  •        TI公司的芯片和解决方案一直是我关心的地方,09年开始使用MSP430做一些简单的项目开发。使用起来很方便,功能很强大,代码编写参考示例也很多。适合初学者去学习。

            最近公司在做MEMS微镜的驱动和测试方案,又将430拿回项目中做一些开发,主要是做一个简易的多通道的低频任意波形发生器,并有4路AD的回采过程。实际试验中4路AD采集数据时始终都会出现错误,发送到上位机上的4路数据都出现了错误,检测单路时都是正常没有问题的。检测AD设置程序发现并没有任何错误。主程序上的中断设置也无任何问题。所以最后将问题转移回硬件身上,由于硬件是手工焊接,接地的问题并未解决的特别好,尤其是模数转换的模拟地与数字地之间的连接与设计都不是很恰当。最终采用画板重新制作的方法将此问题解决掉。

            现在公司在开发OCT系统,在TI的网站上发现过类似的新闻将OCT便携化的方向,并提出来DSP的多核解决方案。

    只是不知道现在是否有标准的成熟套件发售,期待各位同仁的帮助啊。如果将OCT的图像处理实时化,小型化,那必将是整个行业的有一次跨越!

            在这里要感谢TI公司样片的支持,为工程师的项目开发提供了很大的帮助。

  • 我很想拿到带TI这种大公司的logo的物品,哈哈。

    08年毕业,第一份工作主要内容是模拟电路,那时用的TI的主要是运放和开关器件。刚工作对器件这些也不是很有条理的认知。基本都是选择符合要求的芯片就可以了。

    11年开始设计嵌入式方面的电路,选用的CPU是LM3S5632,那时才真正理解到厂家对芯片的影响,CM3系列很多厂家都在做,功能也差不多,但TI是我们公司最喜欢的品牌,因为我曾经比较过几个公司的CM3的同级别芯片,TI的datasheet是他们的几倍多,而且勘误表也比较详细。相同的ARM芯片,类型的外设功能,自然选择后续支持更好的厂家了。

    在11年底之前我涉及的都是硬件,即使选择了LM3S5632,软件也是由别的同事完成,而现在换了一家从事大型医疗影像设备研发的公司,很庆幸,这边也是倾向于TI,目前使用的芯片是LM3S2793。我的工作职位也从硬件工程师变成了电子工程师,也就是开始要写程序,一开始觉得压力很大,因为从毕业到现在都完全没写过程序,只在大学时用过51单片机。还好,公司有两块开发板,LM3S9B96和LM3S8962,写起程序来发现真的很简单,有丰富的函数库,而且使用TI的CM3的人很多,网上也找到很多资源。这几天估计就会开始进入程序的构架分析了。

    TI是我本人非常喜欢的公司,也提两个意见吧,一个是勘误表希望能做的更好,我曾经选过几个芯片的版本,中途软件人员都碰到了不可解决的问题,到最后才发现是芯片的问题。希望在勘误表里及datasheet里能比较醒目地标出可能的问题。另外一个就是TI提供的资料偏少,申请的资料到手后发现全是推荐芯片的彩页,而在另外厂商那就申请过很多经过他们整理后的一些有用的知识汇集。

    希望TI越做越好,给广大工程师提供更好的支持。

  • 接触TI的IC已有10年之久了,那时最早一次是在学校;那时刚刚认识到IC是TI的,TI的LOGO;后来毕业后参加了工作最初用的是51的MCU,当时只会写汇编;后来因为项目的升级,刚好利尔达也有个430DAY也给我发了个邀请函,就去参加了;在会上大至了解了一下TI的MCU,回来之后就查资料,最后真正了解了TI的MCU并运用到实际项目中,具体有下步骤:

    1.在网上搜索TI MCU的相关资料,了解情况看是否符合自己项目的情况

    2.发现适合了,然后买了个TI的MSP430F449开发板

    3.拿到开发板后进行学习,写简单的程序熟悉相关模块

    4.通过掌握此ICMCU对自己项目进行规划实施方案

    5.用IC进行设计运用到实际项目中去

    补充一下:本人对TI的MCU的评价是功能强大,430是超低功耗;入门容易、上手快;资料详细;希望TI越做越好;

  • tms320f2812,画了好几板,又画了块tms320f2808,电机控制么,很常用么。

    调2812时,tps70351的复位和按键复位,没用专门的复位芯片,直接并联了,导致倍频倍不上去。。

    150M用1.8V供电,没试出问题,或许实验室工作环境好,不稳定没显现出来。

    CMD文件试着改了几次,锁了几块芯片,锁了就不能用了吧,改CMD文件时注意下。

    晶振不起振居然能连上仿真器,就是程序不运行。

    JTAT绕的长了,连不上啊,要是JTAG线长,是不是,用电阻调一下啊,反正后来都离的很近。

    没注意小电容的作用,程序在RAM里跑,总跑飞啊,去耦和滤波真的很重要啊。

    ad加稳压管没加限流电阻,一个高压就把ad模块烧了,2812还能跑,真结实,就是不能用ad部分了。

    上电顺序,IO和内核三种顺序都没事,或许做的少。

    先写这些吧,大家交流下

  • 分享一下我开发TMS320F28335的经验。

    硬件设计参照官方给的电路,现将遇到问题和解决办法总结如下:

    1. 电源1.8V频繁出现渐变,最高时曾到2.6V。答:电源芯片TPS767D318 散热盘需焊接、极性电容正负焊接正确,防止电容反向充电;

    2. 如果供电输出端极性电容、芯片电源引脚端极性电容均不焊,将会引起如下一些现象:

       A. 系统频繁复位;

       B. 寄存器读写异常,具体为操作寄存器进行外围模块电源开关时,出现写入值异常,并引起系统进入复位;

       C. 程序进入非法指令地址,无法正常继续;

       D. 系统时钟异常

    上述问题归结于电路硬件,在焊接过程中一些问题想引起大家注意,综合分析。

    就一个焊接的问题把我难住好几天,大家共同借鉴吧!

  • 很给力的奖品啊,越来越喜欢TI了;

    曾是TI第三方合作企业的员工,专注于马达控制器的设计与研究。

    虽然受迫于成本为客户设计过其他品牌的8BIT 单片机的方案,但比较重要的项目还是使用的TI C2000系列,得力于TI的马达控制库支持,呵呵~

    成功使用280X DSP开发过的项目有钞票清分机,自络筒机,还有电动汽车。

    本人觉得280X的08年或是更早以前出来的BLDC软件库里的程序框架还是不大成熟。

    在去年新出的28035的8312评估版(自费购买的)提供的软件库发现以往的不足都改进过了,与自己的使用经验不谋而合,真是英雄所见略同啊,哈哈哈!

    现在重点扶持的电动汽车项目义无反顾的使用了TI的280X方案,经过一年多的磨合,终于打造成熟,应该算是国内低压功率最大的方案,也随随整车一起拿到了国内同车型的第一个公告,现在已经进入小批量稳产阶段,但是总结出来感觉280X系列还是有些许不足。稍微提下:

    1.我使用的280X PZA封装的片子,使用环境温度是-40~85,但是经过多次试验发现PZA封转到60~70度的范围温度内的时候,就已经内部逻辑紊乱,迫使我降低系统过温保护标准,下次改用PZG的封装看看能否好点。

    2.使用280X时有时置占空比寄存器为0时,用示波器监控PWM输出,会有一个短时间满占空比周期输出,使用仿真器无法观测到寄存器内部数值的突然变更,不知道出在哪里,到后来还是采取一些软件小程序避免PWM为零的情况发生,PWM需要为零的时候直接关闭6桥,最为妥当。

    当然TI的马达控制软件方案我还是很信任并一直花费心血改进的:

    已经成熟应用在电动汽车上的方案模块有如下:

    1.电机主控制算法,速度电流双闭环,相电流最高值1600A可控。

    2.整车通讯模块,使用稳定。

    3.能量回馈制动模块

    等等。

    还在一如既往的挖掘TI马达控制MCU的潜力,分享TI技术人员的丰富经验。

    2012我的心愿是成功运用并推广TI2011新推出的BLDC方案,也祝各位TI阵营的同胞新年快乐,万事如意!

  • MSP430“系”出名门,作为一种16位混合信号处理器,其独到之处在于它的超低功耗,又由于其集成了硬件乘法器,信号处理能力比起8位机大大增强,在低功耗市场应用越来越多。尤其在中国,由于有利尔达信息技术公司的全力推广,应用范围更是越来越广,大有统治低功耗市场的架式。跳舞的人多了,本人就耐不住寂寞也想热闹一把。近来做的一个项目用了MSP430,顺便记下、抄下了一些笔记,在此与大家分享一下吧,虽然都很低级,但对于入门来说,不能说没有益处。我一向认为入门最重要,入了门想深入就靠自己造化,但是入不了门或者入错门,纵然你有万千智商也无用武之地。

    1.MSP430系列并不是都有FLL、FLL+的,象X14X系列就没有。学习时要对此有个认识,如果有FLL则内部频率就比较稳定可以使用。对于14X系列DCO频率是不稳定的,误差大,所以最好是使用外部晶体

    2.MSP430的端口命名从P0---P6,但不是每个器件都有这几个端口,有的器件只有P0--P4,有的只有P1--P6(msp430f147等)。P0口没有功能选择寄存器,这点要注意。

    3.timer_A 的捕获/比较引脚和P1,注意是P1,复用,而P1有一个P1SELx的功能选择寄存器,用来选择其作为I/O还是作为timer_A使用

    4. XT1、XT2、DCO都可以作为ACLK、 MCLK、 SCLK的时钟源,具体用哪一个可以从寄存器设置。当然你可以ACLK用XT1,MCLK用XT2,SCLK用DCO产生;也可以ACLK、MCLK都用 XT2,或者都用DCO产生也未尝不可,想怎么设置时钟都行,想到那儿就可以做到那儿呵呵

    关于DCO分频控制的介绍:运用MOD参数进行调制,调制的具体含义为在32个DCO周期中插入频率为DCO+1的时钟信号,而插入的个数由MOD参数决定,其余为DCO信号,举例如下:

         DCOCTL值为7AH时,DCO频率计算公式 (748×6+825×26)/32=811,748是DCO频率,825是DCO+1频率!!!!  

    这个算法是我的理解不知对否,还请高手指点。

    5.Timer A当用作连续增计数模式时每个CCRx都可以产生中断,CCR0也没有什么特殊之处,这种方法用来产生多个定时的场合。

    6. 430的RAM是个有趣的地方,它的存储一般从0200开始,字节存储没有特别的地方,而字存储就只能从偶地址开始,这点要特别注意,当进行类型变换时必须防止重要数据被覆盖。

    7.我的总体感觉是搞清楚了430的时钟系统及其捕获比较的应用,基本就算入门了,其他方面无非就是寄存器设置还有技巧性的应用了,这方面只要做项目就会找到好的办法

  • 呵呵,重在参与。
    07年毕业后接触到芯片贸易,也接触到TI的产品,记得当时有卖过TI的模拟器件、电源管理、MCU等。08年因金融危机失业了,不过还

    是找到了芯片销售的工作,继续卖IC。那个时候接触到了工业控制、自动化、变频器、电源UPS等应用型客户,TI是工控领域的龙头,

    自然而然就接触到了TI DSP C2000系列芯片,由此与TI结下了不解之缘。

    有个做变频器的客户需要更新方案,节省成本给出了如下参数:
    1、专用6路PWM Time
    2、DAC CMP1/CMP2 Time 比较输出
    3、控制制动管 CMP1
    4、高速输出 CMP Time 两路 1—50K
    5、CAP/CAP 单独Time
    6、QEP 编码器
    7、CAP 1—50K Time两路
    8、CAP—Time
    9、系统专用的定时器 Time
    10、嵌套中断优先级更改
    11、AOE 的需求12位
    12、主频60MB以上
        Flash
        RAM

    经过了解客户的需求,客户准备把电机驱动部分和外部交互部分分开成两个部分做,电机的驱动芯片我们建议选用F28035,这颗芯片的参数我们已经讨论过了,性能上完全可以满足要求。当然,如果只要求一个串口的话,同样可以选用F28035。

    根据客户提出的方案:
     
     
    外部接口芯片,我查了一下LM3S615,这颗芯片没有CAN接口,可能满足不了要求。
    其他经过FAE帮忙,查到可以满足需求的M3芯片,有两个系列的型号,
    包括8000系列中的:
    LM3S8C62 $7.9
    LM3S8G62 $7.4
    这个系列的价格比较高,客户要求两颗芯片在50-60元人民币,所以不能推荐了。
     
    5000系列的型号和官网报价:
    LM3S5C56 $6.65
    LM3S5D56 $6.7
    LM3S5G56 $6.1
    LM3S5K36 $3.6
    LM3S5P36 $3.1
    LM3S5P56 $4.6
    LM3S5T36 $2.6
    LM3S5656 $4.7
    LM3S5956 $5.7
     
    这些型号可以满足客户发过来的要求。
     
    但是客户自己选的LM3S615只要2.5美金。所以我们还是推荐LM3S5T36吧,或者LM3S5K36。只是我们要确定相关的型号价格。
    以上是我们为客户所做的方案选型推荐。  闻亭泰科(深圳)
  •         下面我来分享一下我们利用TI的MSP430F2618单片机作为主控芯片,结合LSD-RFMC-B401-A2射频模块组建的一个基于物联网的温室大棚智能灌溉管理系统。我们的系统,通过对温室土壤的湿度、空气的温度、二氧化碳含量以及光照强度等信息的实时采集,和远程终端服务器的自动决策实现节水灌溉、光照控制及二氧化碳预警功能。系统先以实现,并于2011年7月份参加全国大学生水利创新设计大赛荣获全国一等奖。

            我们系统的核心技术就是利用MSP430处理器控制各种传感器采集环境中的信息,包括光照、湿度、二氧化碳等,并将这些信息通过射频RF模块发射出去,MSP430通过串口控制无线射频RF模块。此外,组成的物联网的协议也是在MSP430处理器上面实现的,一直以来都比较熟悉MSP430这款单片机,而且用起来也十分方便,很感谢TI给我们带来的收获。

           我们设计的通信协议(在MSP430上实现)如下:

           由终端节点每隔一定时间发起一次信息同步传输,所有的节点根据自己的编号在不同的时隙发送信息。中继由节点自行搜索判断。这种方案硬件比较简单,终端节点的任务量较轻,通信带宽利用率高于轮询的方式,且节点可根据自己的编号来休眠,电流较小,同等数据率下支持的最大节点数较上述方案多。

           整个通信过程详述如下:终端每隔一定时间不断发起同步传输,每个同步传输分为信息同步发送和中继同步发送两个阶段(中继的帧长较短,占用带宽极小)。信息同步发送阶段收到终端同步信号的节点在分配给自己的时隙发送数据。中继同步阶段没有收到终端同步信号的节点收到相邻节点回复给终端的信息后,在本阶段自己的时隙内发送中继请求,目的ID为监听到的节点中的任意一个,由选中的节点在下一个信息同步发送阶段代替自己发送信息给终端。

          由于发现流程图在回复中无法插入,所以在此将主要代码附于下面(只有main.c文件代码),以供交流和指教:

          具体各个MSP430软件部分设计思想在附件中,愿感性的同仁一同分享。

    #include <msp430x26x.h>
    #include <stdlib.h>
    #include <time.h>
    #include "DHT21.h"
    #include "Init.h"
    unsigned char light;
    float temp;
    unsigned char num_table[10] = {'0','1','2','3','4','5','6','7','8','9'};
    unsigned char send_buff[8]={0xff,0x00,0x02,0x00,0x00,0x00,0x00,0xfe};//源地址0x001向目的地址
                                                                        //(终端节点)0x01发送数据
    unsigned char rece_buff[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//接收缓存初始化
    unsigned char Tindex,Rindex,SendLen = 0;
    unsigned char send_flag = 1;

    void main()
    {
      WDTCTL = WDTPW + WDTHOLD;
      //====================时钟设置为1MHz============================
      if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    
      { 
        while(1);                               // If calibration constants erased
                                                // do not load, trap CPU!!
      }   
      BCSCTL1 = CALBC1_8MHZ;                    // Set default MCLK=DCO=1MHz
      DCOCTL = CALDCO_8MHZ;
      P1DIR |= 0XFF;
      P1OUT &= ~BIT2;
      Init_UART();
      Init_ADC();
      //UC1IE |= UCA1RXIE;
      _EINT();
     
     

      while(1)
      {
        srand((int)time(0));
        Read_DHT();
        DHT_getvalue();
        send_buff[4] = (char)(data_temp-110);
        send_buff[5] = (char)(data_wet/10);
        ADC12CTL0 |= ADC12SC;                   // Start convn, software controlled
        UC1IE |= UCA1RXIE;                      //打开RX接收使能
        //delay_ms(30);
       
       
        //dis_buff[0] = num_table[data_temp/100];
        //dis_buff[1] = num_table[data_temp%100/10];
        //dis_buff[2] = num_table[data_temp%10];
        //UC1IE &= ~UCA1RXIE;                      //关闭RX接收使能
        while(1)
        {
          if(!(UC1IFG&UCA1RXIFG))
          {
            delay_ms(10);
            if(!(UC1IFG&UCA1RXIFG))
              break;
          }
        }
        for(Tindex = 0;Tindex<8;Tindex++)
        {
          UCA1TXBUF = send_buff[Tindex];
          while(!(UC1IFG&UCA1TXIFG));
          delay_ms(1);
        }
        delay_ms(700);
        delay(50);
      }
    }

    //=============================ADC中断====================
    #pragma vector=ADC12_VECTOR
    __interrupt void ADC12_ISR (void)
    {
      _DINT();
      temp = ADC12MEM0;
      light = (char)((temp/4096)*3.36 - 0.5)/0.15;
      send_buff[6] = light;
      _EINT();
    }

     

    /*#pragma vector=USCIAB1TX_VECTOR
    __interrupt void USCI1TX_ISR(void)
    {
      //UCA1TXBUF='0';
      _DINT();
      UC1IE &= ~UCA1TXIE;
      //delay_ms(5000);
      UC1IE |= UCA1TXIE;
      //_EINT();
    }*/

    #pragma vector=USCIAB1RX_VECTOR
    __interrupt void USCI1RX_ISR(void)
    {
      _DINT();
      /*while (!(UC1IFG&UCA1TXIFG));               // USCI_A1 TX buffer ready?
      //UCA1RXBUF = data_temp/100+'0';
      UCA1TXBUF = UCA1RXBUF;                      // TX -> RXed character
      */
      rece_buff[Rindex++] = UCA1RXBUF;
      if(rece_buff[Rindex-1] == 0xfe)             //接收完毕
      {
        SendLen = Rindex;
        Rindex = 0;
        if((rece_buff[0] == 0xff)&&(rece_buff[2] == 0x00)&&(rece_buff[3] == 0x02))
        {
          if(rece_buff[4] == 0x01)
            P1OUT |= BIT2;
          else if(rece_buff[4] == 0x00)
            P1OUT &= ~BIT2;
        }
        //else if((rece_buff[0] == 0xff)&&(rece_buff[2] != 0x00))
          //send_flag = 0;
      }
      _EINT();
    }

    基于物联网的温室大棚智能灌溉管理系统__TIMCU故事经验分享.docx
  • 第一次接触TI的MCU是MSP430F149,也是在大二的时候,我们平时的电子制作刚上手时候用的是51单片机,但由于速度和资源比较少的原因,设计起来特别不方便,我们就开始选择其他的单片机,由于实验室前人的积累,我们实验室有自己的常用单片机,经过自己的开发,我们有了自己的开发板,加上MSP430自身的许多优点,使用的客户特别多,网上资料也很多,参考书籍也很多,我们学习起来也就比较方便,上手也就比较的快,于是后续的设计过程我们也就习惯了,首选便是MSP430系列MCU。经过两年多的学习使用,我对这款MCU有了深入的认识。

    MSP430单片机主要有MSPX1XX、MSPX2XX、MSPX3XX、MSPX4XX等系列,每一种系列都有很多可选型号。从低功耗方面比较看,MSP430单片机则是超低功耗的,最低功耗可达到0.6uA,特别适合于手持设备的使用,在执行了休眠指令后,只需要中断条件就可以退出,不需要复位,所以在超低功耗方面MSP430单片机表现要好点。

    我主要使用的是MSP430F149这款,在使用的过程中有优点当然也有缺点,缺点就是在使用时关于位操作十分不方便,优点当然嘛有很多,在单片机领域,作为16位单片机的代表,其信号处理能力大大加强,指令周器明显加快,但功耗处在超低功耗领域。丰富的硬件资源,包括集成了丰富的片内外设:看门狗WDT,模拟比较器A,定时器A定时器B,串口01,硬件乘法器,液晶驱动器,10/12/14/ADC12DACIIC总线,DMA,端口P1~P6,基本定时器,强大的开发编译软件为我们带来了极大的方便,降低了开发者的成本,和发难度。强大的后续设计支持,和丰富的设计开发资料,特别适合于我们学习和使用。 

    由于MSP430单片机有功耗低,速度快,片内资源丰富,I/O口多,数字噪声低等特点,MSP430单片机可以用以设计多种系统。例如:控制类:可以通过内部丰富的定时器功能产生可灵活控制的PWM波,以及丰富的I/O口和强大的中断功能进行传感器的控制。通信类:内部丰富的串口资源以及灵活的时钟设置给通信系统提供了强大的支持,利用定时器可以直接产生已调制的ASK信号。电源类:利用定时器产生PWM波和SPWM波进行逆变控制。仪器类:丰富的I/O口资源以及内部集成ADC12的模块等可以用来设计仪器类的题目,比如宽带放大器。

    在实际的使用过程中,我们完成了一些自己的兴趣设计和比赛设计。总体感觉还是很好,结合TI的一些模拟器件配合设计,总体上设计出的作品还是性能很好的。下来我发几张我们的设计作品图片。

  • 看来我来迟了,呵呵

    我是一名大学生,所以接触的嵌入式处理器并不是很多,TI的LM3S9D90是第一个自学使用的处理器。

    可能由于处理器比较新,所以找不到任何的中文资料,有的只是官网给的数据手册、评估板的用户手册,还有评估板的例程。其实如果只是使用的话并不需要把这些资料全部都看完,只要用到哪参考哪就够了,不过要是想彻底了解这一款处理器需要的就是不断的积累了。

    使用的时候确实遇到了很多问题,比较LDO这个引脚,看数据手册上的描述并不是很清楚,因为之前只接触过51、ARM7、还有STM32,但是这些处理器都没有这样的引脚。于是在网上查找信息,并且参照评估板的原理图,终于弄明白了,LDO是输出引脚,可以输出1.3V的电压,用以供给逻辑器件的工作用,大多数情况只要把它与VDDC连接,并且在LDO与地之间接一个1uF以上的电容就可以了。

    遇到另一个问题是模拟电源的问题,不过严格来说这是并不只是使用这个处理器会遇到的问题了。我们在把电源部分还有处理器焊好之后,就迫不及待的连接了JTAG,想测试处理器是否能正常工作,结果悲剧的是,识别不出来JTAG。于是我们把电源和地第一个都测了一下,并没有不正常。在网上查说识别不出JTAG有可能是芯片被锁的原因,虽然我觉得一个新的处理器应该不会出现这样的问题,但还是用网上说的方法给芯片解锁了,结果还是不能工作。就在我一筹莫展的时候,救星出现了,他帮着我检查了一下板子,我们讨论的时候提到了模拟电源的问题,然后就测了一下AVCC,是2.4V,显然这是不正常的了,芯片要求的模拟电源是3-3.6V,一定是因为这个问题芯片才不工作的。然后经过检查,竟然是电感的问题,可能是质量问题,要不就是买器件的人被奸商忽悠了,实验室的10uH的电感都是坏的。于是我们决定先把它短接试试芯片能不能工作,因为板子上还没有焊模拟的问题,所以不会有什么影响。

    果然,把模拟地的问题解决了之后,芯片能工作了。那时的心情真是太激动了,我还以为是我们的电路有什么问题,或者是焊板子的时候把芯片弄坏了呢,还好最后解决了。

    我们的项目还没有结束,所以可能还会遇到其它问题,不过有了之前的经验,我知道了遇到问题一定要心细,可能就是一个小的细节就导致结果出现了问题,一定要把第一种可能都尝试了才知道究竟是什么问题。

  • 路过,,,TI真是大方啊。。。激动中,,,,,顺便说说自己使用过TI 的TMS320F2812的经历吧。。。

         大四的学生,本科,参加了去年的全国电子大赛,去年初开始接触2812,大赛期间跟的老师的特长是DSP和FPGA,当时只学习过51单片机,还没有开始学习DSP,老师给的第一个任务就是画一个2812最小开发板,给了一些英文文档和一个实验室的2812的开发试验板的资料,回去后我去官网下载资料,然后就回去看资料去了,本人英语一般,看英文资料的过程是极其痛苦的,不过也得坚持看,但是当坚持看下来以后就觉得很有成就感了(老师当时明确要求让看english,因为以后的文档大部分全是英文的,反对看中文文档),画板子用了一个多月吧,进度确实慢,因为要自己扩东西,电源、RAM、键盘还有液晶,都得看,最重要的是布线很难满足老师的要求,最后一个版本老师还是勉强接受了。接下来就是跑一些历程了,官网上也,主要是学会一种思路,官网2812的资料特别多,我记得我在http://www.61ic.com/ 这个号称国内最大的TI中文平台学到了很多知识,上面的资料都是免费下载的,而且是相当不错的,我在上面上找到了无数多的资料,基本上我遇到的问题都是从那解决的,在学习过程中遇到的一个问题是自己第一次烧板子,用的是TI的CCS3.3,一次成功,记得当时很有成就感,然后就是老师让练习的一些算法,对于数字信号没有学好的我来说真是困难, 慢慢的练习着。对于TI给的官方的2812的历程对我来说是最重要的,例如有定时器的,GPIO,SCI,ADC,XINTF等等,这些例子让我学到了一些编程的基本套路,有了这些模板就很容易养成一个编程思路,这样别人看你的程序就会感觉很有层次感,思路很清晰,以前学习过凌阳的SPCE061A,感觉这些官网给的资料根本没有办法和TI的比,而且TI的开发环境CCS,个人感觉特别好用。这些一直持续到了快七月底吧,跟我一个组的另外两个同学,他们弄得是FPGA,我对FPGA不太感冒,我也学习过EDA,不过数电感觉一般,于是就走了DSP这个方向。不过最终遗憾的是大赛老师帮选的题是E题,信号传输性能的分析,DSP不太好上手,于是用的FPGA,我只能在模电那帮帮另外两人,其余时间都在打酱油了,不过最终成绩还可以,全国二等奖,虽然很遗憾没用上2812,但是我想这也给我以后学习DSP打下了一个坚实的基础,我相信在以后我的DSP路会越走越好,同时也希望TI的DSP也越来越好。。。。。。。。。。。

         顺便附上大赛期间的2812的原理图。。。。。。。。。   

    2812.rar
  •          至于MSP430在上学的时候,无线传感器网络节点就是采用MSP430+CC2420,感觉430单片机挺容易上手的,芯片各模块的示例代码也挺丰富。

    工作后,在东方电子上班,三相表采用的是MSP430F449,当时感觉430的多工作模式,功耗低确实比较有竞争力。然后到了电科院,

    11年电科院和山东电子,威盛合作要开发一款三相表,主CPU拟采用MSP430F5438,发现MSP430F438在做电磁兼容的时候,电压缓升的时候,

    CPU有时候会出现问题,缓降的问题有时候也会出现问题。再就是430的技术服务不能到现场服务,服务质量力大不是很大。

        至于C2000,在PLC-G3载波上用过,但是刚入门,目前还没发现问题。

         现在电表行业价格被压得很低,片上系统开始越来越被重视起来,希望贵公司在价格上能有很大的竞争力,希望能贵公司能把精准的时钟,晶振都能集成到芯片上。

       谢谢!

  •         从毕业做嵌入式也有很多年了,大部分是做相对比较大的系统,MCU基本上都是ARM9以上,软件OS包含wince,linux等,早期用nucleus和threadx, 最近设计了一个医疗电子的项目,主要是采样患者的一些体征信息(血压,心率,体温等),很多是小信号的东西。因为是患者佩戴的设备,要求体积小,长时间待机,稳定性高,还有就是要求无线传输采集数据到终端(手机,PC)。开始考虑用Coretex-M3,毕竟也是ARM,还有就是一哥们和我吹 “这是最新的技术,代表了最新的科技,代表了MCU发展方向”,还有一个”代表“,我给忘记了。于是乎翻了下手册(Luminary和ST),觉得功耗,性能,外设没问题,但是某些深度休眠模式的唤醒以及RAM数据维持比较麻烦。 因为涉及低功耗,其实我开始想到的是MSP430,因为在大学的时候有次参加了MSP430的推介会(好久了,竟然还印象深刻,可能那次午餐吃的好?嘻嘻,也可能除了51,ARM,没再接触其他MCU)。下面的工作无外乎就是上官网,下资料,论坛灌水。觉得外设,低功耗都评估的差不多, 弄了个大概的硬件系统部架构:

                  1.模拟前端+ ADC采样(包含电量监测)  2. UART_A  Cable通讯(兼做log调试口) 3.UART_B 无线通讯  3.IO 按键,LED  4,.IO模拟存储器接口(SPI 存储器) 5.Timer 做RTC

         无线部分,本来有很多选择,如Zigbee?但是后因为考虑需要与手机连接(主要是智能机),只能蓝牙了。硬件框图出来之后,根据功能和预计的代码量选型,选了MSP430F14X.

             硬件部分,前面一堆高精度模拟信号放大电路和精密参考源(模拟东西真贵)到ADC,蓝牙部分由于直接使用模块,所以布线简化了很多。

             软件部分,主要是整个系统的逻辑建立(先设计好流程图),定时和外部事件驱动,存储(FLASH 损耗处理),和主机(PC,手机)通讯协议(BT & Cable),以及各部分外设的驱动模块(主要”抄袭“例程)。蓝牙软件部分主要是控制蓝牙的各种状态以及做数据传输,通讯协议完全再430端,蓝牙只做传输通道,因此也没啥难度。

             由于对速度要求不高,各外设使用32.768产生的ACLK驱动。整个系统其实和带RTOS差不多,一直while,匹配条件进入LPM3,然后各种唤醒(定时啊,按键啊,ADC采样完成啦),各种退出休眠,while中代码继续运行,各种处理。蓝牙部分在通讯的时候才打开,以延长电池时间。

             时间比较紧,等待PCBA回来的时间,完成了部分软件,板子拿到,用淘宝的一个仿真器就上马调试了,后面的修改主要是逻辑的控制和通讯协议的调试。MSP430本身相关的驱动和控制倒是没惹什么麻烦。

              小系统可以控制所有资源,代码量也小,并且有大量例程参考,开发起来有顺风顺水的感觉。

     

     

     

     

     

     

     

  •        作为一个电子设计的老工程师,以前51,STC,PIC等单片机用了不少,用MSP430还是08年,因为设计一款4-20mA的低功耗数显表头,采用MSP430F1221,结果是非常理想,4位半LED,2mA就可显示,现在已在市场用了3年了,没有问题。

       现在低功耗的几乎全用430设计,主要用的芯片MSP430F149,MSP430F435.........

          年底时间有限,有时间慢慢细说

  • 既然赶上了,就来凑凑热闹吧!先占个座,然后再分享一下!

  • 图1 接收端

    说明:上图表示接收端整体的各个模块的流程图,包括两块SMT362。图中有标号从0到8说的是接收端的流程。其中0代表的是初始就要完成的事务或者是定时的事务。

    我们从第一步开始,首先射频接收的数据要通过第一块SMT362上面的V4发送到接收到DSPA中,DSPA配置好EDMA传输,将每1ms的数据收下来,直接发给DSPB;DSP对接收到的数据进行同步,频偏补偿,FFT,信道估计等等处理后送回V4,进行下一步的MIMO DECODE处理;V4在完成了5ms的数据的DECODE之后会给出MIMO_DEC完成中断给第二块SMT362的V4,第二块SMT362会将均衡之后的数据发给DSPD;DSPD把接受的数据(星座数据)通过SRIO直接发给DSPC;DSPC通过解调,解映射,之后把数据送到V4进行TURBO DECODE;TURBO_DEC做完之后会给出完成中断给DSPD,DSPD接收完成的数据并通过EMAC模块发回上位机。

    图中的点线框代表各个硬件模块。虚线0代表并不是运行步骤中的,是属于初始化的必不可少的一步。

    图2 RF_RX

    说明:流程不再详细说明。需要注意一下几点:

    1. DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等。

    2. 程序中用到的EDMA是链式传输,并且巧妙运用EDMA传输完成中断

    3. 每个ms都要接收新的数据,并通过SRIO向DSPB发送

    4. AGC调整是配合FPGA完成的,FPGA算出功率,DSP做功率调整

    5. 向DSPB发送数据的时候加入了发送结束标志位

    图3 SYNC_FFT_CE

    说明:流程不再详细说明。需要注意一下几点:

    1. DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等

    2. 这里的同步搜索分为捕获和跟踪两个步骤

    3. 接收数据Buffer有100个半帧长,以便于同步的搜索

    4. 频偏补偿算出一根天线的频偏值补偿两根天线

    5. 在巧妙运用DMA的基础上实现两路并行FFT

    6. 信道估计使用的是LS,线性内插即可

    7. 信噪比是在频域的信噪比,因此应改为信干噪比

    8. MIMO_DEC传输第一次,给出Frame_start,之后由FPGA连续触发27次(28个符号)

    图4 DECODE_RCV

    说明:流程不再详细说明。需要注意一下几点:

    1. DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等

    2. 这里需要的MCS主要是为了判断TURBO_DEC的码块长度以便传输

    3. NDK初始化完成是EMAC传输的前提和必要

    4. 程序分为两个中断和一个任务,前提是MIMO_DEC的中断才能触发后面的行为

    5. 向DSPC发送数据的时候加入了发送结束标志位

    图5 TURBO_DEC

    说明:流程不再详细说明。需要注意一下几点:

    1. DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等

    2. 这里的MCS解调出来要初始化各种解调表,码块相关的参数,MPDU参数等重要参数,有很重要的作用,应该与前一模块得到的结果相同

    3. 此时的解映射表与发端的映射表相同

    4. TURBO merge函数是8bit软信息到5bit软信息的转换。以便于FPGA解码。

    5. TURBO_DEC传输第一次,之后由FPGA连续触发19次传输(20个码块)

    图6 发送端

    说明:

    上图表示发送端整体的各个模块的流程图。图中有标号从0到4说的是发送端的流程。其中0代表的是初始就要完成的事务或者是定时的事务。

    我们从第一步开始,首先上位机通过EMAC模块将业务数据发到DSP,有三种不同的调制编码方式对应三种传输MPDU大小;之后DSPB做ENCODE事务,并将最后时域的数据发到DSPA;DSPA通过FPGA给出的定时中断将时域数据发到V4,之后便射频发送。

    图中的点线框代表各个硬件模块。虚线0代表并不是运行步骤中的,是属于初始化的必不可少的一步。

    需要注意的是ENCODE模块包含了发送端基带处理的所有的模块的集合。包括DMRS映射,信道编码(TURBO编码),交织,数字调制(QPSK,16QAM),预编码,子载波映射,IFFT等等。

    图7 RF_TX

    说明:流程不再详细说明。需要注意一下几点:

    1. DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等

    2. 程序中用到的EDMA是链式传输,并且巧妙运用EDMA传输完成中断

    3. 发端使用A/B BUFFER是为了将同时需要处理的缓冲区隔开以便并行处理而不互相冲突

    图8 ENCODE

    说明:流程不再详细说明。需要注意一下几点:

    1. DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等

    2. Encode使用A/B BUFFER是为了将同时需要处理的缓冲区隔开以便并行处理而不互相冲突,比如接收上位机使用Buffer A,而做Encode使用Buffer B,这样就可以并行处理而不冲突

    3. Encode使用到可以用测试数据或者上位机数据而不冲突的机制

    4. NDK初始化完成是EMAC传输的前提和必要

    5. 单端口天线预编码由FPGA转到DSP里面实现

    6. 在巧妙运用DMA的基础上实现两路并行FFT

  • 调试点滴大事记:

    1. EMAC模块调试成功时间45天,期间最终是因为FPGA的时序问题[1]以及TXC和RXC管脚[2]弄反了导致的。由于使用FPGA在两个设备DSP,PHY之间实现互联,其中需要考虑双向I/O线的时序,但是实际上MDIO的时序是确定的,即这个双向的数据线的时序是确定的,则不用考虑FPGA怎么确定什么时候是输入什么时候是输出了;其次,由于观察的时候时钟一直出错,本来应该是输入到PHY的始终是有的,但是观察到的是PHY到EMAC的时钟却是一直存在,后来发现是给的芯片原理图PDF上的引脚给反了。

    2. DSP硬件驱动开发成功时间15天,不包括DDR2和EMIF的返工时间。总共时间25天左右。其中EDMA驱动是用的ASB封装的library;GPIO,SRIO,PLLC,DMA,都是参照CSL设计的;EMAC是参照NDK设计;DDR2和EMIF原先都是参照CSL,但是后来发现各种参数与实际的平台有隔阂,最后调试慢慢修正,SRIO也有返工的经历,但是拖延时间不长。关于DSP的驱动,比如说DDR的驱动,在硬件上面可以挂很多块DDR2,但是128M的DDR,我挂了两块64M的还是4块32M的,DSP本身不知道,如果不写好驱动的话,会导致地址线错乱,比如地址0xE0000000和0xE2000000上面的内容会被复写,这也是调试过程中发现的。还有读写速度,等待周期,PAGESIZE和IBANK,都是配置的重要寄存器。基本的设计思路都是先照着CSL的一套思路做,然后参照数据手册,改变寄存器设置,有时还需要增加寄存器设置。

    3. 收发两端SHB连接收发视频调试成功时间7天,采用老机制。

    4. 基带算法调试成功时间30天,包括各个模块独立调试成功。期间Turbo模块调试时间最长,为15天,最后分到两块DSP上实现无误。包括发端DMRS映射,Turbo编码,交织,数字调制,子载波映射,预编码,IFFT以及射频控制;收端射频控制,AGC调整,时频域同步,频偏估计与补偿,FFT,信道估计,频域均衡(FPGA),Turbo解码(FPGA)。

    5. 射频模块sine wave调试成功时间20天,驱动程序的编写,AGC调整,期间出现里面含有尖刺点,等等,后用滤波器滤掉。射频驱动代码包括AGC一共800行。

    6. 基带算法整合15天,多加入一块SMT362,使用SHB连接,收发端使用射频的发送接收控制机制,使用测试数据通过。

    7. 射频上共轭问题解决40天,期间以为是频偏的问题,或者是基带的问题,最后得出结果是接收到的信号在时域在与发射端相比取了共轭,在时域补偿就完成。原因是我们没有对射频的特性做详细的了解和研究,把数据拿到MATLAB里面作分析,时域上的信号质量很好,但是频域上的信干噪比很差,甚至是负值,肯定是频域的哪里出了问题,原来一直以为是频偏,载频偏上找问题,计算频偏,但是频偏一直很小,不会导致这种现象,只有刚好差了整数个子载波才会导致。后来偶然发现好像正频率与负频率部分与发射端相比颠倒了,刚好差了一个子载波,原来是接收到的信号在时域在与发射端相比取了共轭(那个苦啊)。

    8. 频偏补偿解决时间10天,频偏算法问题,理论可行但实际不可行,采用综合统计平均补偿的办法解决。理论上计算出的频偏应该和上次计算的叠加再次补偿当前的频偏,但是多次试验不可行,总是来不及补偿。

    9. 发送端EMAC问题,前前后后加起来解决时间15天,之前的测试时间也不对,是机制问题,采用新机制情况下加上发送端发送空包解决。

    总计时间:2.20(第一次会议记录时间)---7.25下午14:28(完成的确切时间)

  • 接触TI是在2009年初,之前的我是一个纯软件工程师。

    公司的项目涉及测试仪器开发,前期选型的过程中淘汰掉了几款MCU芯片,比如2410和2440,主要的原因是处理速度无法满足要求,而且因为涉及Linux系统的剪裁,系统BOOT时间尝试了也没有改善。最终选定的是TI的DSP6000系列DSP芯片作为界面呈现以及部分算法的载体。

    使用TI的DSP开发,对于一个从没有接触过嵌入式产品的我来说,并不十分困难。因为TI的编译器工作环境几乎与上位机软件的开发环境没有本质差别,而且CCS提供了很完善的调试手段(可以直接打印内存中的各种数据的波形最开始的时候让我很惊奇),所以很快就上手了。

    之后,遇到了资料关——如果你要使用DSP某个子功能项,你需要查阅文档,不过TI精确、细致的文档支持也让这个工作变得比较轻松。给我印象比较深刻的是TI文档维护人员的工作效率:在我发现了TI DSP6747(8) USB2.0文档中一处错误的时候,TI的工程师似乎在1天之内就修改,并重新发布了这份文档。

    与TI的交流还在TI的工程师论坛上,很多问题都得到了及时,细致地回复。在此再次感谢TI的技术支持工作,你们做的很棒!

    最后,附上一个建议,虽然已经在TI工程师社区的用户调查上已经提到了:“建议对在线发布的VIDEO,添加多语言字幕”,中国的工程师,读写可能还可以,听说能力很多人都不强,希望TI能让这些资源更加迅速地传播给更多的受众。

  •   我是11年暑假才开始接触TI MCU的。那时在西安考完试就赶回长春,准备电子大赛,做的电源方向题目。因为频繁涉及到PWM控制,起初有两种选择,就是AVR和430。最初用的AVR,编程方面是很容易,不过程序下载比较麻烦,弄坏了好几片才能熟练掌握,之后由于使用的Mega16和Mega32端口太少,又改用的430,F149。刚学的时候,感觉程序方面不如AVR简单,但其他各方面优势都很明显,所以综合感觉还是430要好用一些。因为使用430,在TI官网申请了不少样片,导致申请频繁,之后申请总出警告。也正是在这段时间里,学到了很多东西。从产生简单的PWM波形,到PID控制,以及后来的任意信号发生和SPWM控制,学会了自己焊接各种贴片元件。

      后来在论坛上加入了一个launchpad群,在淘宝上买了一块,大家一起学习launchpad,其乐融融。现在手头上用着的也是F169和G2系列的。十月份的时候,21IC上曾经免费发放过LM3S811开发板,非常积极申请了,不过比较遗憾只有100块,自己不够幸运,没能领到。不过还是非常感激TI,千里迢迢的,把样片寄过来。现在马上要做毕业设计了,我的那块launchpad看样子终于是要派上用场了。

      经验什么的倒是谈不上,说起来从开始使用到现在也不到一年。

      只是当时在网上寻找PWM控制方法的时候,网上极少有资料,后来自己做了以后觉得,大多数情况下,大家都被数据类型束缚了。比如多少位,波形的最小分辨率,其实完全可以用浮点型来完成控制,效果非常好,完全不用担心浮点运算会占用多少时间。

      大概个学期会学习TI的ARM,希望自己大学结束之前能够多学一些东西,也希望TI能够一如既往,更好发展。

  • 好吧,水一个。

    话说在大一的时候,开始接触MCU,首先当然是51啦,不过么,没过一个学期,51就没啥了。。。不是自吹了,是确实可以较熟练使用了。。。。(在期间,偶得一块凌阳61板,方才发现触类旁通,活的很轻松)。然后么。。。。。就是。。。。。你猜啊。。。。。。。其实吧。。。。。

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

    答案即将揭晓

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

    就是STM32啦,话说在学校要做一个小项目,本来准备使用430,后来发现,没得用,(木有任何硬软件支持,其实是我自己想偷个懒--!就用了实验室现成的STM32开发板),不过学习430却因为这事被我排进了日程表。

    LaunchPad,恩,就是贵公司提供的套件,嘻嘻,在折腾了一个寒假后,差不多能写出一些有实际价值的代码了。

    1、采用 TI MCU 的设计经验总结和技巧心得;

          这 个谈不上,我自己还只是刚刚起步

    2、采用 TI MCU 碰到的问题和后来的解决办法

      刚开始翻箱倒柜找出了一块贴片430,为了使用,我擦,我就画了个,贴片转直插的板子,纯手工腐蚀完成后,再一 个引脚一个引脚焊上,后来在LaunchPad上看见DIP的430,顿时感觉世界观被颠覆,早知如此何必当初呢。。。。。。。

    最后,嘻嘻,新年希望TI 公司越来越强大。

    可以为我这样的,热爱硬件,但囊中羞涩的学生多多帮助啊!!!!!!!!!!!!!!!!

    谢谢啦

    最后,小小无耻一下。。。。。。。。。。。。。。。。。。

    TI宣称的28035的特性如下:

    • Enhanced Pulse Width Modulator (ePWM)

    • Up to 60-MHz, 32-bit C28x™ CPU

    • 32-kB to 128-kB embedded Flash

    • 12-bit ADC, up to 4.6 MSPS

    • 150-ps high-resolution ePWM

    • Control law accelerator

    真的吗?????????????????????????????????????????

    出最低批量单价不足2 美元

    真的吗?????????????????????????????????????????

    最后

    强大的TI FAE团队队员们,看在将来我也会像您们一样为客户服务的面子上,奖品就给我呗!!!!!!!

    敬礼

    一个在校却疯狂热爱电子制作的年轻人。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 我与TI的故事,话说TI的电源管理芯片!(这是我的原创,不过先前发表过一次)

       我是一名嵌入式工程师,在1年以前几乎与TI没有任何联系。 1年前我跳槽到了新的公司,做锂电池的公司,从此接触到了许多TI的电源管理芯片(如BQ27541,BQ2050,BQ20Z80等等)。也接触到了许多其它的电源芯片(如XX、XX等等)。 注:为了不影响其它芯片的的形象,故以XX代替。

       在编写这么多不同各类芯片的电池的测试程序,TI给我印象:非常好、非常稳定!

        说几个我与TI电源管理芯片的小片段:

        1、测试BQ2060第一次接触到了HDQ16通信协议(测试BQ27541接触HDQ8),TI将单总线通信做的如此简单易用,让我想到了我先前做的单总线通信(不是HDQ 也不是ONE-WIRE)是多么的差。HDQ用了1天就熟练掌握了读写操作,后面在多个平台,多个芯片移植基本都没有花多少时间。 One-Wire也是不错的单总线协议,但是不是那么简洁,易用性不强。

       2、TI的精度也非常的高,是多少测量反馈的就是多少,还是较其它芯片稳定性更胜一筹,且功耗更低。(注:其它芯片也都不错,只是TI更好一点), 有些芯片的误差会有5%,导致电池不保护,易损坏电池,这个有经历过多次了。 在使用其它芯片过程中经常有问题要与厂商沟通,但是使用TI的,只要有Datasheet在手就可以搞定一切了,基本不用于TI沟通。

      3、TI的开发工具套件也节省了开发的很多时间,TI有全套且完善的开发板、上位机、通信测试工具。 其他再来说说长的缺点吧: 1、太贵了 2、还是太贵了

      P.S.上次在申请TI的Stellaris 的开发板没有申请到,很遗憾!

  • 本科一直捣鼓着单片机,学会了51、PIC、AVR、飞思卡尔,基本没有感觉又太多区别。对于单片机的热情也渐渐淡去。直到在大四暑假,我开始接触DSP,最开始的就是TMS320F2812

    大概读了一下数据表,发现此MCU的系统资源,速度是其他单片机无法比拟的。顿时来了劲,在网上购买了一般2812的书,细细品尝起来。

    看着书中的列子,也开始捣鼓起CCS。用CCS仿真起2812来。弄了两天,发现不够过瘾。心一横,就准备自己做2812的最小系统。当初还想着做好点,然后挂在淘宝上卖,还能增加点收入。

    网上2812的原理图很多,也很杂。经过几个大牛的推荐,自己找到一个原理图,开始打造自己的板子。

    相对以前的MCU,2812的引脚多了很多。画起来还有些心慌,不知道能不能成功。但是为了一次能够跑起来,我还是细心的画着板子,画完又细细检查了一遍。

    整个过程花了大半个月。板子投出去了。一个星期后收到板子,开始了板子的调试。因为以前贴片焊的少,但2812的电源芯片TPS767d318就焊了我两个小时,虽然焊接的比较丑陋,用万用表测试了下,还是没有短路。也就放心下来。但是对于176个脚的2812的焊接却让我犯愁了。找了市场上的人问了下,帮我焊这芯片的价格是50.

    心里很不想出这个钱,一来是觉得贵,二来不想放弃这个学习的机会。心一狠,自己焊了起来。芯片买来花了150,焊接起来自然很小心。待我焊完2812,一个上午已经过去,全身腰酸背痛。但是自己心里还是美滋滋的,因为我居然把它焊上了,而且看起来还过得去。

    接下来是其他小件,自然不在话下。

    对于板子的调试倒没花太多功夫,先是测试电源电压,电压正确。接好JTAG开始调试,CCS也立马检测出芯片来。看来第一板基本成功。由于前面的基础知识还行,在板子上跑了个流水等,调试了一番,最终在板子上闪烁起来。对于做硬件的来说,一个板子能够跑出流水灯,板子就大半可以了,其他的就是一些小外设了。

    其实这次的经历对我来说是很重要的一次经历,估计做技术的人都有过,中间有悲伤也有快乐。尤其对于一些读书的苦娃来说,拿出自己的生活费买芯片,做板子,再外人看来很傻,但是当整个系统能够运行时,这其中的快乐早已抹去那些不快。留给我们的对未来的憧憬。虽然最后板子没能卖出去,但是现在也把它作为一个纪念放在箱子里。因为它对我来说很重要

  • 再次看到如此火爆的帖子,让人有种不讲不快的冲动~

    和TI结缘时间其实并不是很长,而且还“得益于”2008年的经济危机。公司产品最初使用的是ATMEL的ARM7,虽然芯片也有些BUG,但是不影响大局,而且已经推出了一款产品。谁知天有不测风云,到了2010年,Atmel的供货出现问题,我们使用的那款ARM7价格疯涨,交货周期不确定~

    痛下决心,换MCU! 考虑到低成本,低功耗,初步选定了Cortex-M3系列的MCU.于是开始选了几家公司的MCU做评估:首先是对MCU基本功能的评估,大部分cortex-M3的MCU都有丰富的外设,基本上都能够满足产品的需求。第一轮仅淘汰了一家MCU,原因是其DMA的通道数量不够多。接下来几款大都差不多,再考虑到产品线的丰富程度,由于atmel的经历,就剩下TI可以选择了。TI的规模摆在那里,即便受到经济危机的冲击,相信也不过就是打个喷嚏,感冒两天而已,不会向某些厂商卧床休息几个月才能缓过元气。不过领导还有些疑惑,像TI这样的大厂技术支持跟得上吗?他会care我们这种新用户吗?

    可是也没有别的更好的选择啊,豁出去了,做更进一步的评估吧~事实上,后续的进展非常的顺利:看datasheet,初步选型,联系TI的销售,对其价格,供货等进一步的了解。一切看起来都是很令人满意:帅气且专业的销售给我们留下的9B92的评估板……

    接下来的日子就是开始对mcu的相关外设进行验证评估,得益于TI的driverlib库,不用过多的关注mcu的寄存器,可以专注于应用程序的开发。期间的调试有的很顺利,代码一编译就通了;也有费了很多周折,找ti的FAE进行咨询,上e2e.ti.com查看其他网友的经验分享(那会儿ti的中文论坛人气不旺的),不过不管怎么说,问题解决才是王道!

    (此处省略XX字,内容为移植atmel平台代码到TI平台,呵呵,你懂的)

    回头看看,过去的每一步都走的很踏实,从一点一滴积累了很多经验。如今我们用ti的mcu已经开发了六七款产品了,还有正在开发过程中的……有“裸奔”的,也有带操作系统的,这一系列的mcu的代码的可移植性非常好,所以在开发新产品过程中,节省了大量的人力和物力……


    结论是当初的选择没有错!!

    在这个过程中,积累的经验很多,遇到的问题也不少,其实我觉得最重要的是根据你的需求进行合理的定位。虽然TI MCU上手很容易,可是涉及到M3内核的知识也很多——满足你的应用需求就好!

    我谈一下当初学习使用这款mcu的过程吧:

    1.跑通外设的基本功能,对其有一个初步的了解

    2.将其移植到项目中

    3.期间会遇到很多问题,解决这些问题

    4.移至一到二款操作系统

    5.期间仍然会遇到很多问题,解决这些问题

    末了,多逛逛论坛,deyisupport也好,e2e.ti.com也好,有很多很不错的经验分享的……这些都可以在很短的时间让你在这方面的知识有很大的提高。

    说到这里不禁想起当时换用这款mcu的一个小插曲:最初采用ATMEL的ARM7的时候,我们设备的串口通信采用DMA方式。报文的长短不定,所以我们设置一个较大的缓冲,当DMA接收超时的时候会触发一个超时中断,然后我们去查询接收到的数据。

    可是TI的MCU没有DMA超时中断,怎么办?用UART的FIFO?那么大的数据包,要产生很多次的中断才能完成接收,额外增加了不少系统开销~

    祭出google杀器,逛论坛……最后,确定硬件上面没有这个功能。怎么办?启用一个定时器,做一个软件超时吧:当启动DMA接收的时候我也启动定时器。如果定时器中断产生,可以查询一下DMA接收到的数据量,继续等……下一个定时器中断产生了,DMA接收到的数据量仍然没有变化,可以认为DMA接收完成了。否则说明DMA仍然在接收数据,那就重新启动定时器,继续等待吧。当然定时器的周期需要做一个合理的设置……

    最后功能调试通过,合理的设置定时器的周期,能够提高DMA的数据吞吐量。虽然没有单纯使用DMA的效率高,不过也完全满足我项目中的使用需求了……

    说这个故事就是想给大家一个启发,有的时候一条路走不通,试试换另外一条路,也许就行哦~

  • 很早就对TI的产品感兴趣,也一直是TI的忠实用户。开始接触MSP430系列单片机是去年7月份了,当时接到一个小项目,要求设计一款高精度微功耗可存取数据的数字压力表。接到要求后,第一步必然是方案设计,看到微功耗这个词,马上就想到了TI公司的MSP430系列单片机,这一系列单片机的“微功耗”如雷贯耳。

    简要说一下我们设计的这款数字压力表吧,其采用MSP430F149作为总控制器,压力传感器采用恒流源供电,其输出采用AD7714进行A/D转换,以ADR291产生的恒压作为其参考电压。采用模块化供电以及分时数据采集的策略降低系统功耗,采用自主设计的MOSFET电源开关切断不工作模块的电源。运用基于变化速率的均值滤波方法对采集的压力数据进行滤波,最后采用多点校准的方式对压力表进行校准。采用简化的文件系统实现实时压力数据的存储与回放。压力表精度达到0.25以上,在采用45#电池供电的情况下,正常连续工作时间3000小时以上。

    1 总体设计

    看完上面的介绍,想必大家对我们做的项目已经有了初步的了解,下面介绍系统的总体结构。首先还要说一下TI公司的MSP430系列单片机。MSP430系列单片机是一种超低功耗的混合信号处理器,这系列微控制器可以采用电池供电工作,且待机时间长。它们采用16RISC结构,CPU中的16个寄存器和常数发生器使MSP430微控制器能达到最高的代码效率;灵活的时钟源可以使器件达到最低的功率消耗;数字控制的振荡器(DCO)可使器件从低功耗模式迅速唤醒,在少于6μs的时间内激活到活跃的工作方式。考虑到本系统微功耗的要求,最终采用MSP430F149作为本系统的总控制器。

    压力传感器采用了MEAS公司的87N-5000,此传感器线性好,温度误差小,功耗低,满足本系统设计中高精度、微功耗的要求。

    本系统的外围主要包括电源管理模块、参考电压模块、恒流源、压力数据采集模块、液晶显示模块、串口通信模块、温度采集模块、按键电路等。

    电源管理模块:为总控制器以及其他外围模块供电,为实现系统微功耗,采用了模块化供电的策略。

    参考电源模块:为A/D芯片和恒流源模块提供可靠的参考电压。

    恒流源:为减小压力传感器的测量误差,采用恒流源为压力传感器供电。

    压力数据采集模块:采集压力传感器的输出信号,并进行A/D转换,得到压力的数字信号。

    液晶显示模块:显示当前压力、温度、电池电压等信息。

    串口通信模块:与上位机通信,可以将当前或已经检定存储的压力数据发送到上位机。

    温度采集模块:采集当前环境温度值,用于实时显示,也可对当前压力值进行温度补偿。

    按键电路:接收使用人员的操作信号。 

    2 硬件设计

    硬件部分比较值得说道的是压力传感器的供电电源,即恒流源。

    本系统采用的压力传感器内部的测量电路是全桥差动电路,而电桥的供电电源可采用恒压源,也可采用恒流源。为了减少温度的影响,提高测量精度,本系统采用了恒流源为压力传感器供电。

    电桥的供电电源可采用恒压源,也可采用恒流源。本系统采用的压力传感器内部的测量电路是全桥差动电路,而为了减少温度的影响,提高测量精度,本系统采用了恒流源为压力传感器供电。

    本系统恒流源电路的核心芯片是OPA335,此芯片是TI公司生产的自动置零,单电源运算放大器。具有最大5µA的失调电压,285µA的静态电流,同时满足了系统高精度和微功耗的要求。本电路采用运算放大器“虚断”和“虚短”的特性设计,工作稳定可靠。

    3 软件设计

    本系统软件设计也紧紧围绕高精度和微功耗展开,充分发挥了MSP430F149单片机低功耗模式的优势,采用了分时数据采集的方式降低了系统功耗,采用多点校准的方式提高了本压力表的测量精度。另外,本系统具有压力实时数据的存储与回放功能,通过单片机内部集成的Flash存储实时压力测量数据和压力校准数据。

    MSP4301种活动模式和5种低功耗模式,通过相应的设置可以从活动模式进入相应的低功耗模式,而各种低功耗模式都可通过中断的方式进入活动模式[2]。不同工作模式下MSP430的耗电情况如图3所示,低功耗模式4LMP4)系统功耗相当低,基本可以忽略,因此,本压力表关机时采用了此种工作模式。在这种工作模式下,CPU以及所有振荡器、时钟均处于禁止状态,只有外部中断可以触发,因此,采用了按键中断的方式唤醒单片机并使其进入正常工作模式。

    工作模式3也是一种低功耗模式,其功耗也非常低,因此,本系统在没有采集数据任务时,采用了这种工作模式。在这种工作模式下,CPU以及DCOMCLKSMCLK均处于禁止状态,只有ACLK处于活动状态,因此,本系统采用定时中断或按键中断使系统退出低功耗模式3,进入活动模式。

    3.1 分时数据采集

    本系统采用分时数据采集的策略,即根据设置的菜单情况,采集不同的数据信息,如压力、温度、电池电压等信息。以压力数据采集为例,并不是程序每循环一次进行一次压力数据采集,而是根据时间信息来采集。本系统程序设计为每0.1s进入一次时间中断,在时间中断中退出低功耗模式3,进入活动模式,程序循环执行一次,然后进入低功耗模式3(LPM3)。同时,程序循环执行时对时间进行判断,如果间隔时间到0.3s,读取一次压力数据,并进行A/D转换。

    3.2 数据存储及回放

           本系统设计了基于MSP430内部大容量Flash的数据存储机制,允许实时存储压力表采集到的压力数据和压力校准值,保证在关机或者掉电情况下,数据不丢失,并且提供数据回放功能,查询历史存储数据。

           由于本系统采用的单片机MSP430F149内部有64KBFlash,除去其内部资源占用的,还有60KB的代码存储空间和256BAB段信息存储器,完全满足系统数据存储要求。其中我们选用A段信息存储器存储系统压力校准值,保证压力表校准一次后,数据不丢失。另外从60KB代码存储空间保留10KB的空间存储实时压力数据,在存储机制上,编写了简单的文件系统管理存储数据,即采用了文件组方式存储数据,由于存储空间的限制,本系统最多可以存储40个文件,每个文件可以存储20个点的压力数据,同时增加了清零功能,在数据存满之后可以手动清除整个文件存储区,保证数据存储的持续性。经过实际运行,该简化的文件系统满足了数据实时存储和数据查询回放功能,同时也可以把存储的数据通过RS232通信接口上传到上位机以供查看。

    4 结束语

    本文系统介绍了高精度、微功耗、可存取数字压力表的设计思路,并分别从硬件和软件方面阐述了实现高精度和微功耗要求的方法,同时给出了数据存储与回放的方法,最后给出了实验对比数据,分析了本压力表的测量误差。经过实验,本压力表的测量精度可以达到0.25‰,在45#电池供电的情况下,正常连续工作时间3000小时以上。本设计必将推动便携式、微功耗仪表的发展,并为电子测量信息化、数字化奠定基础。

  •        我可是很喜欢TI的MSP430系列单片机,当初学完51单片机后,听很多学长说我应该不要局限与51单片机,应该学更高级更强大的单片机,有的学长说学AVR,有的说学MSP430,当时我也不知道应该学哪一种,直到我在实验室看到一个用MSP430做成的系统,一个非常强大的系统,就是由一片MSP430作为核心,我也觉得奇怪这么强大的系统用的只是这么一块QFP封装的MCU!后来才知道原来MSP430里面集成了很多模块,功能更多了,这是51单片机无法望其项背!尽管如此强大,但是它的功耗相当的低,这是AVR单片机无法做到的这么低的功耗。

           那时我有了想学MSP430的冲动,如果说51是一辆老爷车的话,那MSP430就是我心中的法拉利!

           于是我申请了几片MSP430,感谢TI对我们的大力支持!我又买了最小系统板的PCB空板,自己动手焊板子,自己动手,丰衣足食。QFP的封装引脚间距很小,焊接的时候困难比较大,还好,我的焊功还不错,最终还是焊了上去。嘻嘻!

           困难总是有的,我焊好后给板子下程序时,发现下载总是失败!仔细检查后才发现有几个引脚的焊锡过多,脚连在一起了,怪不得失败,原来如此!我用吸锡带吸走多余的锡后,再次下程序,成功啦!我那时的高兴劲无法形容,就像见到梦中情人就活生生在自己面前一样啊!

          在后续的学习编程中,开始看到片中那么多的寄存器,我头都大了,51可没有这么多的寄存器啊!不知道该如何学习是好。为了心爱的430我还是硬着头皮看下去!后面慢慢的来了感觉,我对那么多的寄存器不再害怕了,学习的进度也加快,这时才发现,寄存器多的好处是编程变得简单,单片机的功能更多,工作模式更多,做出来的系统更强大,实现相同更能的代码51单片机需要几十行,而MSP430只要几句代码设置相应的寄存器就OK了!这样的话编程就比51的简单多了,而且430的速度是51的几十倍,因此我很少用51,首选430!

          路漫漫其修远兮!我会一直继续MSP430探索之旅!

  •   搞过嵌入式开发的程序员一定知道有I2C总线,手机和电视中的主要串行技术,通过两条线SDA,SCL解决总线传输,地址区分和热插拔问题的技术。

      可是就是这么一个简单的东西,让我这个自认为有些经验的单片机开发者浪费了整整五个月!这还是我有比较充分的经验,在一年半前就已经非常了解I2C协议的情况下!这段时间我花了无数的时间在调试,思考,解决问题而没有一丝进展。反复的检查问题,想要的结果死活不出来!昨晚的反思让我今天早上我一大早起来第一件事就是调代码,结果正确出来的时候,眼泪都快出来了。这篇文章,总结下这五个月来的问题,这五个月给我好好的上了一课。

         五个月前,初步规划方案阶段:

        我做的体感项目发展到了第四代,为了尽可能的减少尺寸和功耗,将原来的64脚IPM封装的MSP430F149换成了更小,功耗更低的MSP430F2132。选择该型号有显然的好处:32QFN封装,硬件I2C,自带上拉电阻,16MHz的功耗更低。我们使用了原来所用的ADXL345加速计,MPU3050陀螺仪和HMC5883L的磁场计解决方案。在前一版的MSP430F149上是采用模拟I2C总线,而上述传感器挂在这条总线上跑起来都毫无问题,只要焊接无问题,就一定能保证正确结果。而事实证明,这种自信确实是最后的罪魁祸首。

      四个月前,第一版制作失败:

        换方案后,板子确实做得非常小,只有硬币那么厚,小拇指那样的细条。我们在设计上花费了很多精力,保证尽可能小的体积和封装。PCB制版,焊接,上电,加速度计工作非常正常,而其他传感器返回都为错误。我们一看这个情况,I2C出来啦!单片机没问题!推断只能是传感器焊接问题。重新焊接,不行?那可能是布线和焊接问题。之所以考虑是焊接,是因为那种芯片非常难焊,所有管脚都在芯片屁股下面。如果技巧不够,很容易出现焊接不良的情况,以前的多数问题都是焊接问题。

      解决了一些小的布局问题以后,准备做第二次板。

        两个月前:第二版制作失败:

      第二版做出来之后,出现了更严重的问题,每次上电调试,第一次程序还能写进去,第二次就不行了。再用万用表测,电源短路。上面的所有传感器都烧掉了!后来才知道,用的助焊剂非常好用,但导电!如果不洗干净,就会出现短路的问题! 后来我们都把板子直接泡到酒精里。

         新的问题又出现了,单片机工作很不稳定。经常出现调试写入不正常,程序跑飞的情况,板子也会变得特别烫。用示波器一看,电源纹波相当大,在电源芯片旁边的电容烫的不能用手碰。仔细分析,原来是我们使用的电容值没有达到正常标准。这句话就在电源芯片PDF中的某一个非常不起眼的地方...更换以后,这部分没问题了。

         可是,I2C还是出不来!加速度计的0X00寄存器返回0XEF值,原本以为是对的,但实际上应该是0xE5;加上驱动程序一跑,发现加速度计根本没正常工作!其他寄存器有的值读出来是错误的,比如写入0x3E,读出来却是0X5F.有些根本就不能读!但磁场计却能出来~陀螺仪永远出不来! 这是为什么呢?既然磁场计能正确读值,说明单片机和I2C总线软硬件都没问题,难道加速度计和陀螺仪芯片是假的??    

      我们骂了一遍那些“万恶的”淘宝卖家,重新买了一批传感器回来。因为硬件制作确实严格按照要求做了。我们高兴的以为,这不是我们的问题,开心的等待着顺丰把芯片送回来。同时,继续改进电路,完成了第三版。

      一个半月前:第三版的I2C依旧有问题:

        芯片买回来了,新PCB到货了,兴冲冲的上电,发现问题依旧,磁场计能出来,加速度计问题依旧,万恶的0xEF。陀螺仪还和往日一样,完全没反应。这下尴尬了!

        焊接问题?!我们找了手机维修的大牛,仔细的给我们焊了一遍。同组的同学也认真的焊接好多板子,出现的还是一样的问题。

      软件I2C问题?但为什么磁场计能出来?所以没问题

      电路问题?仔细查过,没问题。所有的布线都OK,测试都联通。

      单片机?工作的挺正常啊,JTAG调试都没问题啊,让它输出高电平就是高,输出低就是低,上拉电阻乖乖的焊上了。我不认为它有什么问题。

      所有的选项都排除了,我只能把它归结到自身:你平时太堕落了,老天看不下去,故意让你遇到这种最恶心的问题。那段时候,我极度迷信。事实上,这套系统我在PC端上开发了足够强大的服务器端,采用了最新的技术和设计方法,几乎硬件一调好,系统就能工作啊!各种应用接口,通信流量监测,识别算法,插件系统,自然交互界面,无所不用其极。这个项目不属于我正常的工作范畴,算是“周末项目”,做着玩玩赚点小钱花,但并不表示我对它不重视。它让我很有动力的学了很多的东西。有点意思的是,如果不是这套体感系统,我也不会这么钻研.NET程序开发,也不会在博客园开博客。哈哈。

      半个月前:绝望

      就像前一段,按照我的逻辑把所有的问题都考虑了一遍(后来想,真的是这样吗?)依旧无果。我已经不知道怎么做了,我变的迷信癫狂不知所措。可能是这个项目本身给我带来了太多的好处,老天已经觉得它应该退出我的人生舞台了。

      可是我真的能放弃么?花了那么多钱,当然钱是次要的,那么多时间和精力才是关键。如果现在放弃,原有的那些东西都没有了任何价值,最多证明我学过某门技术。我的无数思考和结论都没有了意义。    最主要的是,我困扰在了我原本认为最简单的问题上,它不可能解决不了呀?!怎么回事!

        好多次我11点多从实验室回来,一晚上的时间继续白费,还是出不来.....

      我翻了好多技术资料,发了好多询问帖,有人会帮我回答,但那些问题我都挨个排查过了,没有问题啊、

      我甚至不相信逻辑,觉得数学书上的证明都是扯淡,谁也没告诉你1+1一定等于2。我生活在一个不可知的世界。

      我会经常做梦,梦到传感器都出来了,然后兴奋的一塌糊涂,早上起来插上板子,发现问题依旧,还是"0XEF",还是错误的I2C!

        最近:契机

        我逐渐的将注意力集中在了单片机上面,是它的问题么?我虽然了解I2C协议,看过了各种可能的问题,并严格按照I2C协议写了代码。但我开始怀疑它在通信的时候到底做了什么。我为什么不用示波器看看波形呢?它输出高低电平无误就证明你该相信它么?

       波形捕获证明:它出现了中间电平。 数字电路只有0和1,不可能有中间电平这种东西!如果出现,只能是电阻分压!  在与ADXL345通信时,这个问题表现得尤为明显,MHC5883L通信时,中间电平变低了,正好落在了单片机能正确检测的范围之内。

       那么,出现了不该出现的电阻,它在不合时宜的地方出现,分解了本该正确的电平值导致了单片机端口电压检测错误!电阻从哪来呢?我明明已经关掉了单片机的上拉电阻使能,按照PDF的说明,这应该也是没有问题的。但肯定就是单片机问题!

        昨天:心血来潮

        正好是圣诞节,疯玩了一天,晚上回来,还是决定去实验室看看。将板子的I2C总线引出来,去掉CPU,接到了原来的MSP430F149软件I2C引脚,上电,三个传感器都毫无压力的出来了。非常流畅和清晰!就是单片机问题!

      换单片机?代价太大,如果换掉,那么所有的板子都要重做。而且原来的尺寸太大,所以原来的外观设计都要推倒重来。如果这一步迈出去,我们五个月来的辛苦基本上都白费了。真的要这样么?原来的程序没问题啊!或许只能这样了。

         我不信,MSP430提供了硬件I2C,为什么不用硬件I2C试试看呢?原来尝试过,但很奇怪所以没有继续深入。那我就要和你死磕。从晚上9点钟开始到12点宿舍熄灯。找到了一份完整的关于硬件I2C的代码模板,不过有些问题,明天继续。

         今天:成功!

        6点钟睡不着了,想着那些事情,我赶紧坐起来,趁着自己有些精神,赶紧看那些代码。昨天晚上太累,好些地方写错了。修修改改,哦?有点意思啊。再改掉了中断的代码和其他的一些问题之后,加上驱动函数,加速度计正常工作!陀螺仪正常工作!磁场计正常工作!

        究其原因,是MSP430F2132和MSP430F149的端口结构不一致导致的,2系列的单片机存在上拉电阻和一些额外的配置,导致一般的模拟I2C代码移植到该单片机时,检测高低电平的时候无法正确判断。但硬件I2C不存在这个问题,只要外部加上拉电阻,就能正常工作,具体细节我还没有仔细论证分析,等待几天之后的分析结果。

      那一刻,我有点晕,有点不想说话。反倒是很平静。这种事情,从来都不会有那种“放着不动就能成功”的情形。但还是赶紧跑出去给队友打了电话。兴奋之情完全不用形容~原本这一刻,是准备在做好板子焊接完成后的五分钟搞定的,我花了五个月时间。经历了各种痛苦和无语,它今天总算出来了。项目因为这个问题卡的死死的没有半点进展,如果早出来的话,现在几乎已经做完了.....%>_<%

      对这个成功,我真的无颜大肆渲染,这可能是一个本科生的简单小实验而已,把我足足干掉了五个月的时光。它不是什么历史性时刻,它仅仅是一个普普通通项目的简单开始而已,仅仅如此。

         总结:

        这部分可能是最本文关键的部分。我的盲目自信和粗心让我在如此简单的问题上困扰了整整五个月。这些问题让我快崩溃。写在下面的:

        任何事情首先建立反馈,能让我们真实的知道内部发生了什么,串口,调试JTAG,液晶屏,或者是示波器,逻辑分析仪,这些都是非常得力的助手。

        不怕一个问题出错,怕就怕在它是半对半错性质的,对的那方面很容易让你排除本身应该存在的问题,掩饰错误的真正原因,HMC5883L我恨你。

        仔细看手册说明!我什么时候学的坏毛病:喜欢跳读,大致明白什么意思就行了。可是,那些问题就藏在原本跳过去的地方(不过对我这个问题,单片机手册上还真没说明,否则我真能看出来,但电源芯片配置不正确烧板子的事情,却绝对有关联)。

        这个世界是有逻辑的,如果它出错,那么肯定是有内在问题,上帝非常公平。

      认真严谨的工作态度,详细分析问题的能力——这两句是我写实验报告时经常写的,但我实际按照要求做了么?没有!别人给你传授经验为什么很多情况没用?来自真正努力地实践,而这却是好多人挂在嘴上而又特别缺乏的,包括我。多数问题真的都是个态度问题。

         这个问题让我险些放弃了整个项目,因为越来越大的实验室压力和考试压力,让我不知道该怎么走下去。实际上再过几天调不出来,我就很可能放弃它了,它往后的故事也不会再有了,也更不会有这篇文章了。文章虽长,可我写它的时间不超过调试上面那个问题的五十分之一。

        这个问题虽然不大,但确实是自我出生以来让我最无语的问题,仿佛死死的卡着脖子不能说话,痛却说不出来。

        我很感激陪伴我度过这五个月的队友,我妹妹,还有好多关心我的人。我还相信一件事情,我虽然是党员,但我也是“二元论”者,这个世界有物理规律支撑,同时,天在看,地也在看,努力工作,好好待人待己,这个世界都不会亏待你的。

  • 我在学习TI的Cortex-M3已经快一年了,刚开始的时候是流明诺星公司的产品后来被TI收购了,就一直在关注TI的Cortex-M3的产品。并且TI把它进行了丰富了完善。从次开始了TI的论坛的生涯,逛论坛下载TI的资料也成为了习惯。

    在学习TI的Cortex-M3的时候也是必要迷茫的时候,那个时候是TI的Cortex-M3产品开始起步的时候吧,到现在TI的Cortex-M3的产品已经在市场上很好的发展。随着M4的发布和市场的流通TI的产品更具有市场的竞争价值。

    刚接触的TI的Cortex-M3产品看见库函数就头疼,很长的库函数叫人容易打错。例如SysCtlPeripheralEnable();刚开始敲代码的时候容易打错,最后用英语单词的记忆方法才记住,并且效果很好,不管在其他模块的学习中都是用英语单词来记忆函数功能或者寄存器的名字。

    TI的Cortex-M3的库函数做的确实非常好,自己用起来也非常的非常的顺手,但是不能让人了解底层的东西,特别是寄存器的设置。自己感觉自己总是飘在云雾上。所以在进一步学习TI的Cortex-M3的时候我只看库函数的设置,并且了解里面的寄存器的设置,同时让我更加理解了TI的Cortex-M3的库函数,并且感觉他的库函数做的确实惟妙惟肖。

    我从大二下学期开始接触TI的Cortex-M3,我是ucosii和TI的Cortex-M3一块学的,那时候在ucosii上下载到板子上并且点亮个LED灯,高兴的不得了。但是对于库函数仍然是很难理解,因为之前学习PIC的时候都是直接对寄存器直接设置,感觉很不适应。之后才感觉到库函数写的确实不错。

    在学习TI的Cortex-M3的快一年的时间里,让自己提高了自己思考问题和独自解决问题的能力。并且我申请了学校的关于TI的Cortex-M3的LM3S5749板子的GUI的设计,因为LM3S5749板子没有液晶屏(周立功公司的板子),还得自己快扩,费了自己很大的力气终于让液晶屏亮起来了,板子的100个引脚让我用过完了。之间还给周立功的公司的技术服务打电话寻求问题,在周立功公司的网站发帖,最后奇迹般的液晶屏的屏幕刷了起来,让自己高兴了不得了。然后是ucosii在板子上运行,GUI的移植和在液晶屏上的显示。

    其间板子有段时间不能工作,用LM Flash Programmer进行flash的擦拭才可以工作,把自己吓了一跳。

    总体感觉TI的Cortex-M3还是不错最近自己在学习的调试方法和整体架构的设计。在成长学习中,希望与论坛里网友多多交流提高自己的水平,并且自己用LM3S811设计的四足机器人是自己整体感悟产品的设计的严格和系统的设计的严格。细心,沉着,团队合作,解决问题并发现问题,创新的思想都是在设计产品必须得,虽然自己还没有毕业,但是要不断地培养自己的这些习惯并且达到成熟,希望自己毕业的时候能够可以有一个高度,开始自己的社会生活。

  • 我在学习TI的Cortex-M3已经快一年了,刚开始的时候是流明诺星公司的产品后来被TI收购了,就一直在关注TI的Cortex-M3的产品。并且TI把它进行了丰富了完善。从次开始了TI的论坛的生涯,逛论坛下载TI的资料也成为了习惯。

    在学习TI的Cortex-M3的时候也是必要迷茫的时候,那个时候是TI的Cortex-M3产品开始起步的时候吧,到现在TI的Cortex-M3的产品已经在市场上很好的发展。随着M4的发布和市场的流通TI的产品更具有市场的竞争价值。

    刚接触的TI的Cortex-M3产品看见库函数就头疼,很长的库函数叫人容易打错。例如SysCtlPeripheralEnable();刚开始敲代码的时候容易打错,最后用英语单词的记忆方法才记住,并且效果很好,不管在其他模块的学习中都是用英语单词来记忆函数功能或者寄存器的名字。

    TI的Cortex-M3的库函数做的确实非常好,自己用起来也非常的非常的顺手,但是不能让人了解底层的东西,特别是寄存器的设置。自己感觉自己总是飘在云雾上。所以在进一步学习TI的Cortex-M3的时候我只看库函数的设置,并且了解里面的寄存器的设置,同时让我更加理解了TI的Cortex-M3的库函数,并且感觉他的库函数做的确实惟妙惟肖。

    我从大二下学期开始接触TI的Cortex-M3,我是ucosii和TI的Cortex-M3一块学的,那时候在ucosii上下载到板子上并且点亮个LED灯,高兴的不得了。但是对于库函数仍然是很难理解,因为之前学习PIC的时候都是直接对寄存器直接设置,感觉很不适应。之后才感觉到库函数写的确实不错。

    在学习TI的Cortex-M3的快一年的时间里,让自己提高了自己思考问题和独自解决问题的能力。并且我申请了学校的关于TI的Cortex-M3的LM3S5749板子的GUI的设计,因为LM3S5749板子没有液晶屏(周立功公司的板子),还得自己快扩,费了自己很大的力气终于让液晶屏亮起来了,板子的100个引脚让我用过完了。之间还给周立功的公司的技术服务打电话寻求问题,在周立功公司的网站发帖,最后奇迹般的液晶屏的屏幕刷了起来,让自己高兴了不得了。然后是ucosii在板子上运行,GUI的移植和在液晶屏上的显示。

    其间板子有段时间不能工作,用LM Flash Programmer进行flash的擦拭才可以工作,把自己吓了一跳。

    总体感觉TI的Cortex-M3还是不错最近自己在学习的调试方法和整体架构的设计。在成长学习中,希望与论坛里网友多多交流提高自己的水平,并且自己用LM3S811设计的四足机器人是自己整体感悟产品的设计的严格和系统的设计的严格。细心,沉着,团队合作,解决问题并发现问题,创新的思想都是在设计产品必须得,虽然自己还没有毕业,但是要不断地培养自己的这些习惯并且达到成熟,希望自己毕业的时候能够可以有一个高度,开始自己的社会生活。

  • 先讲个项目,就是姿态检测,目前所用到的就是,自平衡小车,多轴飞行器

    自身的学历不高,从三星的4位机走过来,也接触过多种MCU,有日系的也有台系的,从08年以来,开始进入C2000的大军队伍

    切入正题:  姿态检测是业余时间在做,主要MEMS传感器的使用,希望有更多的朋友来关注。

    08年学习C2000,选用利尔达的 28016开发板, 工程项目用在BLDC的控制上。

    09年在论坛上面看自平衡小车和多轴飞行器比较流行,于是花时间搜集资料,但是大部分都是选用AVR系列和PIC

    但是也看见了使用MSP430的,看到TI官方网站主推28035,就想到用此款芯片制作

    首先芯片选用了C2000的28035,开始选陀螺仪传感器和加速度传感器,确定了低端和一个低中端的

    下面来个选型:

    方案的選定:

    1.角速度傳感器:  ADI  ADSR620    3PCS  

    OR  ENC-03R  3PCS

    OR   IXZ-500   2PCS

    2.加速度傳感器:  ADI  ADXL330    1PCS  

    OR  BMA  145

    3.溫度傳感器:XC-31B

    4.DSP選擇:

                         F28035   NEW

    硬件架構圖

    GPS/气压传感器---------》  |=======|

                            |     AD      |

    三轴加速度X/Y/Z-----------》 |                |

                            |                |====》F28035    =====数据输出

    陀螺仪传感器X/YXZ-------》 |                |            数据处理      

                             | 转换   |                    

    温度传感器-----------------》 | =======  |

    工作說明:

    1. 三軸加速度/三軸角速度/溫度傳感器的輸出都是模擬信號;濾波以後由12BIT的A/D轉換器,採樣數據傳的DSP,DSP經過數據處理,算法就不講了……

    2. 將採樣信號還原成零偏置和靈敏度誤差及溫度補償后的精確物理量,然後進行數學預算,DSP的功能及體現出來

    3.數據輸出端口

    PCB板已经做好,进入调试阶段,后续慢慢上传测试数据和照片:

    今天晚上先讲到这里,时间不早了》》》》》》》》

    》》》》》》》》》》》》》》》》》。。待续  》》》》》》》》》》》》》》

  • MSP430---液晶驱动

    液晶的驱动有4种方法:静态,2MUX或1/2占空比,3MUX或1/3占空比,
    4MUX或1/4占空比。对于不同系列、不同型号的液晶驱动原理,控制方法都是一样的,不同点在于驱动液晶段数不一样,或可显示信息的多少不一样。我们采用4MUX,这种方式也最简单。

    其中需要注意以下两点:

       
    (1)液晶的偏压。由于液晶驱动使用交流电压,所以必须根据液晶的工作模MSP430进行偏压设置,具体的操作是:STATIC模式下,R33开路,R03-R23接地,2MUX模式下,分别在R33、R13以及R13、R03之间接上10K的电阻;3/4MUX模式下,分别在R33、R23之间,R23、R13以及R13、R03之间接上10K的电阻,这样就能保证COM0-COM3出来供给液晶块的电压符合要求。
      

       
    (2)频率的设置。MSP430有三种时钟ACLK(辅助时钟)、MCLK(主时钟)、SMCLK(子时钟),其中液晶的驱动频率FCLK来自ACLK。在XTIN和XTOUT之间接上振荡频率为32KHz的晶振,Fclk可以根据需要选为1024Hz、512Hz、256Hz、128Hz等。由FRFQ0和FRFQ1的设置可以满足不同液晶对频率的要求,其中Flcd=2*MUX(rate)*F(framing)。

       
    例如:采用3MUX,已知F(framing)=100Hz-30Hz,

       
    由F(LCD)=2*MUX(rate)*F(framing)=6*F(framing),

       
    可知F(LCD)=180Hz-600Hz。可选择的F(LCD)为1024Hz、512Hz、256Hz、128Hz,所以F(LCD)=32K/128=256Hz,所以FRFQ0=1、FRFQ1=0。

       
    在以上两点做好的基础上,我们只要把要输出的数字所对应的代码输出到MSP430的显存就可以显示。实验中如液晶抖动,可适当提高液晶的驱动频率。如液晶亮度不够,应适当调整偏压电阻的大小。

       
    在驱动电路中,液晶可以等效为电容。两个电极分别为公共极与段极。公共极由CMOn信号驱动,段极由SEGn信号驱动。由此可以得到4种驱动方法。

       
    (1)静态驱动:使用一个引脚作为液晶公共端COM0,而每一段段极需要另一个引脚驱动。

       
    (2)2MUX驱动:使用两个引脚作为液晶公共端COM0、COM1每两段段极需要另一引脚驱动。

       
    (3)3MUX驱动:使用三个引脚作为液晶公共端COM0、COM1、COM2,每3段段极需要另一引脚驱动。

       
    (4)4MUX驱动:使用4个引脚作为液晶公共端COM0、COM1、COM2,每4段段极需要另一引脚驱动。

  • 这也太火爆了,先占一个

  • 最开始接触TI,是做表,要求电池供电,设计要求时不换电池要工作5年,零几年的时候,低功耗MCU不是很多,特别是uA级别的,放弃了习惯的51系列和PIC系列,综合选择下来,最终选了MSP430F413,重头开始学习TI,不过由于是FLASH,PCB上留了JTAG口,可以反复烧程序试验和在线仿真,那个时候觉得很爽,不像传统的MCU仿真,烧程序得分开(当然,现在这些问题每个厂家都不存在了,大批量OTP也可以先FLASH运行完美了换)。遇到的问题,由于是电池供电要求低功耗,所以外部上拉电阻都是兆级别,所以抗容易误动,解决抗干扰,对PCB布线要求稍高。现在正测试425A,也是要求低功耗,对16BIT ADC还没把握,继续试验中......... 希望新年新气象。

    另外,不知TI的研发注意到没有,有些型号是不是可以出个不带LCD的版本,减少芯片大小和脚数。

  • 我也来跟帖分享我与TI MCU的故事:

           我是本科毕业那年接触的TI的16位MSP430F425单片机的,给我感触最深的是,该单片机有许多基于片上的内部资源的寄存器,所有的资源配置利用只需通过寄存器的操作就可以了。

    有与51单片机完全不同的IO口的使用,首先先确定方向,然后再进行输入和输出,而且只需按位用BITX或~BITX进行或、与操作即可。

    有多种低功耗的模式,支持1.8~3.6V宽范围的供电电压,只记得在1MHz 1.8V条件下工作电流仅为160uA,休眠时仅为0.1uA……这种超低功耗的特性使得供电电池寿命终身化成为可能(对于这点以前只是听说过,当时未曾相信)……

    有多种时钟源(外部的和内部的),还可以倍频产生更高的频率,但时钟频率越高,功耗也就高了,此外时钟频率的上限还和电源的电压有关,因此要在时钟频率和可接受的功耗之间进行一个良好的平衡。

    有内置的看门狗亦可作为定时器使用。

    有基础定时器,作常规的周期性唤醒、延时、RTC计时和获得高分辨率的定时中断应用都是没有问题的。

    有Timer B-它的主要特色是有比较和捕获功能,可产生电平、单脉冲PWM波、带死区的PWM波、可变频率和移相输出,

    有3个独立16位的ADC,可以同时编组操作它们,430单片机内部自带温度传感器,可以对芯片内部的温度由内置的ADC通道采集进行测量。

    有512Bytes的RAM,16KB的主Flash和256Bytes的信息Flash,可以批量写入或擦除数据,对于数据的存储当然非常方便了!

    有USART,自带有专用的波特率发生器,所以支持小数分频,在手表晶振(32.768KHz)亦能产生9600Bit/s的波特率。

    还有LCD控制器,支持静态和动态显示,支持小数、负数和浮点数的显示,此外,很容易通过编程实现显示数值的“消隐”处理。

    此外以上各模块还支持各种时钟源,供用户根据需要选择配置。

    上面只是自己学习F425这款430单片机两年以来关于它的特色脑海中还残留的印象,稍微回忆整理以下,也算是复习了!

    下面来讲讲最近我手头正在做的 利用TI公司的LaunchPad开发板设计的一款 基于MSP430G2211实现的风速测试仪的经历和总结:

    此单片机的内部资源着实有限,只能通过定时器来实现软件串口,而且IO口稀少,其中P2还有两口是与外部手表晶振的连接公用的,项目中想要利用LCD12864点阵液晶实

    现测量数据的显示,如果采用并口的话,光LCD这一块,至少就需要10个IO,可想而知,供其他外围电路用的IO口就捉襟见肘了,但“办法总是有的”,当初想到的有效解

    决办法就是利用串口实现液晶的数据传输,而且12864采用I2C的接口形式,所以只需耗费两个IO口,这样省下的IO口就可以供其他外围扩展模块使用了!

    该开发板上的仿真模块是通过跳线和其他模块连接的,这样的一个好处是:可以将该仿真模块用作其他430系列单片机的仿真器来用,此外板子上还有DIP目标插槽支持多

    达20引脚的器件,所以对于没有直插430单片机仿真器的PCB板和实验电路板,可以先在LauchPad 开发板上先将程序烧录好,然后将已经编程的MCU很方便地卸下后插到定制电路板上。

    开发板上有排针或排针插座焊接的焊接孔,将2211的各引脚全部引出来,这种开源设计的形式有利于我们在LaunPad开发板的基础上开发自己的硬件。

    为了方便上手,学习使用该单片机的过程中,要尽量结合安装包中(MSP430_LaunchPad)的Labs和Solution的样例程序熟悉各种片上资源的功能编程方法,个人认为这是一种快速入门的捷径,其中的许多代码在开发其他项目时可直接移植到工程文件中,从而加快开发的进程。

    还有,个人建议:遇到单片机开发问题(硬件或软件开发上的)不要马上就去询问别人,问得太多,别人不耐烦了,自己的信心也就丧失了,正确的做法应该是自己先好好琢磨,感觉还是无从下手时千万别忘了还有LaunchPad的User‘s Guide,千万要记住,User’s Guide是学好单片机最正规的和最好的老师,多看、多查Uer' sGuide是

    实现单片机学习过程中“少求人”或“不求人”的最好的办法。Besides,我们还可以充分利用网上有的430单片机的论坛(最权威的当然是TI的官网,上面有许多芯片的应用笔记),棘手的问题Baidu or Google or 看看应用笔记还可以在论坛上留帖提问,只要你的问题不是无关紧要的,总有一些高手会给你满意的回复的!

    最后,就是遇到问题多记录、多总结,困难的东西尽力做成,简单的东西尽力做好,有好的想法就马上动手开始实践(别光想不练,想再多还是空的),尽管有些东西当时看着不怎么高端、不怎么有难度,但将其做出来并经过总结积累后都是一笔宝贵的财富!

    稍微总结一翻,不算有条理,希望大家看过之后有所启发和收获……

     

  • TMS570LS 系列MCU学习心得

    由于这款片子推出时间不长,使用过的人也比较少。抽空写了这篇小小心得,希望这篇小小的心得能有益于打算在此平台开发或正在使用此平台开发的朋友们。

    1. MCU型号:TMS570LS20216,这个系列的其他型号也可以参考此文档,同系列不同型号只是片上资源不同而已。

    2.软件环境:

    IDE— Code Composer Studio Version: 4.2.3.00004;

    外设driver代码生成工具—HAL Code Generator version 2.09.000,Hardware abstraction layer code generator;

    NHET Assembler—HET Simulator version 1.1;

    NowECC-- Ecc generator tool;

    NowFlash—烧写程序用;

    3.硬件环境:

    开发板1——TMS570 MCU Development Kit (TMDX570LS20SUSB,TMS570 Safety MCU Demo Board), 这是一个USB接口开发套件,这个开发板自带一个mini emulator—TI XDS100V2 USB JTAG Emulator,直接接到PC的USB端口就可以调试程序,通过这个开发板可以了解一下TMS570的ADC, NHET, CAN, SCI等模块,有点不足的就是这个自带的emulator调试程序效率不高;

    开发板2——TMS570 MCU Development Kit (MCB board, motor control board), 这个板子功能比较强大, 调试程序速度也比较快, 含JTAG,ETM等接口,可以用来学习TMS570的所有模块,自带电机控制demo程序,建议使用这块板子来进行开发,稍微不足之处就是有很多外设引脚没有引出来,所以有些时候显得不太好测试;

    仿真器——XDS510 USB,JTAG调试,如果使用开发板2来开发就最好使用此emulator;

    4.学习心得:

    这里强调一句,MCU datasheet文档要用最新的文档,由于旧版本的文档有一些信息是错误的或写的不好的。我在学习EMIF module时,最开始由于看的是旧版本的datasheet,越看越晕,这章写的不好;后来得到新版本datasheet后就好多了,这样不会走弯路;另外,在看TRM时,结合HAL Code Generator一起来学习,这样能加速学习进度和理解;

    5.需要参考的文档:

    Technical Reference Manual (TRM)-- spnu489b.pdf;

    TMS570LS Serial datasheet--tms570ls20216.pdf

    还有一些从TI网站上download的application note文档。

    6. 结束语

    抛砖引玉,与大家共享;

  • 最早接触到TI的MCU是在大学的课程设计,当时使用的MSP430F149芯片,从刚开始接触到这个芯片,到最后

    的调试,每一步都是比较容易的,没有遇到什么比较麻烦的问题,因为难点不在MCU本身,主要是外围的信号

    调理电路比较难以调试。因为TI在官方的网站上列出大量的有关MSP430的应用案例和相关参考设计。尤其是

    代码库,在当时使用还没有感觉效率特别高,只是觉得设计该代码库的专家考虑到非常的周全,涉及到

    MSP430 的方方面面,并且该代码库较为易用,在IAR工作平台下,可以是理想的选择。但是要注意的是:需

    要编程者在使用该外设时,明确使用方式,分析清楚工作流程,该外设如何参与CPU的工作,是中断方式、还

    是轮询,对于一般的应用,如果没有特别的要求,至少使用定时器的中断,这可以为后续的软件模块添加留下

    空间。在参加工作之后,接触到TI的竞争对手ST(意法半导体)的STM32芯片,也使用TI的 LM3S 系列芯片,

    关于这两者的比较,这里就不在说明,每个设计工程师都有自己的判断准则。就我个人使用情况而言,在库函

    数的设计方面,TI的软件工作者在代码库使用和整体执行效率要高一些,这种优势体现在TI 的 Stellaris MCU

    上,整个StellarisWare的设计完全是按照芯片的设计来进行,应用到某一个外设,是很直观的。并且TI提供很

    清晰的文档说明该代码库函数,每一个重要的软件堆栈,都配有相应的说明,例如USB的应用,图形库的应用

    。因此,在开发基于USB外设的应用,可以实现到TI的网站查看有关USB设计的案例。在MCU产品日益竞争的

    今天,MCU的易用性,快发快发性,和稳定性成为开发基于MCU产品重要指标。在有限的设计、测试时间内

    ,如何快速、稳健的开发产品,是设计工程师考虑MCU一个重要方面。TI的StellarisWare已经为TI的MCU做

    了很好的开头,另外,MCU的稳定也是一个非常重要的方面,尤其是全天候、不间断的工作,这就要求对系统

    各个方面都有很高的抗干扰要求,这里就我之前的一块电路板来说来说。MCU芯片的接地和电源,大部分都会

    说在电源前面加入滤波、去耦电容就可以了,但是在处理器的地上呢?有的时候,参考的地并不是真正的地,

    而是数字地、模拟地,信号地,等几种“地”,因此在给处理器的地接线时,需要明确该“地”是那中类型的

    “地”,该需要隔离的,就一定要隔离。

  • 我在研究生时开始接触TI的MCU,我们选用了一款精简版的MCU TMS320F2801,这是一款定点的采用最新工艺的MCU,有很多专用IO,特别适合于控制,对于不同的控制需要从280X系列中分别选取,100pin管脚封装很小,价格也相当实惠。

    开始的时候,我完全是个菜鸟,自己把硬件的100个pin的说明反复读了n遍,多亏TI的说明文档,相当全而且很清晰,比很多厂商的说明书易懂,第一次设计电路还是出了问题,flash的电源没接,CPU的电压没有采用TI专用芯片,采用RC延时结果延时过长,导致系统直接进入掉电模式,这个问题纠结了很久,最后总结还是不要为了省几块钱,不用TI的典型芯片啊,这样会影响进度的。

    开始软件设计时,TI的说明文档起了太大的作用,很多coder直接可以官网下载,而且采用框图的说明方式,很多例子,特别易懂,完全是菜鸟的宝典那,这一点是其他厂商做不到的。

    在设计过程中,有什么不懂的问题,TI技术支持很负责,不厌其烦,教到你会未至,深为感动!

    最后,希望大家开始之前最好用Demon板,等自己熟悉之后再开始自己的设计,这样会省去开发中的很多曲折,毕竟MCU只是工具,自己的思想才是最重要的。

  • 接触了MSP430有半年了吧,是做一个基于zigbee的东西,要节能的话,必须要用到定时器的中断,但是MSP430F2618只有两个定时器,一个已经用在了唤醒网络层,另一个也用了,但是我必须还要一个定时器的中断来产生PWM波支持我们外接的电路,然后看到定时器有多个通道,但是多个通道不仅中断是一个,关键是时钟也只能是同一个,但是这又不满足唤醒MAC和PWM波的两种频率,现在就剩下这种情况了,哎~~怎么办呢~~

  • TI是模拟世界中的老大,很多年前就开始使用TI的芯片,比如:74系列的逻辑芯片,IO口扩展芯片,电平转换芯片,各种ADC,DAC等。

    也许俺们是第一批使用CORTEX-M3的用户吧。在当时只有LUMINARY公司推出CORTEX-M3的LM3S系列的时候,俺们就已经开始使用LM3S了,后来,LUMINARY被TI收购。自然而然的变成了使用TI的产品,虽然现在的MCU市场已经有多家公司推出CORTEX-M3(ST,NXP,富士通,飞思卡尔等),直至今日,仍然在使用LM3S,从未改变。

    由于使用LM3S比较早,所以在公司的很多产品中都成功的使用LM3S,现在用的比较多的是LM3S9B92。对LM3S的外设,用的最多的就是I2C,SPI,UART和ETHERNET。前面已经有很多网友讲述了LM3S的优点,俺在这里也不再重复,俺就来讲一下LM3S需要改进的地方(仅限I2C,SPI,UART和ETHERNET)。

    (1)I2C

    LM3S的I2C作为从机时,不支持I2C general call address,希望增加这个功能。

    (2)SPI

    LM3S的SPI的CS引脚是发送一个字以后,自动从低变高,发送下一个字的时候,再变低,发完以后又自动变高。但是,有的芯片的时序是SPI发完一个字以后,仍然CS为低,直到发完所以数据字以后,CS才回到高电平。这种情况,俺就只能使用一个GPIO引脚来作为CS。希望可以在这两种时序中进行选择。

    LM3S的SPI发送数据总是先发MSB,最后发LSB。可以增加一种模式,先发LSB,最后发MSB。这样用户用的时候更灵活一些。

    (3)UART

    LM3S的UART1虽然有RTS,CTS引脚,但是其工作模式却不能作为RS485的方向位控制,最好增加RS485模式,用于控制RS485的方向位。

    (4)ETHERNET

    ETHERNET的收发缓冲区太小,只有2KB,如果按照以太网最大的帧长度来计算,两个帧都无法容纳,希望将缓冲区做大一些,8KB比较适合MCU。

    ETHERNET增加硬件自动计算IP,UDP,TCP校验和功能,提高性能。

  • 明年,我也要开始学习lm系列的mpu了,看大家发表的,很多都是这方面的,不知有没有lm系列的样片吗?

  • 我第一次用TI的产品是6年前,当时用的是430F147,合作单位很推荐这个产品,我在更早之前用过51、z80之类的cpu,对430这个产品很是陌生,但是有推荐有应用就必须承担任务了。

    拿到手的是很小的一个小芯片,我之前有芯片设计的基础,感觉这样薄的片子能耗肯定很低,就查了查论坛,发现有人说用柠檬做的电池就可以驱动430了,有点夸张,不过后来我做过实验,确实对电压电流的要求比较低。在工程师之间的交流中,合作单位的工程师对这个CPU的推崇主要是性能好的完全可以替代51,性价比突出体现在比philips的51要便宜一半,低能耗在设计无电源接入产品中很有用。

    我是腊月二十开始拿到例子代码,是汇编做的,当时开发板只有一块合作单位自己做的,很简单,只能跑程序,外设都没有,驱动什么的是不能指望了,产品设计是获取电源模块的温度、电压、电流并计算功耗,把上述的值传送到LED上,并通过485总线发送到上位机中。当时要求我和另一个同事进行开发,同事建议是C,但是我拿到的例子是汇编,合作单位的工程师也建议使用汇编,我有用汇编和C做单片机的基础,我们决定同时做,那个快用那个,毕竟我离开汇编有很几年了,我不知道自己的选择对不对,因为只到腊月二十七,我都是在汇编的云里雾里过来的,mov、call之类的单词充斥的脑海,二十七这天硬件加工完毕,我拿着硬件先烧录了一个程序,目标是点亮LED,使用的是SDI驱动,没有亮。合作单位的工程师也试了一下,没有办法解决,过年过年,一个惆怅的年开始了——那是2007年的春节。

    初五,我考虑了一下还是去看看,是不是硬件的问题,合作单位的工程师也在,搞嵌入式设计的人总把自己弄的累死累活的,我打开了PCB设计,针对SCH的原理图,每一个连线和管脚的查,SDI的连线错了,输入和输出接反了。这肯定点不亮了,怎么办,两个工程师什么都可以造,改成IO口驱动了,问题找到了,驱动要写啊,谁写?我真的很希望不用自己干活,不过合作方工程师很“栽培”我,请我来写。敲入mov的时候我发觉自己很没有底气,参看的说明书,我写了IO口的读函数和写函数,并修改了显示函数,上电,LED屏幕出现了全亮,我看看了表,用了2个小时,我发现430的汇编比51好像好用很多,下来我还是按照把程序功能划分成很多小模块,我拿到的例子程序大概有10个子函数,我的版本改成二十多个,并且把不同部件的初始化都独立出来,做过汇编的人会知道,这样的划分会看的你头晕目眩,到处都是call这类的调用,但是这样的设计逻辑很清晰。腊月7号开假后,我一直进行编写工作,不懂的函数找资料,去TI网站找,不能进行浮点计算,那就直接改大100倍进行计算,快速发现快速解决问题,在正月十五的时候,我居然做完了,采集数据,分屏显示,485通讯,代码行大概1200行,剩下的是点阵字库,这时候我发现汇编好了和C是一样的。

    在这年3月我又有了一个棘手的活,用TI的2406做测速卡件,据可靠的传说,此类卡件国内外都是用2406/2407做的,而且是为了性能要求,必须用汇编,查了资料发现有一个大问题,这个汇编是RISC的,RISC的汇编和51类汇编的区别主要在内存读写上,RISC内存是分页读写,拿到卡件,和合作单位工程师一起编写、测试,发现risc编程困难只是夸大的谎言,哪有那样难啊,只要用心,其实都可以用的,不过那些指令真的很难背,全是英文简写,在开发中遇到最大的问题其实就是浮点运行,我们差一点就自己编写浮点运算库了,结果我们还是决定找找别人的肩膀踩踩,居然很容易在IDE的目录中找到了,在5月份中我们就全部编写完成了,当中有两个小事情,一个是IDE开发工具,当时开发是用3.1版本,flash编写需要单独下载一个软件,而在3.3版本这个软件是嵌入在IDE中,我建议用3.3,但是在工程师里面流传一个话,说TI的新软件bug多多,我还是去TI的网站上,很容易的下载下来,当我把软件编译完并烧写运行后,没有问题啊,很好用的,而且3.1速度慢,3.3速度很不错而且很稳定,谎言在工程师中间往往会成为一个无人去触及的边线,受伤的却总是工程师自己。(后来我了解到很多美国企业用的软件往往都是十几年前的,不过各个行业是不一样的,还是需要灵活了)。还有一个故事是在测试中,我发现有误差,这个误差很小,大概是万分之二的样子。找这个bug我用了3天时间,后来发现时中断的时间造成的,加上校正系数就到达100%的准确,据老工程师将,24xx系列的中断响应是非常快的,如果是51的板卡,校正系数段会非常难设计的。再后来还用2406做了另一个板卡,基本没有什么困难,3个月就全部搞定了。

    在后来的时间中,我又做了51的程序设计,大概有十几个板卡的样子,也做了arm9的设计开发,但是我很怀念用430和2406的时光,简单的例子、完善的网络支持,我从来不用打TI的支持电话,也不用去其他论坛,在TI官网就可以解决一切问题,而且TI芯片价格非常非常有竞争力,2406的芯片比51加其他功能芯片的价格反而要便宜十几元吗,而且速度和开发效率可言提升很多,但是没有几个人考虑的这些,真的很可惜。

    现在——2012年春节前,在我的桌子上有一个AM1810的开发板,这就是我2012要开始的工作,他也是TI的产品,集成了我需要的功能和组件,我希望自己能用这个芯片做出更出色的设计和稳定的产品。

    最后我向TI的工程师致以真诚的谢意,您们总是用最少的价格给我们带来最大集成度的芯片,谢谢。