3214|1

7048

帖子

11

TA的资源

版主

楼主
 

【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)




 

此帖出自GD32 MCU论坛

最新回复

谢谢楼主分享,测评的很用心呀   详情 回复 发表于 2022-6-16 22:31
点赞 关注
 

回复
举报

1万

帖子

203

TA的资源

管理员

沙发
 

谢谢楼主分享,测评的很用心呀

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表