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.
Stay hungry, stay foolish
待续。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)