2029|3

7042

帖子

11

TA的资源

版主

楼主
 

【国民技术N32G430】LCD-ST7735 [复制链接]

  本帖最后由 lugl4313820 于 2022-9-16 21:59 编辑

【目的】SPI驱动ST7735LCD屏

1、定义ST7735驱动IO:

/*
              ----------------------------------------------------------------
              GND   电源地
              VCC   3.3v电源
              SCL   PA5(SCLK)
              SDA   PA7(MOSI)
              RES   PA3
              DC    PA2
              CS    PA4
              BLK   PA
              ----------------------------------------------------------------
*/

3、宏定义相关IO,及电平转换等:

#define SPI_MASTER                SPI1
#define SPI_MASTER_PERIPH         RCC_APB2_PERIPH_SPI1
#define SPI_MASTER_PERIPH_GPIO    RCC_AHB_PERIPH_GPIOA
#define SPI_MASTER_GPIO           GPIOA
#define SPI_MASTER_GPIO_ALTERNATE GPIO_AF1_SPI1
#define SPI_MASTER_MISO_PIN       GPIO_PIN_6
#define SPI_MASTER_MOSI_PIN       GPIO_PIN_7
#define SPI_MASTER_CLK_PIN        GPIO_PIN_5
#define SPI_MASTER_NSS_PIN        GPIO_PIN_4
#define LCD_RES_PIN               GPIO_PIN_3
#define LCD_DC_PIN                GPIO_PIN_2
#define LCD_BLK_PIN               GPIO_PIN_1

#define LCD_SCLK_Clr()   GPIO_Pins_Reset(GPIOA,SPI_MASTER_CLK_PIN)
#define LCD_SCLK_Set()   GPIO_Pins_Set(GPIOA,SPI_MASTER_CLK_PIN)

#define LCD_MOSI_Clr()   GPIO_Pins_Reset(GPIOA,SPI_MASTER_MOSI_PIN)
#define LCD_MOSI_Set()   GPIO_Pins_Set(GPIOA,SPI_MASTER_MOSI_PIN)

#define LCD_CS_Clr()   GPIO_Pins_Reset(GPIOA,SPI_MASTER_NSS_PIN)
#define LCD_CS_Set()   GPIO_Pins_Set(GPIOA,SPI_MASTER_NSS_PIN)

#define LCD_RES_Clr()   GPIO_Pins_Reset(GPIOA,LCD_RES_PIN)
#define LCD_RES_Set()   GPIO_Pins_Set(GPIOA,LCD_RES_PIN)

#define LCD_DC_Clr()    GPIO_Pins_Reset(GPIOA,LCD_DC_PIN)
#define LCD_DC_Set()    GPIO_Pins_Set(GPIOA,LCD_DC_PIN)

#define LCD_BLK_LOW()   GPIO_Pins_Reset(GPIOA,LCD_BLK_PIN)
#define LCD_BLK_Set()   GPIO_Pins_Set(GPIOA,LCD_BLK_PIN)



#define USE_HORIZONTAL 2  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏

#if USE_HORIZONTAL==0||USE_HORIZONTAL==1
    #define LCD_W 128  //0x80
    #define LCD_H 160  //0xA0
#else
    #define LCD_W 160
    #define LCD_H 128
#endif

4、时钟初始化:

void RCC_Configuration(void)
{
    /* PCLK2 = HCLK/2 */
    RCC_Pclk2_Config(RCC_HCLK_DIV2);

    /* Enable peripheral clocks --------------------------------------------------*/
    /* spi clock enable */
    RCC_APB2_Peripheral_Clock_Enable(SPI_MASTER_PERIPH );

    /* GPIO Periph clock enable */
    RCC_AHB_Peripheral_Clock_Enable(SPI_MASTER_PERIPH_GPIO );
}

5、IO、SPI初始化:

void LCD_GPIO_Init(void)
{
    GPIO_InitType GPIO_InitStructure;
    SPI_InitType SPI_InitStructure;
    GPIO_Structure_Initialize(&GPIO_InitStructure);
    
    GPIO_InitStructure.Pin = SPI_MASTER_NSS_PIN | LCD_RES_PIN | LCD_DC_PIN | LCD_BLK_PIN;
    
    GPIO_InitStructure.GPIO_Mode    = GPIO_MODE_OUT_PP;
		/* Set the pin drive current to 4MA*/
		GPIO_InitStructure.GPIO_Current = GPIO_DS_4MA;
		/* Initialize GPIO */
		GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);
#if SOFTWARE_SPI_ENABLE
    /* Configure master pins: NSS, SCK, MISO and MOSI */
    /* Confugure SPI pins as Alternate Function Push Pull */
    GPIO_InitStructure.Pin        = SPI_MASTER_MOSI_PIN | SPI_MASTER_CLK_PIN ;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Slew_Rate = GPIO_SLEW_RATE_FAST;
    GPIO_InitStructure.GPIO_Alternate = SPI_MASTER_GPIO_ALTERNATE;
    GPIO_Peripheral_Initialize(SPI_MASTER_GPIO, &GPIO_InitStructure);
    
  
    SPI_Initializes_Structure(&SPI_InitStructure);
    SPI_InitStructure.DataDirection = SPI_DIR_SINGLELINE_TX;
    SPI_InitStructure.SpiMode       = SPI_MODE_MASTER;
    SPI_InitStructure.DataLen       = SPI_DATA_SIZE_16BITS;
    SPI_InitStructure.CLKPOL        = SPI_CLKPOL_LOW;
    SPI_InitStructure.CLKPHA        = SPI_CLKPHA_SECOND_EDGE;
    SPI_InitStructure.NSS           = SPI_NSS_SOFT;
    /* It is recommended that the SPI master mode of the C version chips should not exceed 18MHz */
    SPI_InitStructure.BaudRatePres  = SPI_BR_PRESCALER_8;
    SPI_InitStructure.FirstBit      = SPI_FB_MSB;
    SPI_InitStructure.CRCPoly       = 7;
    SPI_Initializes(SPI_MASTER, &SPI_InitStructure);
    SPI_NSS_Config(SPI_MASTER, SPI_NSS_SOFT);
    SPI_SS_Output_Enable(SPI1);
    


    /* Enable SPI_MASTER */
    SPI_ON(SPI_MASTER);
#else
    GPIO_InitStructure.Pin = SPI_MASTER_MOSI_PIN | SPI_MASTER_CLK_PIN ;
    
    GPIO_InitStructure.GPIO_Mode    = GPIO_MODE_OUT_PP;
		/* Set the pin drive current to 4MA*/
		GPIO_InitStructure.GPIO_Current = GPIO_DS_4MA;
		/* Initialize GPIO */
		GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);
#endif
}

6、写一个字节函数:

/******************************************************************************
      函数说明:LCD串行数据写入函数
      入口数据:dat  要写入的串行数据
      返回值:  无
******************************************************************************/
void LCD_Writ_Bus(uint8_t dat)
{
#if SOFTWARE_SPI_ENABLE  

  LCD_CS_Clr();
     while((SPI1->STS & SPI_I2S_FLAG_TE) == RESET);//等待发送区空
     SPI_I2S_Data_Transmit(SPI1, dat);
  SysTick_Delay_Us(10);
  LCD_CS_Set();
#else
  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();   
#endif
  
}

到这里移植的主要驱动写好了,其他的见附件。

7、在main.c中初始化LCD,并显示出来:

 

st7735.zip (13.08 KB, 下载次数: 17)
My_LCD-7735.zip (2.45 MB, 下载次数: 22)

 

 

最新回复

G430这个主频还是可以的,不过这个系列感觉引脚有点小  详情 回复 发表于 2022-9-19 09:38
点赞 关注(1)
 
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

6666666

 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

谢谢分享,期待后续!

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

6534

帖子

9

TA的资源

版主

4
 

G430这个主频还是可以的,不过这个系列感觉引脚有点小

 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表