OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5869|回复: 3

液晶接口用FSMC的B-NOR模式,移植下程序,那么问题来了

[复制链接]

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
发表于 2014-10-24 15:23:05 | 显示全部楼层 |阅读模式
5金钱
同学做了块板,液晶接口是用FSMC的模式B-NOR,试着移植下程序,那么问题来了
挖掘技术哪家强?


去,不是这个问题
具体问题,现象描述如下:
0)BOOT0=0
1)下载                        正常运行,串口返回"GO.."和LCD_id,屏幕正常显示
2)断电,上电                 串口只返回“GO...”,液晶白屏
3)BOOT0=1,BOOT1=0,复位              无返回,液晶黑屏
    BOOT0=0,复位                      串口返回"GO.."和LCD_id,屏幕刷屏很慢
4)BOOT0=1,BOOT1=1,复位              无返回,液晶黑屏
     BOOT0=0,复位                     串口返回"GO.."和LCD_id,屏幕正常显示

修改过的代码:
main():
[mw_shl_code=c,true] int main(void) { delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 USART1_Config(); //串口初始化为115200 printf("GO...........\n"); //打印LCD ID LCD_Init();//函数内串口打印LCD_id[/mw_shl_code] [mw_shl_code=c,true]//后面和原子哥的例程是一样的... ...[/mw_shl_code]

LCD_init():
[mw_shl_code=c,true]void LCD_Init(void) { LCD_GPIO_Config(); //初始化使用到的GPIO LCD_FSMC_Config(); //初始化FSMC模式 LCD_Rst(); //复位LCD液晶屏 delay_ms(50); // delay 50 ms LCD_WriteReg(0x0000,0x0001); //后面和原子哥的例程是一样的... ...[/mw_shl_code]

地址修改:
[mw_shl_code=c,true]#define LCD_BASE ((u32)0x6001fffe) #define LCD ((LCD_TypeDef *) LCD_BASE) [/mw_shl_code]

LCD_GPIO_Config(void):
[mw_shl_code=c,true]void LCD_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 使能FSMC时钟*/ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); /* 使能FSMC对应相应管脚时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);  [/mw_shl_code] [mw_shl_code=c,true]//引脚配置.......[/mw_shl_code] [mw_shl_code=c,true] /* tft control gpio init */ GPIO_ResetBits(GPIOB, GPIO_Pin_1); // 修改---for新LCD板 GPIO_SetBits(GPIOE, GPIO_Pin_1); GPIO_ResetBits(GPIOD, GPIO_Pin_3); GPIO_SetBits(GPIOD, GPIO_Pin_6); } [/mw_shl_code]

LCD_FSMC_Config():
[mw_shl_code=c,true]void LCD_FSMC_Config(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; p.FSMC_AddressSetupTime = 0x02; //地址建立时间 p.FSMC_AddressHoldTime = 0x00; //地址保持时间 p.FSMC_DataSetupTime = 0x05; //数据建立时间 p.FSMC_BusTurnAroundDuration = 0x00; //总线恢复时间 p.FSMC_CLKDivision = 0x00; //时钟分频 p.FSMC_DataLatency = 0x00; //数据保持时间 p.FSMC_AccessMode = FSMC_AccessMode_B; //在地址数\据线不复用的情况下,ABCD模式的区别不大 //本成员配置只有使用扩展模式才有效 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; //NOR FLASH的BANK1 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //数据线与地址线不复用 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR; //存储器类型NOR FLASH FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //数据宽度为16位 FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //使用异步写模式,禁止突发模式 FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; //本成员的配置只在突发模式下有效,等待信号极性为低 FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; //禁止非对齐突发模式 FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; //本成员配置仅在突发模式下有效。NWAIT信号在什么时期产生 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; //本成员的配置只在突发模式下有效,禁用NWAIT信号 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //禁止突发写操作 FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //写使能 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //禁止扩展模式,扩展模式可以使用独立的读、写模式 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; //配置读写时序 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; //配置写时序 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* 使能 FSMC Bank1_SRAM Bank */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); } [/mw_shl_code]
[mw_shl_code=c,true][/mw_shl_code]
LCD_Rst():
[mw_shl_code=c,true]void LCD_Rst(void) { GPIO_ResetBits(GPIOE, GPIO_Pin_1); //低电平复位 delay_us(10000); GPIO_SetBits(GPIOE, GPIO_Pin_1 ); delay_us(12000); } [/mw_shl_code]


TFT NOR接口.zip

2.69 MB, 下载次数: 153

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-10-24 16:05:52 | 显示全部楼层
重上电后进入调试状态不能正常debug
LCD_Init()里到第一条写指令LCD_WriteReg(0x0000,0x0001);里面LCD->LCD_RAM = LCD_RegValue;就不能单步了


回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-24 23:21:51 | 显示全部楼层
挖掘机德国最强,今天刚看新闻,一天可以挖24W吨土....
神马蓝翔,神马三一,都是浮云....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-10-25 22:58:34 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
没办法,起跑线就不止落后别人一点点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 21:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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