大神求助!使用stm32F429的时候,用FMC的NE4去驱动LCD的片选信号有问题(原驱动程序使用NE1没问题),程序是完全一致,区别只是用NE1和NE4。硬件用的是阿波罗的开发板+自己的底板,底板全部留空,只有LCD相关的。
详见此贴
9486 EMwin鼠标异常
http://www.openedv.com/forum.php ... &fromuid=113251
(出处: OpenEdv-开源电子网)
同样的程序,同样的“秀鼠标'的函数“ GUI_CURSOR_Show()”,使用NE1和 NE4的区别如附件图:
但我仅仅只改了
SRAM_Handler.Init.NSBank=FMC_NORSRAM_BANK4; //使用NE4
和
#define LCD_BASE ((u32)(0x6c000000 | 0x0007FFFE));这两条语句
为什么GUI_CURSOR_Show()的示波器图会不一样?
使用NE1:
NE1
使用ne4:
ne4
由于
GUI_CURSOR_Show()这个被GUI程序封装了,看不到底层,只能看到示波器是这个样子,黄 {MOD}的是DB0,蓝 {MOD}的是LCD的CS信号。
基本就是原子哥的例程,就是修改了NE4而已
SRAM_Handler.Instance=FMC_NORSRAM_DEVICE;
SRAM_Handler.Extended=FMC_NORSRAM_EXTENDED_DEVICE;
SRAM_Handler.Init.NSBank=FMC_NORSRAM_BANK4; //使用NE4
SRAM_Handler.Init.DataAddressMux=FMC_DATA_ADDRESS_MUX_DISABLE; //地址/数据线不复用
SRAM_Handler.Init.MemoryType=FMC_MEMORY_TYPE_SRAM; //SRAM
SRAM_Handler.Init.MemoryDataWidth=FMC_NORSRAM_MEM_BUS_WIDTH_16; //16位数据宽度
SRAM_Handler.Init.BurstAccessMode=FMC_BURST_ACCESS_MODE_DISABLE; //是否使能突发访问,仅对同步突发存储器有效,此处未用到
SRAM_Handler.Init.WaitSignalPolarity=FMC_WAIT_SIGNAL_POLARITY_LOW;//等待信号的极性,仅在突发模式访问下有用
SRAM_Handler.Init.WaitSignalActive=FMC_WAIT_TIMING_BEFORE_WS; //存储器是在等待周期之前的一个时钟周期还是等待周期期间使能NWAIT
SRAM_Handler.Init.WriteOperation=FMC_WRITE_OPERATION_ENABLE; //存储器写使能
SRAM_Handler.Init.WaitSignal=FMC_WAIT_SIGNAL_DISABLE; //等待使能位,此处未用到
SRAM_Handler.Init.ExtendedMode=FMC_EXTENDED_MODE_ENABLE; //读写使用不同的时序
SRAM_Handler.Init.AsynchronousWait=FMC_ASYNCHRONOUS_WAIT_DISABLE;//是否使能同步传输模式下的等待信号,此处未用到
SRAM_Handler.Init.WriteBurst=FMC_WRITE_BURST_DISABLE; //禁止突发写
SRAM_Handler.Init.ContinuousClock=FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;
//FMC读时序控制寄存器
FMC_ReadWriteTim.AddressSetupTime=0x0F; //地址建立时间(ADDSET)为15个HCLK 1/180M*15=5.5ns*15=82.5ns
FMC_ReadWriteTim.AddressHoldTime=0x00;
FMC_ReadWriteTim.DataSetupTime=0x46; //数据保存时间(DATAST)为70个HCLK =5.5*70=385ns
FMC_ReadWriteTim.AccessMode=FMC_ACCESS_MODE_A; //模式A
//FMC写时序控制寄存器
FMC_WriteTim.AddressSetupTime=0x0F; //地址建立时间(ADDSET)为15个HCLK=82.5ns
FMC_WriteTim.AddressHoldTime=0x00;
FMC_WriteTim.DataSetupTime=0x0F; //数据保存时间(DATAST)为5.5ns*15个HCLK=82.5ns
FMC_WriteTim.AccessMode=FMC_ACCESS_MODE_A; //模式A
HAL_SRAM_Init(&SRAM_Handler,&FMC_ReadWriteTim,&FMC_WriteTim);
delay_ms(50); // delay 50 ms
这是软件内部的事情和 硬件NE1,NE4工作无关。
一周热门 更多>