我的板子是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];
}
现在我怀疑两个设备共用总线打架了,但怎么也找不到问题在哪里,哪位能帮忙看看?
付电路图: |