bdmcgtf 发表于 2022-10-26 14:33:27

Z500板子运行正点原子综合实验

       综合例程下载自http://www.openedv.com/thread-13912-1-1.html,正点原子的资料下载中心。             通过比对,Z500的板子和正点原子的F103战舰板,管脚定义完全一致,使用的硬件配置也一样。1M的外扩SRAM,16M的外扩FLASH,AT24C02,唯一不一样的就是LCD屏幕,翻看过正点原子综合实验的源码,里面并不支持我板子上的ILI9481的屏幕。经过两天时间的研究终于能正常运行了,综合例程和普中的差不多,不够多了FC游戏器,可惜没有手柄,能运行但不能玩,在游戏里截屏会花屏不知道是不是正常现象。主要修改的有w25qxx.h,在里面添加一个宏定义#define EN25Q128 0X2017,宏定义的值取决于你板子上的芯片,然后修改main.c中403行的if判断语句 if(W25QXX_ReadID()!=W25Q128 && W25QXX_ReadID()!=NM25Q128),将两个中的任意一个替换成新增的宏定义即可,不替换的话,系统自检通不过。然后修改lcd.c文件中的初始化函数,添加对你屏幕的支持,我尽量不破坏原有程序的结构,大家可以有其他的实现方式。在719行if (lcddev.id == 0X5761)lcddev.id = 0X1963;的语句下方新增if(lcddev.id!=0X5761){   LCD_WR_REG(0xB0);    LCD_WR_DATA(0x00);LCD_WR_REG(0XBF);lcddev.id=LCD_RD_DATA();lcddev.id=LCD_RD_DATA();lcddev.id=LCD_RD_DATA();lcddev.id=LCD_RD_DATA();lcddev.id<<=8;lcddev.id|=LCD->LCD_RAM;}用来读取屏幕的ID号,并赋值给lcddev.id。然后在2081行新增一个else if(lcddev.id==0x1581){……},if判断的值取决你的屏幕,需要查询屏幕的手册,花括号中添加的是你开发板屏幕对应的初始命令,比较长我就不复制了,直接复制普中例程中的命令就好,记得将写命令和写数据函数进行修改,整个复制过来用查找替换就行了。修改完以上部分,编译并下载就能显示运行综合例程了,但是会出现主界面花屏的问题。屏幕能够滑动,图标能够选中和运行,进入应用中显示一切正常。       经过排查是spblcd.c文件中void slcd_frame_show(u32 x)函数造成的,在if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X7789)中或上lcddev.id==0x1581,值取决于你的屏幕。编译下载就一切正常了。      
页: [1]
查看完整版本: Z500板子运行正点原子综合实验