0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MIMXRT1176支持8位列地址的SDRAM器件W9864G6

li1756686189 来源:嵌入式 MCU 作者:嵌入式 MCU 2022-12-01 15:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MIMXRT1176的开发板配套的 SDRAM是W9825G6KH,对应的列地址是9位的。

b4e76dd2-7145-11ed-8abf-dac502259ad0.png

MIMXRT1176支持的列地址是 8/9/10/11/12位。

b51d9d58-7145-11ed-8abf-dac502259ad0.png

SDRAM 替换成 W9864G6后,Column地址变为 8位的。

b54f6fc2-7145-11ed-8abf-dac502259ad0.png

SDK中例程目录 evkmimxrt1170driver_examplessemcsdramcm7,修改semc_sdram.c文件配置如下。

status_t BOARD_InitSEMC(void)

{

semc_config_t config;

semc_sdram_config_t sdramconfig;

uint32_t clockFrq = EXAMPLE_SEMC_CLK_FREQ;

/* Initializes the MAC configure structure to zero. */

memset(&config, 0, sizeof(semc_config_t));

memset(&sdramconfig, 0, sizeof(semc_sdram_config_t));

/* Initialize SEMC. */

SEMC_GetDefaultConfig(&config);

config.dqsMode = kSEMC_Loopbackdqspad; /* For more accurate timing. */

SEMC_Init(SEMC, &config);

/* Configure SDRAM. */

sdramconfig.csxPinMux = kSEMC_MUXCSX0;

sdramconfig.address = 0x80000000;

sdramconfig.memsize_kbytes = 1 * 8* 1024; /* 8MB*/

sdramconfig.portSize = kSEMC_PortSize16Bit;

sdramconfig.burstLen = kSEMC_Sdram_BurstLen8;

sdramconfig.columnAddrBitNum = kSEMC_SdramColunm_8bit;

sdramconfig.casLatency = kSEMC_LatencyThree;

sdramconfig.tPrecharge2Act_Ns = 15; /* tRP 15ns */

sdramconfig.tAct2ReadWrite_Ns = 15; /* tRCD 15ns */

sdramconfig.tRefreshRecovery_Ns = 70; /* Use the maximum of the (Trfc , Txsr). */

sdramconfig.tWriteRecovery_Ns = 2; /* tWR 2ns */

sdramconfig.tCkeOff_Ns =

42; /* The minimum cycle of SDRAM CLK off state. CKE is off in self refresh at a minimum period tRAS.*/

sdramconfig.tAct2Prechage_Ns = 40; /* tRAS 40ns */

sdramconfig.tSelfRefRecovery_Ns = 70;

sdramconfig.tRefresh2Refresh_Ns = 60;

sdramconfig.tAct2Act_Ns = 2; /* tRC/tRDD 2ns */

sdramconfig.tPrescalePeriod_Ns = 160 * (1000000000 / clockFrq);

sdramconfig.refreshPeriod_nsPerRow = 64 * 1000000 / 8192; /* 64ms/8192 */

sdramconfig.refreshUrgThreshold = sdramconfig.refreshPeriod_nsPerRow;

sdramconfig.refreshBurstLen = 1;

sdramconfig.delayChain = 6; /* For all tempeatures. */

return SEMC_ConfigureSDRAM(SEMC, kSEMC_SDRAM_CS0, &sdramconfig, clockFrq);

}

static void SEMC_SDRAMReadWrite8Bit(void)

{

uint32_t index;

uint32_t datalen = SEMC_EXAMPLE_DATALEN;

uint8_t *sdram = (uint8_t *)EXAMPLE_SEMC_START_ADDRESS; /* SDRAM start address. */

bool result = true;

PRINTF(" SEMC SDRAM Memory 8 bit Write Start, Start Address 0x%x, Data Length %d ! ", sdram, datalen);

memset(sdram_writeBuffer, 0, sizeof(sdram_writeBuffer));

memset(sdram_readBuffer, 0, sizeof(sdram_readBuffer));

/* Prepare data and write to SDRAM. */

for (index = 0; index < datalen; index++)

{

sdram_writeBuffer[index] = index % 0x100;

sdram[index] = sdram_writeBuffer[index];

}

PRINTF(" SEMC SDRAM Read 8 bit Data Start, Start Address 0x%x, Data Length %d ! ", sdram, datalen);

#if defined(CACHE_MAINTAIN) && CACHE_MAINTAIN

DCACHE_InvalidateByRange(EXAMPLE_SEMC_START_ADDRESS, 4U * SEMC_EXAMPLE_DATALEN);

#endif

/* Read data from the SDRAM. */

for (index = 0; index < datalen; index++)

{

sdram_readBuffer[index] = sdram[index];

}

PRINTF(" SEMC SDRAM 8 bit Data Write and Read Compare Start! ");

/* Compare the two buffers. */

while (datalen--)

{

if (sdram_writeBuffer[datalen] != sdram_readBuffer[datalen])

{

result = false;

break;

}

}

if (!result)

{

PRINTF(" SEMC SDRAM 8 bit Data Write and Read Compare Failed! ");

}

else

{

PRINTF(" SEMC SDRAM 8 bit Data Write and Read Compare Succeed! ");

}

}

备注:在 MIMXRT1050 MCU 上只支持9/10/11/12位,不支持 8位的。

b8651036-7145-11ed-8abf-dac502259ad0.png

SDRAM 配置参考文档:

https://www.nxp.com.cn/docs/en/nxp/application-notes/AN12026.pdf


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SDRAM
    +关注

    关注

    7

    文章

    449

    浏览量

    57281
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113153

原文标题:MIMXRT1176 支持8位列地址的SDRAM器件W9864G6

文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问CW32F003支持printf函数吗?

    CW32F003支持printf函数吗?
    发表于 11-21 07:48

    CW32L011支持哪些实时操作系统?

    CW32L011支持哪些实时操作系统?
    发表于 11-17 06:51

    stm32支持canfd和dma结合使用吗?

    stm32支持canfd和dma结合使用吗
    发表于 08-01 07:15

    K230支持ONVIF上传视频吗?

    K230支持ONVIF上传视频吗
    发表于 06-20 07:11

    MIMXRT 117x SPI从机 Rx FIFO溢出的原因?怎么解决?

    您好,我们在我们的产品上使用 MIMXRT1062 作为 SPI 主设备,MIMXRT1176 作为 SPI 从设备。我们在 SPI Slave 上发现了一个奇怪的问题。我们的帧大小为 9Words
    发表于 04-09 07:23

    rt1052 sdram从32mb更换到8mb不能使用问题

    使用的sdram型号是IS42S16160 32mb的是正常的但是更改到IS4216400 8mb的sdram后不能使用,请问1052支持吗?需要修改哪些配置,请大神讲解一下
    发表于 04-08 19:40

    请问RT1176与DDR SDRAM兼容?

    RT1176 与 DDR SDRAM 兼容吗?
    发表于 04-04 06:09

    IU7191支持I²S数字输入,内置一线脉冲及电平双模式选择声道3.1W单声道D类音频功放芯片

    IU7191支持I²S数字输入,内置一线脉冲及电平双模式选择声道3.1W单声道D类音频功放芯片
    的头像 发表于 03-25 22:13 766次阅读
    IU7191<b class='flag-5'>支持</b>I²S数字输入,内置一线脉冲及电平双模式选择声道3.1<b class='flag-5'>W</b>单声道D类音频功放芯片

    请问STM32CubeIDE v1.16.1支持代码补全功能吗?如何开启呢?

    STM32CubeIDE v1.16.1支持代码补全功能吗?如何开启呢?
    发表于 03-14 06:47

    请问ADS1255/6支持菊花链吗?

    ADS1255/6支持菊花链吗?连接方法是否同ADS1271?菊花链连接以后各ADC是否同步采集,顺序输出数据?
    发表于 02-12 06:05

    请问ads1256支持8路的采样率是多少?

    ads1256支持30KSPS,这个怎么理解呀。是8路,每路都支持30K的采样率吗? 我这有个需求,8路,每路的采样率至少2K,能否支持
    发表于 12-31 06:59

    电平转换SN74LVCH16T245支持多大频率?20Mhz可以支持吗?

    您好,请问TI电平转换SN74LVCH16T245支持多大频率?20Mhz可以支持吗? 手册中描述的PRR<10Mhz是指什么?
    发表于 12-30 07:51

    P82B96支持HDCP吗?

    你好:我用P89B96用做HDMI的DDC通道的I2C的转换,我现在是解决了II2问题,但是它里面有个HDCP保护协议通过DDC通道,感觉它有延时一样,不稳定。请问是否用P82B96支持HDCP?
    发表于 12-27 07:01

    ADS1256支持菊花链连接吗?

    求助:1、ADS1256支持菊花链连接吗? 2、如果不支持菊花链连接,能否把多片ADS1256挂在同一个SPI(CLK,MISO,MOSI)总线上,通过不同的CS来选择芯片? 3、多片ADS1256能否支持广播,来启动所有芯片
    发表于 12-24 06:03

    TDC7201支持全双工SPI吗?

    1.TDC7201支持全双工SPI么?就是SCLK发送了8地址位数据后,需要等待一会才发送时钟信号读取数据么?还是立马给时钟信号,就可以读取数据的呢? 2.采用模式1,单次测量TOF,出了
    发表于 12-11 08:01