原创 [博客大赛]MSP-EXP430FR5739实验板初体验

2013-4-1 16:20 2786 19 22 分类: MCU/ 嵌入式

    本文由Ken Lee独立整理完成,首发于QQ空间,转载请注明作者与出处。作者水平有限,难免存在错误,不足之处请指正。由于个人原因,原署名斌斌-龙臻,Mr_D_prince不再使用,由Ken Lee,newofcortexm3替代。 


    MSP-EXP430FR5739 实验板支持新一代采用集成铁电随机存取存储器 (FRAM) 的 MSP430 微处理器设备。板上资源如图(6)所示:

20130401154650284001.jpg

图(6):MSP-EXP430FR5739 实验板


    出厂附带的demo包含了测试 FRAM 特性的4种模式。其操作方式很简单,上电后按一次S1,LED0亮,再按S2,进入FRAM高速写入速度测试模式。上电后按两次S1, LED0~1亮,再按S2,进入模拟FLASH写入速度测试模式。上电后按三次S1,LED0~2亮,再按S2,进入三轴加速度计测试模式。上电后按四次S1,LED0~3亮,再按S2,进入温度写入测试模式。

    用户示例程序中附带了用Java开发的上位机程序,在四个模式中均可看到往FRAM中写数据的速度。如图(7)所示,左侧仪表盘表示了当前模式1下的,FRAM的写数据速度,右侧仪表盘显示是模式2下的模拟Flash的写入速度。

20130401154936416001.jpg

 图(7):示例中的上位机     
    下位机其逻辑还是很简单的。其实现过程如下:
  1. 处理器和外设初始化,此时可观察到板上的LED灯闪烁几个周期。LED的电路设计见手册(slau343)17页,或者见硬件设计压缩包(slac502),LED的控制见函数StartUpSequence,这个功能的实现与Lab1的实现基本一致。
  2. 系统进入死循环,等待按键S1,S2中断。S1,S2分别与P4.0,P4.1口相连。其中断服务程序是__interrupt void Port_4(void)函数。使能与禁止中断函数分别为EnableSwitches、DisableSwitches。

在进行调用之前必须对其初始化,这个过程在上一步中完成。中断配置如下:

P4OUT |= BIT0 +BIT1;                   // Configure pullup resistor  

  P4DIR &= ~(BIT0 + BIT1);              // Direction = input

  P4REN |= BIT0 + BIT1;                  // Enable pullup resistor

  P4IES &= ~(BIT0+BIT1);                // P4.0 Lo/Hi edge interrupt  

  P4IE = BIT0+BIT1;                       // P4.0 interrupt enabled

  P4IFG = 0;                               // P4 IFG cleared


3. 程序根据按键S1的次数进入不同的模式。每个模式执行的逻辑基本类似,都要向FRAM写数据,控制LED输出,向上位机发送数据。不过模式2,模式3和模式4在写数据之前都得完成一件任务。模式2得先切换时钟,从而模拟出向Flash写数据的时钟频率。模式3和模式4则先配置加速度传感器和温度传感器的端口,然后进行AD转换。
    这个过程中,向FRAM写数据由函数FRAM_Write完成,如果起始地址在可利用的范围之内,该函数向存储区写入0x12345678,共512个字节。LEDSequenceWrite函数控制LED,分别对P3、PJ口输出高/低电平。向上位机发送数据的任务则交给了函数TXData。该函数发送的数据包以0xFA开始,以0xFE结束。第二位数据和第三位数据分别告诉上位机当前处于什么模式,有多少个LED灯点亮。利用串口调试工具监视串口,模式1下,下位机发送的数据首个数据为0xFA 0x01 0x00 0x00 0x00 0x00 0xFE,第三位数据位发生变化,从0x00递升至0x07,然后再次从0x00递升,表示了8个LED的周期性循环。模式2接收到的数据除了第二位是0x02外,变化基本一致,不过变化的速率明显下降了许多。以此对比突出FRAM的写入速度。模式3和模式4的第二位数据分别是0x03,0x04,第三位数据相同,是0x34。当程序从当前模式推出时,上位机收到的数据为0xFA 0x55 0x55 0x55 0x55 0x04 0xFE。
    其他程序的细节就不再累述了。上文中的LED和按键S1、S2的电路见图(8),或者参考TI提供的原理图。

20130401162028940.jpg

图(8):实验板核心部分原理图

 

对于Lab2,原先的工程在主程序部分是需要我们自己添加的。当然TI FAE也提供了解决方法,如下文的代码中加粗斜体所示,详请可参考Lab2_solution.c

MPUCTL0 = MPUPW;                    // Write PWD to access MPU registers

MPUSEG = 0x0804;                       // B1 = 0xC800; B2 = 0xD000

                                                // Borders are assigned to segments

MPUSAM &= ~MPUSEG2WE;         // Segment 2 is protected from write

MPUSAM |=  MPUSEG2VS;           // Violation select on write access

  

MPUCTL0 = MPUPW+MPUENA+MPUSEGIE+MPULOCK;  // Enable NMI & MPU protection

.

.

.

ptr = (unsigned int  *)0xC802

 

         但是将Lab2.c中需补充的部分按如上所述修改,或者将Lab2.c Exclude from build,将Lab2_solution.c Include Build之后依然存在编译没法通过的问题,如图(9)所示。

20130401161153161.jpg

图(9):Lab2编译问题

通过查手册slau272MSP430FR57xx Family Users Guide),了解到MPULOCK在寄存器Memory Protection Unit Control 0 (MPUCTL0)中,具体位置见图(10)。因此只要在头文件msp430fr5739.h中添加 #define MPULOCK (0x0002) 即可解决编译问题。当然为什么TI FAE没添加这句话,是否有其他的考虑,我还在思索中。

20130401161336947.jpg

图(10):MPUCTL0寄存器描述


    MSP-EXP430FR5739 实验板内部集成了FRAM存储器,附带的demo显著的论证了FRAM的快速性。其板上资源的丰富和低功耗的特性为不少应用提供了解决方案。也是一款优秀的,足以让用户了解FRAM特性的入门级实验板。

文章评论3条评论)

登录后参与讨论

用户539445 2015-5-21 19:32

对FRAM讲解的很清楚、详细

用户596096 2013-4-15 08:27

wqrewrewfewfewfewfs

chen_zs2012_704941858 2013-4-15 07:38

好东西*^_^*
相关推荐阅读
用户606080 2013-04-01 11:47
[博客大赛]FRAM
本文由Ken Lee独立整理完成,首发于QQ空间,转载请注明作者与出处。作者水平有限,难免存在错误,不足之处请指正。由于个人原因,原署名斌斌-龙臻,Mr_D_prince不再使用,由...
用户606080 2013-02-25 18:09
评论:@BonnieBaker's Blog 博客中提到的“Bruce Trump系列:为什么运算放大器会发生振荡——两种常见...”
讲的很细致...
用户606080 2012-11-24 16:58
【TI博客大赛】TI C2000 Delfino TMS320F28335的28335_Ram_lnk.cmd文件
       写在最前,不喜请略过。本博文的主要内容已在QQ空间、人人网、网易博客、百度空间等平台发表过,最近进行了排错和修改,作者为Mr_D_prince(斌斌-龙臻),也就是本人,前两者均为我...
用户606080 2012-11-24 16:35
关于博文发表的若干问题
      今天我算是给ednchina的博文发表的功能做了测试了,真的窝了一肚子的火。 首先没法用高级编辑模式来写博客,每次点击都告诉我未授权,却没提醒怎样获得授权。 普通模式编辑,一点...
用户606080 2012-11-19 20:45
【TI博客大赛】TI C2000 Delfino TMS320F28335 GPIO引脚的输入限制
    写在最前,不喜请略过。本博文的主要内容已在QQ空间、人人网、网易博客、百度空间等平台发表过,最近进行了排错和稍稍修改,作者为Mr_D_prince(斌斌-龙臻),也就是本人,前两者均为我在...
我要评论
3
19
关闭 站长推荐上一条 /2 下一条