lugl4313820 发表于 2022-5-7 08:33

【GD32F310G-START】SPI驱动ST7735

<p><a href="https://bbs.eeworld.com.cn/thread-1201841-1-1.html">【GD32F310G-START】HELLO WORLD - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)</a></p>

<p><a href="https://bbs.eeworld.com.cn/thread-1201927-1-1.html">【GD32F310G-START】OLED之HELLO EEWORLD&mdash;&mdash;硬件I2C - GD32 MCU - 电子工程世界-论坛</a></p>

<p>&nbsp;</p>

<p>驱动I2C后,接着是SPI,这次实战是软SPI驱动屏幕ST7735,主要代码是移植我前面实战st7735代码。</p>

<p>1、IO定义:</p>

<pre>
<code>/*****************
  作    者   : 刘建华
  生成日期   : 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
******************************************************************************/</code></pre>

<p>2、GPIO初始化:</p>

<pre>
<code>/******************************************************************************
      函数说明: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);

} </code></pre>

<p><br />
3、模拟SPI写数据</p>

<pre>
<code>/******************************************************************************
      函数说明:LCD串行数据写入函数
      入口数据:dat  要写入的串行数据
      返回值:  无
******************************************************************************/
void LCD_Writ_Bus(uint8_t dat) 
{    
    uint8_t i;
    LCD_CS_Clr();
    for(i=0;i&lt;8;i++)
    {              
        LCD_SCLK_Clr();
        if(dat&amp;0x80)
        {
           LCD_MOSI_Set();
        }
        else
        {
           LCD_MOSI_Clr();
        }
        LCD_SCLK_Set();
        dat&lt;&lt;=1;
    }    
  LCD_CS_Set();    
}</code></pre>

<p>4、写入一位:</p>

<pre>
<code>/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_DATA8(uint8_t dat)
{
    LCD_Writ_Bus(dat);
}</code></pre>

<p>5、写入命令:</p>

<pre>
<code>/******************************************************************************
      函数说明:LCD写入命令
      入口数据:dat 写入的命令
      返回值:无
******************************************************************************/
void LCD_WR_REG(uint8_t dat)
{
        LCD_DC_Clr();//写命令
        LCD_Writ_Bus(dat);
        LCD_DC_Set();//写数据
}</code></pre>

<p>6、宏定义:</p>

<pre>
<code>#define SOFTWARE_SPI_ENABLE    1
       
#define LCD_RES_Clr()   gpio_bit_reset(GPIOA,GPIO_PIN_1)//RESrst
#define LCD_RES_Set()gpio_bit_set(GPIOA,GPIO_PIN_1)

#define LCD_DC_Clr()    gpio_bit_reset(GPIOA,GPIO_PIN_2)//DCdata 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</code></pre>

<p>其余的代码我打包上附件:<br />
<br />
</p>

<p><br />
&nbsp;</p>

okhxyyo 发表于 2022-6-16 22:31

<p>谢谢楼主分享,测评的很用心呀</p>
页: [1]
查看完整版本: 【GD32F310G-START】SPI驱动ST7735