查看: 641|回复: 2

[S32] S32K144Flash的FlexRAM部分不能直接读写吗

[复制链接]

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2023-4-4
发表于 2023-3-4 21:29:55 | 显示全部楼层 |阅读模式
我模拟成EEPROM也不行欸,读到的数据和写入的数据不一样,而且写入的时候,数据会发生跳变求大佬帮忙看看!!!

void Flash_Init(void)
{
        /* Disable cache to ensure that all flash operations will take effect instantly, this is device dependent */
        MSCM->OCMDR[0u] |= MSCM_OCMDR_OCM1(0x3u);
        MSCM->OCMDR[1u] |= MSCM_OCMDR_OCM1(0x3u);


        flashResult=FLASH_DRV_Init(&Flash_InitConfig0,&flashSSDConfig);
        if(flashSSDConfig.EEESize==0u)
        {
                flashResult=FLASH_DRV_DEFlashPartition(&flashSSDConfig,0x02u,0x08u,0x0u,false,true);
                flashResult=FLASH_DRV_Init(&Flash_InitConfig0,&flashSSDConfig);
                flashResult = FLASH_DRV_SetFlexRamFunction(&flashSSDConfig, EEE_ENABLE, 0x00u, NULL);
        }
        else
        {
                flashResult = FLASH_DRV_SetFlexRamFunction(&flashSSDConfig, EEE_ENABLE, 0x00u, NULL);
        }
        EEPROM_BaseAddress = flashSSDConfig.EERAMBase;
}


uint8_t writeDataToEEPROM(uint8_t *data,uint32_t addroffset,uint32_t size)
{
        flashResult=FLASH_DRV_EEEWrite(&flashSSDConfig,EEPROM_BaseAddress+addroffset,size,data);
        return flashResult;
}




void readDataFromEEPROM(uint8_t *read, uint32_t addrOffset, uint32_t size)
{
        uint8_t i=0;
        for(i=0;i<size;i++)
        {
                read=*((uint32_t *)(EEPROM_BaseAddress+addrOffset+i));
        }
}



void flash_test(void)
{
        INT_SYS_DisableIRQGlobal();
        uint32_t i=0x00000001;
        uint8_t data;
        uint8_t read;
        data=0x12;
        if(!writeDataToEEPROM(&data,i,1));
        readDataFromEEPROM(&read,i,1);
        if(read==0x12)
        {
                sprintf(uart_info,"1\r\n");
                LPUART_DRV_SendData(INST_UART_DEBUG,(uint8_t*)uart_info,strlen(uart_info));
                while(LPUART_DRV_GetTransmitStatus(INST_UART_DEBUG,&bytesRemaining)!=STATUS_SUCCESS);
        }

}



我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2023-4-4
 楼主| 发表于 2023-3-4 22:18:30 | 显示全部楼层
这个问题解决了,原因是我在向flash读写的时候开启了看门狗,把看门狗关闭就好了
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2023-4-4
 楼主| 发表于 2023-3-4 22:20:14 | 显示全部楼层
但还有一个问题是,flexRAM的内存地址范围是0x14000000~0x14000FFF,但是我0x14000FFD~0x14000FFF无法读取,是什么原因呢,写入是可以的,求大佬解答
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-24 16:05 , Processed in 0.110640 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表