OpenEdv-开源电子网

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

有关TFT代码移植的疑问。

[复制链接]

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
发表于 2011-2-24 18:28:00 | 显示全部楼层 |阅读模式
   看了代码,有点疑问。
    if(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325
            else ……

这样是为了支持更多的不同的TFT。
而在其他的代码中。譬如 LCD_WriteReg(R80, 0x0000); //水平方向GRAM起始地址

这样是不是说明R80这个#define R80            0x50   符合任何的TFT驱动。

如果我要移植原子的TFT代码的话,只需知道我的DeviceCode就可以了?
然后修改里面的初始化程序就可以了?

还是按照完全手册描述那样,只支持优异特、STMSKY、火牛呢?










一个上蹿下跳的猴子~~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-2-24 21:19:50 | 显示全部楼层
估计代码移植有问题了。
刚看了下我的HX8312的程序。
ILI9320
#define R80            0x50    水平方向GRAM起始地址 
#define R80            0x50    水平方向GRAM结束地址 
HX8312
#define R80            0x45   水平方向GRAM起始地址 
#define R81            0x46   水平方向GRAM结束地址

那么说,如果我需要代码移植的话,只需要修改2个地方即可了。
一是DeviceCode。
二是那些宏定义指令集了。唉,又要看英文版本的HX8312了,百度了一天没有发现中文的。
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2011-2-26 01:42:44 | 显示全部楼层
回复【2楼】 wolfdong7 :
-------------------------------
请下载我的最新代码看。在这里

你说的,大体正确了。不同LCD驱动IC之间的设置基本是差不多的(初始化除外),所以只要在初始化正确了之后,基本上其他的设置就差不多类似了,就算不同也差不了太远,这就给我们兼容不同LCD提供了保证,而我们的代码就是利用这一点。
另外还值得注意的就是,比如显示方式,就是扫描方式,不同液晶差别可能会比较大,不过我就用一个扫描方式,然后其他的旋转屏幕之类的工作,就让画点函数来完成,这样更可以提高兼容性。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-2-26 09:05:06 | 显示全部楼层
回复【3楼】正点原子:
-------------------------------
恩,谢了。
以前我一直很反感用寄存器操作方式,觉得STM32都有库了,干嘛没事找事做用寄存器。
现在在初步学习ARM11的时候,发现都是用寄存器。
所以,正好拿你的例程,改装到我另外一个开发板去,权当练练手。呵呵!
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-2-27 21:42:40 | 显示全部楼层
还请教个问题:
     原子你的例程,数据都是接在PB口上。
     如果数据口分别接在PB\PC\PD上。这个需要怎么改呀?
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2011-2-28 01:59:57 | 显示全部楼层
回复【5楼】wolfdong7:
-------------------------------
把数据拆分
这种事,我也干过,^_^....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-2-28 20:50:54 | 显示全部楼层
回复【6楼】正点原子:
-------------------------------
可不可以分享一个拆分的例子呀?
如果没有,可不可以给点指点一下思路。

一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2011-2-28 23:27:03 | 显示全部楼层
回复【7楼】wolfdong7:
-------------------------------
拆分?
你不想要的话,可以把其他都去掉的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-3-1 20:39:54 | 显示全部楼层
回复【8楼】正点原子:
-------------------------------
噢。我懂了。
就是我分批赋值。
比如:GPIOC->ODR=1<<3;
         GPIOD->ODR=4<<2;
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2011-3-1 20:59:49 | 显示全部楼层
 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-3-2 16:52:23 | 显示全部楼层
TFT的问题解决了。
现在我又在移植FLASH了。
查看了不少的FLASH的资料,发现大部分的FLASH的指令都一样。不相同好像只有ID号。
我屏蔽掉了实验17SPI_FLASH其它的程序,只留下串口和FLASH的程序。
结果,在查看检测W25P16这个检测ID函数时,过不去,就是不等于0XEF14。这个在我意料之中。但是串口提示的ID一直为0,这个我就想不通了,求解!PS:我用的是M25P16

再想顺便问一下,新的开发板什么时候出呀?
以前帮同学买过你的板子,所以自己就不买了,免得资料冲突。结果没想到,移植资料这么麻烦。。。
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2011-3-2 17:56:38 | 显示全部楼层
回复【11楼】wolfdong7:
-------------------------------
你看看MP25P16的时序是不是和W25X16的一模一样。
另外,看看SPI口是否和其他外设公用了,如果共用,你必须把其他外设的CS 拉高。否则会干扰的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-3-3 20:10:13 | 显示全部楼层
再次请问下:
原子你的实验SPI_FLASH中,函数SPIx_ReadWriteByte()

static u8 SPI_Read_Byte(void)

{  
 
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
  
SPI_I2S_SendData(SPI1, 0x00);
   
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)  
return SPI_I2S_ReceiveData(SPI1);

}

static void SPI_Write_Byte(u8 byte)

{    

while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
  
SPI_I2S_SendData(SPI1, byte)/* Send byte through the SPI2 peripheral;
  
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

SPI_I2S_ReceiveData(SPI1);

}

是在对使用库函数这两个函数合体的吗?

下面是我开发板的例程读取ID的程序
void M25P16_Read_Id(u8 * id)

{

u8 i;

Select_Flash();

SPI_Write_Byte(0X9F);


for(i=0;i<20;i++)

{
id = SPI_Read_Byte();}

        NotSelect_Flash();

}

然后我在你的程序里读取ID的程序修改为:
u16 SPI_Flash_ReadID(void)
{
u16 Temp = 0;   
SPI_FLASH_CS=0;
delay_ms(500);     
SPIx_ReadWriteByte(0x9F);//发送读取ID命令 
Temp|=SPIx_ReadWriteByte(0xFF)<<8;     
Temp|=SPIx_ReadWriteByte(0xFF);
//不明白为什么你的程序读取前加三个SPIx_ReadWriteByte(0x00),查看了下W25X16,只需加一个
//读取的时候指令时 又是用SPIx_ReadWriteByte(0xFF),我把0XFF这个指令改为任意一个比如0X00,0XFD等,都行。求解!  
SPI_FLASH_CS=1;
delay_ms(500);     
return Temp;
}

结果:成功读取ID了,并且在串口提示上看见了MiniSTM32 SPI TEST,好开心!


有时候我觉得自己好奇怪。明明有个现成的程序在面前,自己非要去为难自己,喜欢去拆东墙补西墙。把这个A开发板的程序,移植到B开发板跑起来。然后再B开发板的程序,移植到A开发板跑起来。







一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
 楼主| 发表于 2011-3-3 20:18:11 | 显示全部楼层
SPI_FLASH解决了,接着再请问下TFT的问题。
目前我发现接TFT的开发板,只有两种接法。
一种是像原子你那种的,一个端口解决TFT数据转送。
另外一种是用FSMC接法,我看了6种开发板的原理图和程序。数据接口完全一样。
查看程序,都没有像外部中断那样,有映射管脚那种,估计FSMC数据口是限定的。不知道这样理解错了没?

不知道原子哥,你有没有用寄存器操作过FSMC?
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-29 09:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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