RGB_LCD_ST7701_init_code

RGB_LCD_ST7701_init_code

 


 

 

 

复制代码
/*
 * gpio_irq_test.c- Sigmastar
 *
 * Copyright (c) [2019~2020] SigmaStar Technology.
 *
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License version 2 for more details.
 *
 */



#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/rtc.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>
#include <linux/delay.h>



#define cs   65
#define clk  64
#define mosi 67
#define rst  1


#define SET_LSDA_LOW           gpio_set_value(mosi,0)   //MOSI0
#define SET_LSDA_HIGH          gpio_set_value(mosi,1)   //MOSI1
#define SET_LSCK_LOW           gpio_set_value(clk,0)    //CLK0
#define SET_LSCK_HIGH          gpio_set_value(clk,1)    //CLK1
#define SET_LSCE_LOW           gpio_set_value(cs,0)        //CS0
#define SET_LSCE_HIGH          gpio_set_value(cs,1)        //CS1


s32 gpio_set_success = 0;


static void start_lcd(void)
{
        SET_LSCE_LOW;
}



static void stop_lcd(void)
{
        SET_LSCE_HIGH;
}





static void write_lcd_datas(unsigned int data,unsigned int len)
{
        int i;
        for(i=len-1;i>=0;i--){
                SET_LSCK_LOW;
                if(data & (1<<i))
                        SET_LSDA_HIGH;
                else
                        SET_LSDA_LOW;
                udelay(110);
                SET_LSCK_HIGH;
                udelay(110);
        }
}


static void write_lcd_cmd(unsigned char cmd)
{
        unsigned int x;
        udelay(1);
        x = 0x0000|cmd;
        write_lcd_datas(x,9);
}


static void write_lcd_data(unsigned char data)
{
        unsigned int x;
        udelay(1);
        x = 0x0100 | data;
        write_lcd_datas(x,9);
}

void write_cmd(u8 cmd)
{
        write_lcd_cmd(cmd);
}


void write_data(u8 data)
{
        write_lcd_data(data);
}


static int __init Gpio_Init(void)
{

        printk("gpio_spi  insmod success!\n");
        gpio_set_success = 0;

        //clk
        if(gpio_request(clk, "gpio_clk") < 0){
                printk(" clk  request gpio[%d] failed...\n", clk);
                return 0;
        }

        //mosi
        if(gpio_request(mosi, "gpio_mosi") < 0){
                printk(" mosi   request gpio[%d] failed...\n", mosi);
                return 0;
        }

        //cs
        if(gpio_request(cs, "gpio_cs") < 0){
                printk(" cs  request gpio[%d] failed...\n", cs);
                return 0;
        }

        //rst
        if(gpio_request(rst, "gpio_rst") < 0){
                printk(" rst   request gpio[%d] failed...\n", rst);
                return 0;
        }




        if (gpio_direction_output(cs,0) < 0) {
                printk("  cs   gpio_direction_input[%d] failed...\n", cs );
                return 0;
        }


        if (gpio_direction_output(clk,0) < 0) {
                printk("  clk   gpio_direction_input[%d] failed...\n", clk );
                return 0;

        }



        if (gpio_direction_output( mosi,0 ) < 0) {
                printk("  mosi   gpio_direction_input[%d] failed...\n", mosi);
                return 0;
        }



        if (gpio_direction_output( rst,0  ) < 0) {
                printk("  rst    gpio_direction_input[%d] failed...\n", rst);
                return 0;
        }

        gpio_set_success = 1;
        
        printk("spi data begin!\n");

        gpio_set_value(rst,1);     //RST1
        mdelay(1);
        gpio_set_value(rst,0);     //RST0
        mdelay(10);
        gpio_set_value(rst,1);     //RST1
        mdelay(200);


        start_lcd();//拉低cs脚


        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x13);
        write_cmd(0xEF);
        write_data(0x08);
        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x10);
        write_cmd(0xC0);
        write_data(0x63);
        write_data(0x00);
        write_cmd(0xC1);
        write_data(0x0A);
        write_data(0x0c);
        write_cmd(0xC2);
        write_data(0x07);
        write_data(0x07);
        write_cmd(0xCC);
        write_data(0x38);
        write_cmd(0xB0);
        write_data(0x0F);
        write_data(0x1C);
        write_data(0x23);
        write_data(0x0A);
        write_data(0x10);
        write_data(0x05);
        write_data(0x0E);
        write_data(0x08);
        write_data(0x09);
        write_data(0x27);
        write_data(0x06);
        write_data(0x12);
        write_data(0x11);
        write_data(0x27);
        write_data(0x2C);
        write_data(0x1F);
        write_cmd(0xB1);
        write_data(0x01);
        write_data(0x13);
        write_data(0x1A);
        write_data(0x0F);
        write_data(0x10);
        write_data(0x06);
        write_data(0x08);
        write_data(0x08);
        write_data(0x08);
        write_data(0x23);
        write_data(0x04);
        write_data(0x12);
        write_data(0x10);
        write_data(0x22);
        write_data(0x26);
        write_data(0x1F);
        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x11);
        write_cmd(0xB0);
        write_data(0x5D);
        write_cmd(0xB1);
        write_data(0x3A);
        write_cmd(0xB2);
        write_data(0x80);
        write_cmd(0xB3);
        write_data(0x80);
        write_cmd(0xB5);
        write_data(0x45);
        write_cmd(0xB7);
        write_data(0x85);
        write_cmd(0xB8);
        write_data(0x21);
        write_cmd(0xB9);
        write_data(0x10);
        write_data(0x1F);
        write_cmd(0xBB);
        write_data(0x03);
        write_cmd(0xBC);
        write_data(0x3E);
        write_cmd(0xC1);
        write_data(0x78);
        write_cmd(0xC2);
        write_data(0x78);
        write_cmd(0xD0);
        write_data(0x88);
        write_cmd(0xE0);
        write_data(0x00);
        write_data(0x00);
        write_data(0x02);
        write_cmd(0xE1);
        write_data(0x04);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x05);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x20);
        write_data(0x20);
        write_cmd(0xE2);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_cmd(0xE3);
        write_data(0x00);
        write_data(0x00);
        write_data(0x33);
        write_data(0x00);
        write_cmd(0xE4);
        write_data(0x22);
        write_data(0x00);
        write_cmd(0xE5);
        write_data(0x04);
        write_data(0x34);
        write_data(0x9A);
        write_data(0xA0);
        write_data(0x06);
        write_data(0x34);
        write_data(0x9A);
        write_data(0xA0);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_cmd(0xE6);
        write_data(0x00);
        write_data(0x00);
        write_data(0x33);
        write_data(0x00);
        write_cmd(0xE7);
        write_data(0x22);
        write_data(0x00);
        write_cmd(0xE8);
        write_data(0x05);
        write_data(0x34);
        write_data(0x9A);
        write_data(0xA0);
        write_data(0x07);
        write_data(0x34);
        write_data(0x9A);
        write_data(0xA0);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_cmd(0xEB);
        write_data(0x02);
        write_data(0x00);
        write_data(0x40);
        write_data(0x40);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);
        write_cmd(0xEC);
        write_data(0x00);
        write_data(0x00);
        write_cmd(0xED);
        write_data(0xFA);
        write_data(0x45);
        write_data(0x0B);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xFF);
        write_data(0xB0);
        write_data(0x54);
        write_data(0xAF);
        write_cmd(0xEF);
        write_data(0x08);
        write_data(0x08);
        write_data(0x08);
        write_data(0x45);
        write_data(0x3F);
        write_data(0x54);
        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x13);
        write_cmd(0xE8);
        write_data(0x00);
        write_data(0x0E);
        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x00);

        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x13);
        write_cmd(0xE8);
        write_data(0x00);
        write_data(0x0C);

        write_cmd(0xE8);
        write_data(0x00);
        write_data(0x00);
        write_cmd(0xFF);
        write_data(0x77);
        write_data(0x01);
        write_data(0x00);
        write_data(0x00);
        write_data(0x13);
        write_cmd(0xE6);
        write_data(0x11);
        write_data(0x7C);

        write_cmd(0xC3);
        write_data(0x00);




        write_cmd(0x3A);
        write_data(0x77);


        write_cmd(0x35);
        write_data(0x00);

        write_cmd(0x36);
        write_data(0x00);

        write_cmd(0x11);
        write_data(0x00);
        mdelay(200);
        write_cmd(0x29);
        write_data(0x00);
        mdelay(200);


        stop_lcd();//拉高cs脚


        printk("spi data end!\n");


        return 0;
}

static void __exit Gpio_Exit(void)
{
    if (gpio_set_success){
        gpio_free(cs);
        gpio_free(clk);
        gpio_free(mosi);
        gpio_free(rst);
    }
}

module_init(Gpio_Init);
module_exit(Gpio_Exit);


MODULE_AUTHOR("WANGXY");
MODULE_DESCRIPTION("WANGXY GPIO IRQ");
MODULE_LICENSE("GPL");
复制代码

 

 

 

笔记


 

1.

 

posted @   panda_w  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示