5114|7

75

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于MSP430FR4133写FRAM的怪问题? [复制链接]

当执行FRAMWrite_uint64((uint64_t *)FRAM_RECORD_ADDRESS,0); 时,后20*4会被修改为0
原来0xffffffff,0xffffffff,被改为0x0000ffff,0x00000000

当执行FRAMWrite_Long((uint32_t *)FRAM_RECORD_ADDRESS, 0);时,后10*4=40会被修改为0
原来0xffffffff,被改为0x0000ffff,

void FRAMWrite_uint64(uint64_t *pFRAM_write_ptr, uint64_t ui64data)
{
        SYSCFG0 &= ~DFWP;
        *pFRAM_write_ptr = ui64data;
        SYSCFG0 |= DFWP;
}

void FRAMWrite_Long(uint32_t *pFRAM_write_ptr, uint32_t ui32data)
{
        SYSCFG0 &= ~DFWP;
        *pFRAM_write_ptr = ui32data;
        SYSCFG0 |= DFWP;
}

#define FRAM_RECORD_ADDRESS  0x1812


FRAMWrite_uint64((uint64_t *)FRAM_RECORD_ADDRESS,0);
FRAMWrite_Long((uint32_t *)FRAM_RECORD_ADDRESS, 0);

最新回复

楼主,想请问一下,你的常量地址定义有错是什么个情况? 我的是写入的时候,地址内容没有改变,全是FFFFFFFF  详情 回复 发表于 2017-1-22 17:10
 
点赞 关注

回复
举报

483

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
本帖最后由 yl20084784 于 2017-1-4 21:26 编辑

FRAM好像可以提供8位16位写入,64位有问题
FRAM
The FRAM can be programmed via the JTAG port, Spy-Bi-Wire (SBW), the BSL, or in-system by the CPU.
Features of the FRAM include:
• Ultra-low-power ultra-fast-write nonvolatile memory
• Byte and word access capability
• Programmable and automated wait-state generation
• Error correction coding (ECC)

这里没说可以按64位来,所以,你要手动把他拆分成两个word来写就对了

 
 

回复

1059

帖子

1

TA的资源

版主

板凳
 
你得操作不对,参考官方代码MSP430Ware中例子
//******************************************************************************
//   MSP430FR413x Demo - Long word writes to FRAM
//
//   Description: Use long word write to write to 512 byte blocks of FRAM.
//   Toggle LED after every 100 writes.
//   NOTE: Running this example for extended periods will impact the FRAM
//   endurance.
//   ACLK = REFO, MCLK = SMCLK = default DCODIV = ~1MHz
//
//           MSP430FR4133
//         ---------------
//     /|\|               |
//      | |               |
//      --|RST            |
//        |               |
//        |          P1.0 |---> LED
//
//   Cen Fang
//   Texas Instruments Inc.
//   August 2013
//   Built with IAR Embedded Workbench v5.60 & Code Composer Studio v5.5
//******************************************************************************
#include

void FRAMWrite(void);

unsigned char count = 0;
unsigned long *FRAM_write_ptr;
unsigned long data;

#define FRAM_TEST_START 0x1800


int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;               // Stop watchdog timer

    P1OUT &= ~BIT0;                         // Clear P1.0 output latch for a defined power-on state
    P1DIR |= BIT0;                          // Set P1.0 to output directionOUT

    PM5CTL0 &= ~LOCKLPM5;                   // Disable the GPIO power-on default high-impedance mode
                                            // to activate previously configured port settings
    data = 0x11111111;                      // Initialize dummy data

    while(1)
    {
        data += 0x00010001;
        FRAM_write_ptr = (unsigned long *)FRAM_TEST_START;
        FRAMWrite();
        count++;
        if (count > 100)
        {
            P1OUT ^= 0x01;                  // Toggle LED to show 512K bytes
            count = 0;                      // ..have been written
            data = 0x11111111;
        }
    }
}

void FRAMWrite (void)
{
    unsigned int i=0;

    SYSCFG0 &= ~DFWP;
    for (i = 0; i < 128; i++)
    {
        *FRAM_write_ptr++ = data;
    }
    SYSCFG0 |= DFWP;
}
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

4
 
由于开发进度很紧,我直接用TI 《MSP430FR4xx 实现的水表》中的程序
其中FRAM读写,只是他用的是程序区FRAM
void FRAMWrite_Long(uint32_t *pFRAM_write_ptr, uint32_t ui32data)
{
        SYSCFG0 &= ~PFWP;
        *pFRAM_write_ptr = ui32data;
        SYSCFG0 |= PFWP;
}

void FRAMWrite_Char(uint8_t *pFRAM_write_ptr, uint8_t ui8data)
{
        SYSCFG0 &= ~PFWP;
        *pFRAM_write_ptr = ui8data;
        SYSCFG0 |= PFWP;
}

pAddress = (uint8_t *)(FRAM_RECORD_BASE + (tRTCData.ui8Year - 13)*120 + (tRTCData.ui8Month - 1)*10);
FRAMWrite_Char(pAddress++,tRTCData.ui8Year);

FRAMWrite_Long((uint32_t *)FRAM_RECORD_ADDRESS,ui32Sum);

ui32Sum = *((uint32_t *)FRAM_RECORD_ADDRESS);

// Fram record address
#define FRAM_RECORD_ADDRESS 0xFF00         // Refresh every 1 second
#define FRAM_RECORD_CHECK 0xFF40         // First record check address
#define FRAM_RECORD_BASE 0xFA00             // Monthly record in stand-alone address
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

5
 
我读写8 16 32 64都根据他改的
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

6
 
uint8_t  i;
uint32_t *pAddress;
               
               
                for(i=0;i                 {
                        pAddress = (uint32_t *)(FRAM_RECORD_Freq + i*4);
                  FRAMWrite_Long((uint32_t *)(pAddress),flow_Freq_k[i]);
                }
               
                for(i=0;i                 {
                        pAddress = (uint32_t *)(FRAM_RECORD_rate + i*4);
                  FRAMWrite_Long((uint32_t *)(pAddress),flow_rate_k[i]);
                }

uint8_t  i;
uint32_t *pAddress;
               
                for(i=0;i                 {
                        pAddress = (uint32_t *)(FRAM_RECORD_Freq + i*4);
                  flow_Freq_k[i] = *((uint32_t *)pAddress);
                }
               
                for(i=0;i                 {
                        pAddress = (uint32_t *)(FRAM_RECORD_rate + i*4);
                  flow_rate_k[i] = *((uint32_t *)pAddress);
                }

FRAMWrite_uint64((uint64_t *)FRAM_RECORD_ADDRESS,0); //写FRAM (刷新)
//FRAMWrite_Long((uint32_t *)FRAM_RECORD_ADDRESS, 0);
//FRAMWrite_uint16((uint16_t *)FRAM_RECORD_ADDRESS, 0);


一样的啊!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

7
 
结贴,是常量地址定义有错,FRAM读写没有问题!

点评

楼主,想请问一下,你的常量地址定义有错是什么个情况? 我的是写入的时候,地址内容没有改变,全是FFFFFFFF  详情 回复 发表于 2017-1-22 17:10
 
 
 

回复

348

帖子

0

TA的资源

一粒金砂(高级)

8
 
QIHAO74 发表于 2017-1-9 14:34
结贴,是常量地址定义有错,FRAM读写没有问题!

楼主,想请问一下,你的常量地址定义有错是什么个情况?
我的是写入的时候,地址内容没有改变,全是FFFFFFFF
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表