打印

请教一个FSMC同时驱动Nand和LCD的问题

[复制链接]
2338|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kseeker|  楼主 | 2012-3-24 16:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我的板子是103zet6的,用FSMC同时驱动一块Nand Falsh和一块液晶屏。以前两个都工作的挺好,现在换了块液晶屏,出现了奇怪的问题:单独访问Nand和LCD都正常,但是边读Nand边写屏就出问题。具体代码如下:
    LCD_SetWindow(36, 96, 44, 179);
   
    NAND_ADDRESS nandAddr;
    nandAddr.Zone = 0;
    nandAddr.Block = 0;
    nandAddr.Page = 0;
    NAND_StartRead(nandAddr);

    for (int i = 0; i < (44-36)*(179-96); i ++)
    {            
        (*(vu16*)(0x6C000002)) = g_PaletteList[5][NAND_READ_BYTE];
    }

这段代码以前工作正常,但现在一个像素都不显示,似乎LCD_SetWindow()的效果被取消掉了。上面的代码,如果把
nandAddr.Page稍微改一下(比如改成1)就可能工作正常。

如果改成下面这样,工作就都正常了:

    NAND_ADDRESS nandAddr;
    nandAddr.Zone = 0;
    nandAddr.Block = 0;
    nandAddr.Page = 0;
    NAND_StartRead(nandAddr);

    for (int i = 0; i < (44-36)*(179-96); i ++)
    {
    buf[i] = g_PaletteList[5][NAND_READ_BYTE];            



    LCD_SetWindow(36, 96, 44, 179);
    for (int i = 0; i < (44-36)*(179-96); i ++)
    {
        (*(vu16*)(0x6C000002)) = buf[i];
    }

现在我怀疑两个设备共用总线打架了,但怎么也找不到问题在哪里,哪位能帮忙看看?
付电路图:

未命名-1.gif (33.78 KB )

未命名-1.gif
沙发
kseeker|  楼主 | 2012-3-24 21:37 | 只看该作者
问题解决了,液晶的FSMC初始化有问题:
        p.FSMC_AddressSetupTime = 1; // 原来是0,改为1后都正常了
        p.FSMC_AddressHoldTime = 0;
        p.FSMC_DataSetupTime = 2;
        p.FSMC_BusTurnAroundDuration = 0;
        p.FSMC_CLKDivision = 0;
        p.FSMC_DataLatency = 0;
        p.FSMC_AccessMode = FSMC_AccessMode_A;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

241

帖子

0

粉丝