9B90,EPI外扩SRAM-CY62158EV30问题



现在我的系统上外扩了SRAM,设置如下:

EPIDividerSet(EPI0_BASE, 4);

   EPIModeSet(EPI0_BASE, EPI_MODE_HB8 );

EPIConfigHB8Set(EPI0_BASE, EPI_HB8_MODE_ADMUX | EPI_HB8_CSCFG_ALE_DUAL_CS | EPI_HB8_WORD_ACCESS | EPI_HB8_WRWAIT_3 | EPI_HB8_RDWAIT_3, 1024);//EPI_HB8_MODE_ADMUX

   EPIAddressMapSet(EPI0_BASE, EPI_ADDR_RAM_SIZE_16MB | EPI_ADDR_RAM_BASE_6);

//EPIFIFOConfig(EPI0_BASE,EPI_FIFO_CONFIG_TX_EMPTY | EPI_FIFO_CONFIG_RX_FULL);

   while(HWREG(EPI0_BASE + EPI_O_STAT) &  EPI_STAT_INITSEQ) {}

然后定义数组:

uint8  imageDataBuf[MAX_EPAPER_TAG_NUM][EPAPER_DATA_NUM][EPAPER_DATA_LEN]__attribute__((at(0x60000000)));

问题1:

EPIConfigHB8Set();参数里是EPI_HB8_MODE_ADMUX而不是EPI_HB8_MODE_SRAM,当我用EPI_HB8_MODE_SRAM时,发现数据写入有问题,写一外数据就会在SRAM中看到好多个;

问题2:

系统运行后,有机率SRAM中有些内容不能被更改,是随机的;

问题3:

uint8  fls_para[PARA_NEW_LEN+READER_NAME_LEN] __attribute__((at(PARA_ADDR)))={0x12,0x98,0x32,};

uint16 fls_para1[(1024-PARA_NEW_LEN-READER_NAME_LEN)/2+1] __attribute__((at(PARA_ADDR+((PARA_NEW_LEN+READER_NAME_LEN)/2+1)*2)))={0x1212,0x3245};

uint8  imageDataBuf[MAX_EPAPER_TAG_NUM][EPAPER_DATA_NUM][EPAPER_DATA_LEN]__attribute__((at(0x60000000)));

这样定义编译烧写,会发现fls_para,fls_para1两个会全是0xff,而要先屏蔽imageDataBuf的定义,先烧写一次,再将其打开才能正常。

  • 问题1:不知道你在使用EPI_HB8_MODE_ADMUX工作的时候会不会有异常?我之前参考过类似操作SRAM的代码也是使用这种定义。

    问题2:是某一固定部分无法更改还是说任何部分都会出现无法更改的情况,仿真的过程中能否看出来?

    问题3:从表面上看不知是否跟定义的数据类型有关。