请选择 进入手机版 | 继续访问电脑版
查看: 391|回复: 0

[求助] 请教下各位大佬, RT1176 sdram 工作一小会就异常 ?

[复制链接]

该用户从未签到

15

主题

56

帖子

0

中级会员

Rank: 3Rank: 3

积分
258
最后登录
2024-9-20
发表于 2024-6-7 20:37:00 | 显示全部楼层 |阅读模式
本帖最后由 eefocus_3733915 于 2024-6-7 20:47 编辑

RT1176 sdram 工作一小会就异常 ?


sdram io 配置:

        CLOCK_EnableClock(kCLOCK_Iomuxc);           /* LPCG on: LPCG is ON. */
        
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_00_SEMC_DATA00, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_01_SEMC_DATA01, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_02_SEMC_DATA02, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_03_SEMC_DATA03, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_04_SEMC_DATA04, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_05_SEMC_DATA05, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_06_SEMC_DATA06, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_07_SEMC_DATA07, 0U);

        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_30_SEMC_DATA08, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_31_SEMC_DATA09, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_32_SEMC_DATA10, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_33_SEMC_DATA11, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_34_SEMC_DATA12, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_35_SEMC_DATA13, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_36_SEMC_DATA14, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_37_SEMC_DATA15, 0U);
        
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_00_SEMC_DATA16, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_01_SEMC_DATA17, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_02_SEMC_DATA18, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_03_SEMC_DATA19, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_04_SEMC_DATA20, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_05_SEMC_DATA21, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_06_SEMC_DATA22, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_07_SEMC_DATA23, 0U);        
        
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_09_SEMC_DATA24, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_10_SEMC_DATA25, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_11_SEMC_DATA26, 0U);    // 0x04U
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_12_SEMC_DATA27, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_13_SEMC_DATA28, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_14_SEMC_DATA29, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_15_SEMC_DATA30, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_16_SEMC_DATA31, 0U);

        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_09_SEMC_ADDR00, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_10_SEMC_ADDR01, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_11_SEMC_ADDR02, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_12_SEMC_ADDR03, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_13_SEMC_ADDR04, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_14_SEMC_ADDR05, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_15_SEMC_ADDR06, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_16_SEMC_ADDR07, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_17_SEMC_ADDR08, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_18_SEMC_ADDR09, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_23_SEMC_ADDR10, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_19_SEMC_ADDR11, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_20_SEMC_ADDR12, 0U);
        
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_21_SEMC_BA0, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_22_SEMC_BA1, 0U);
        
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_08_SEMC_DM00, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_38_SEMC_DM01, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_08_SEMC_DM02, 0U);    // 0x04U
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_17_SEMC_DM03, 0U);
        
        afio_init(IOMUXC_GPIO_EMC_B1_39_SEMC_DQS,  1U, 0x08U);   // sdram 跑 200MHz 必须配置为悬空输入, 必须得配置,仅配置一下即可
//        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B2_18_SEMC_DQS4, 0U);    // 这个管脚可以不用配置,不过是否可以作为普通的 io 使用还有待验证 ...
        
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_24_SEMC_CAS, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_25_SEMC_RAS, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_26_SEMC_CLK, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_27_SEMC_CKE, 0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_28_SEMC_WE,  0U);
        IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_B1_29_SEMC_CS0, 0U);        



sdram 时序配置:
1176-sdram-err-1.png
1176-sdram-err-2.png




工作一会后出现:

测试成功:
1176-sdram-ok-1.png    测试 118 次都是成功 ok


1176-sdram-ok-2.png    测试 367 次成功 ok






测试失败:
1176-sdram-err-10.png


1176-sdram-err-11.png



以前测试时工作时正常的, 但是近期在搞 gui 时工作不正常, 单独测试 sdram 就出现这样的情况了, 请问这是 mcu 主控坏了还是 sdram 坏了呀 ?

测试 sdram 程序也是以前的那套程序, 硬件也还是那个硬件, 唯一改变的就是时间了








回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-10-4 01:01 , Processed in 0.109584 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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