普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1805|回复: 0

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

[复制链接]

2

主题

7

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2022-10-26 14:33:27 | 显示全部楼层 |阅读模式
       综合例程下载自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,值取决于你的屏幕。编译下载就一切正常了。
      

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-30 19:21 , Processed in 0.092686 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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