【GD32F310G-START】SPI驱动ST7735
[复制链接]
【GD32F310G-START】HELLO WORLD - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)
【GD32F310G-START】OLED之HELLO EEWORLD——硬件I2C - GD32 MCU - 电子工程世界-论坛
驱动I2C后,接着是SPI,这次实战是软SPI驱动屏幕ST7735,主要代码是移植我前面实战st7735代码。
1、IO定义:
/*****************
作 者 : 刘建华
生成日期 : 2022-5-6
最近修改 :
功能描述 :GD32F320G SPI—7735
说明:
----------------------------------------------------------------
GND 电源地
VCC 3.3v电源
SCL PA5(SCLK)
SDA PA7(MOSI)
RES PA1
DC PA2
CS PA4
BLK PA3
----------------------------------------------------------------
修改历史 :
日 期 : 2022-5-7
All rights reserved
******************************************************************************/
2、GPIO初始化:
/******************************************************************************
函数说明:GPIO初始化
入口数据:无
返回值: 无
******************************************************************************/
void LCD_GPIO_Init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_4);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_4);
gpio_bit_set(GPIOA, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_4);
}
3、模拟SPI写数据
/******************************************************************************
函数说明:LCD串行数据写入函数
入口数据:dat 要写入的串行数据
返回值: 无
******************************************************************************/
void LCD_Writ_Bus(uint8_t dat)
{
uint8_t i;
LCD_CS_Clr();
for(i=0;i<8;i++)
{
LCD_SCLK_Clr();
if(dat&0x80)
{
LCD_MOSI_Set();
}
else
{
LCD_MOSI_Clr();
}
LCD_SCLK_Set();
dat<<=1;
}
LCD_CS_Set();
}
4、写入一位:
/******************************************************************************
函数说明:LCD写入数据
入口数据:dat 写入的数据
返回值: 无
******************************************************************************/
void LCD_WR_DATA8(uint8_t dat)
{
LCD_Writ_Bus(dat);
}
5、写入命令:
/******************************************************************************
函数说明:LCD写入命令
入口数据:dat 写入的命令
返回值: 无
******************************************************************************/
void LCD_WR_REG(uint8_t dat)
{
LCD_DC_Clr();//写命令
LCD_Writ_Bus(dat);
LCD_DC_Set();//写数据
}
6、宏定义:
#define SOFTWARE_SPI_ENABLE 1
#define LCD_RES_Clr() gpio_bit_reset(GPIOA,GPIO_PIN_1)//RES rst
#define LCD_RES_Set() gpio_bit_set(GPIOA,GPIO_PIN_1)
#define LCD_DC_Clr() gpio_bit_reset(GPIOA,GPIO_PIN_2)//DC data command select
#define LCD_DC_Set() gpio_bit_set(GPIOA,GPIO_PIN_2)
#define LCD_BLK_LOW() gpio_bit_reset(GPIOA,GPIO_PIN_3)//BLK
#define LCD_BLK_Set() gpio_bit_set(GPIOA,GPIO_PIN_3)
#define LCD_CS_Clr() gpio_bit_reset(GPIOA,GPIO_PIN_4)//CS
#define LCD_CS_Set() gpio_bit_set(GPIOA,GPIO_PIN_4)
#if SOFTWARE_SPI_ENABLE
#define LCD_SCLK_Clr() gpio_bit_reset(GPIOA,GPIO_PIN_5)//SCL=SCLK
#define LCD_SCLK_Set() gpio_bit_set(GPIOA,GPIO_PIN_5)
#define LCD_MOSI_Clr() gpio_bit_reset(GPIOA,GPIO_PIN_7)//SDA=MOSI
#define LCD_MOSI_Set() gpio_bit_set(GPIOA,GPIO_PIN_7)
#endif
其余的代码我打包上附件:
ST7735.7z
(11.02 KB, 下载次数: 16)
|