打印
[Kinetis]

K60 flexbus 驱动RA8875 LCD

[复制链接]
2447|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiekouliu|  楼主 | 2015-9-27 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jiekouliu 于 2015-9-27 10:10 编辑

之前成功调试过用K60 FLEXBUS驱动5.6寸的触摸屏,但是最近调试RA8875 7寸触摸屏,用IO模拟可以驱动,但是用FLEXBUS就是不行,都是8080模式,除了数据和命令脚不一样,其他都一样,有谁驱动过RA8875,能不能分享一下
我的初始化程序:

//其他的LCD控制器都是写数据时RS脚为高,写命令时RS脚为低,而RA8875刚好相反
//所以把LCD_SMD_ADDRESS和LCD_DATA_ADDRESS值反过来了,不知道对不对
//我在RS脚接了反相器,并把 LCD_CMD_ADDRESS定义为0x60000000,把LCD_DATA_ADDRESS
//定义为0x60010000也不行
#define LCD_CMD_ADDRESS     0x60010000
#define LCD_DATA_ADDRESS    0x60000000


static void WriteReg(unsigned char regAddr)
{
   unsigned short temp = 0xff00;
   temp |= regAddr;

    *((unsigned short *)LCD_CMD_ADDRESS) = temp;
}
static void WriteCommand(unsigned char mCommand)
{
    unsigned short temp = 0xff00;
    temp |= mCommand;

    *((unsigned short *)LCD_DATA_ADDRESS) = temp;
}


static void WriteData(unsigned short data)
{
    *((unsigned short *)LCD_DATA_ADDRESS) = data;
}
static void Flexbus_Init(void)
{
    SIM_CLKDIV1 |= SIM_CLKDIV1_OUTDIV3(0x2);//时钟分频96M/2=48M
    SIM_SOPT2 |= SIM_SOPT2_FBSL(3);
    SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;     //使能flexbus

    FB_CSMR0 = 0;
    FB_CSAR0 = LCD_CMD_ADDRESS;              //设置基地址
    FB_CSCR0 = FB_CSCR_PS(2) | FB_CSCR_AA_MASK | FB_CSCR_BLS_MASK;      //16位数据宽度,右对齐,使能应答
    FB_CSCR0 |= FB_CSCR_WS(1) | FB_CSCR_RDAH(0) | FB_CSCR_WRAH(0);   //应答时间
    FB_CSMR0 = FB_CSMR_BAM(0x1) | FB_CSMR_V_MASK ; //2^(1+17)=128k

    //DATA
    PORTD_PCR6 = PORT_PCR_MUX(5);//DB0
    PORTD_PCR5 = PORT_PCR_MUX(5);//DB1
    PORTD_PCR4 = PORT_PCR_MUX(5);//DB2
    PORTD_PCR3 = PORT_PCR_MUX(5);//DB3
    PORTD_PCR2 = PORT_PCR_MUX(5);//DB4

    PORTC_PCR10 = PORT_PCR_MUX(5);//DB5
    PORTC_PCR9 = PORT_PCR_MUX(5);//DB6
    PORTC_PCR8 = PORT_PCR_MUX(5);//DB7
    PORTC_PCR7 = PORT_PCR_MUX(5);//DB8
    PORTC_PCR6 = PORT_PCR_MUX(5);//DB9
    PORTC_PCR5 = PORT_PCR_MUX(5);//DB10
    PORTC_PCR4 = PORT_PCR_MUX(5);//DB11

    PORTC_PCR2 = PORT_PCR_MUX(5);//DB12
    PORTC_PCR1 = PORT_PCR_MUX(5);//DB13
    PORTC_PCR0 = PORT_PCR_MUX(5);//DB14

    PORTB_PCR18 = PORT_PCR_MUX(5);//DB15

    //CS
    PORTD_PCR1 = PORT_PCR_MUX(5);
    //WR
    PORTC_PCR11 = PORT_PCR_MUX(5);
    //RD
    PORTB_PCR19 = PORT_PCR_MUX(5);
    //D/C
    PORTB_PCR17 = PORT_PCR_MUX(5);
}



相关帖子

沙发
Mancherstun| | 2015-9-27 14:35 | 只看该作者
//其他的LCD控制器都是写数据时RS脚为高,写命令时RS脚为低,而RA8875刚好相反
//所以把LCD_SMD_ADDRESS和LCD_DATA_ADDRESS值反过来了,不知道对不对
//我在RS脚接了反相器,并把 LCD_CMD_ADDRESS定义为0x60000000,把LCD_DATA_ADDRESS
//定义为0x60010000也不行
#define LCD_CMD_ADDRESS     0x60010000
#define LCD_DATA_ADDRESS    0x60000000


static void WriteReg(unsigned char regAddr)
{
   unsigned short temp = 0xff00;
   temp |= regAddr;

    *((unsigned short *)LCD_CMD_ADDRESS) = temp;
}
static void WriteCommand(unsigned char mCommand)
{
    unsigned short temp = 0xff00;
    temp |= mCommand;

    *((unsigned short *)LCD_DATA_ADDRESS) = temp;
}


static void WriteData(unsigned short data)
{
    *((unsigned short *)LCD_DATA_ADDRESS) = data;
}
static void Flexbus_Init(void)
{
    SIM_CLKDIV1 |= SIM_CLKDIV1_OUTDIV3(0x2);//时钟分频96M/2=48M
    SIM_SOPT2 |= SIM_SOPT2_FBSL(3);
    SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;     //使能flexbus

    FB_CSMR0 = 0;
    FB_CSAR0 = LCD_CMD_ADDRESS;              //设置基地址
    FB_CSCR0 = FB_CSCR_PS(2) | FB_CSCR_AA_MASK | FB_CSCR_BLS_MASK;      //16位数据宽度,右对齐,使能应答
    FB_CSCR0 |= FB_CSCR_WS(1) | FB_CSCR_RDAH(0) | FB_CSCR_WRAH(0);   //应答时间
    FB_CSMR0 = FB_CSMR_BAM(0x1) | FB_CSMR_V_MASK ; //2^(1+17)=128k

    //DATA
    PORTD_PCR6 = PORT_PCR_MUX(5);//DB0
    PORTD_PCR5 = PORT_PCR_MUX(5);//DB1
    PORTD_PCR4 = PORT_PCR_MUX(5);//DB2
    PORTD_PCR3 = PORT_PCR_MUX(5);//DB3
    PORTD_PCR2 = PORT_PCR_MUX(5);//DB4

    PORTC_PCR10 = PORT_PCR_MUX(5);//DB5
    PORTC_PCR9 = PORT_PCR_MUX(5);//DB6
    PORTC_PCR8 = PORT_PCR_MUX(5);//DB7
    PORTC_PCR7 = PORT_PCR_MUX(5);//DB8
    PORTC_PCR6 = PORT_PCR_MUX(5);//DB9
    PORTC_PCR5 = PORT_PCR_MUX(5);//DB10
    PORTC_PCR4 = PORT_PCR_MUX(5);//DB11

    PORTC_PCR2 = PORT_PCR_MUX(5);//DB12
    PORTC_PCR1 = PORT_PCR_MUX(5);//DB13
    PORTC_PCR0 = PORT_PCR_MUX(5);//DB14

    PORTB_PCR18 = PORT_PCR_MUX(5);//DB15

    //CS
    PORTD_PCR1 = PORT_PCR_MUX(5);
    //WR
    PORTC_PCR11 = PORT_PCR_MUX(5);
    //RD
    PORTB_PCR19 = PORT_PCR_MUX(5);
    //D/C
    PORTB_PCR17 = PORT_PCR_MUX(5);
}

楼主的这个程序遇到了什么问题

使用特权

评论回复
板凳
jiekouliu|  楼主 | 2015-9-27 19:06 | 只看该作者
Mancherstun 发表于 2015-9-27 14:35
楼主的这个程序遇到了什么问题

问题就是驱动不了LCD,用IO就可以,不知道是不是配置有问题?

使用特权

评论回复
地板
李香兰| | 2015-9-27 21:03 | 只看该作者
jiekouliu 发表于 2015-9-27 19:06
问题就是驱动不了LCD,用IO就可以,不知道是不是配置有问题?

用IO模拟的没有问题,用硬件的驱动就有问题?

使用特权

评论回复
5
jiekouliu|  楼主 | 2015-9-27 22:26 | 只看该作者
李香兰 发表于 2015-9-27 21:03
用IO模拟的没有问题,用硬件的驱动就有问题?

用IO模拟时序能驱动,用程序中flexbus驱动不了

使用特权

评论回复
6
风的样子| | 2015-9-28 07:39 | 只看该作者
是不是什么地方给设置错了呢

使用特权

评论回复
7
晓枫VS枯叶| | 2015-9-28 16:43 | 只看该作者
我用K64驱动NT35510也不能行,不知道楼主解决了没?

使用特权

评论回复
8
jiekouliu|  楼主 | 2015-9-28 18:11 | 只看该作者
晓枫VS枯叶 发表于 2015-9-28 16:43
我用K64驱动NT35510也不能行,不知道楼主解决了没?

没解决,不知道是什么问题

使用特权

评论回复
9
cowboy2014| | 2015-9-29 09:22 | 只看该作者
FLEXBUS的时序是不是写的有问题呢?

使用特权

评论回复
10
huangzhengji| | 2016-3-18 13:28 | 只看该作者
K60 flexbus 驱动RA8875 LCD,请问楼主,搞定了吗??

使用特权

评论回复
11
jiekouliu|  楼主 | 2016-4-6 15:32 | 只看该作者
huangzhengji 发表于 2016-3-18 13:28
K60 flexbus 驱动RA8875 LCD,请问楼主,搞定了吗??

没有彻底搞定,把CS和WR设置为普通IO,其他脚用的flexbus,暂时这么用的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

30

帖子

1

粉丝