【沁恒RISC-V内核 CH582】SPI 驱动ST7735
<p><a href="https://bbs.eeworld.com.cn/thread-1195022-1-1.html">【沁恒RISC-V内核 CH582】I2C 点亮OLED屏 - 国产芯片交流 - 电子工程世界-论坛 (eeworld.com.cn)</a></p><p>继I2C驱动OLED屏后,今天测试硬件SPI0驱动ST7735LCD屏。</p>
<p>一、CH582 芯片提供了 SPI0,特性如下:</p>
<ul>
<li>SPI0 支持主机模式(Master)和从机模式(Slave)。</li>
<li> 兼容串行外设接口(SPI)规范。</li>
<li>支持模式 0 和模式 3 数据传输方式。</li>
<li>8 位数据传输方式,数据位序可选:字节低位在前或者高位在前。</li>
<li>时钟频率最高可达系统主频 Fsys 的一半。</li>
<li>8 字节 FIFO。</li>
<li>SPI0 从机模式支持首字节为命令模式或数据流模式。</li>
<li>SPI0 支持 DMA,数据传输效率更高。</li>
</ul>
<p>二、SPI初始化:</p>
<p> SPI0的IO分别是PA12(NSS),PA13(SCK),PA14(MOSI),今天我驱动ST7735不需要用到数据接收,所以PA15MISO不用配置</p>
<p> GPIOA_ModeCfg( GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14, GPIO_ModeOut_PP_5mA );</p>
<p> SPI0_MasterDefInit();</p>
<p>三、ST7735的DC、RES、BL角的初始,都配置成20mA的输出模式:</p>
<p> GPIOA_ModeCfg(RES_PIN | DC_PIN | CS_PIN, GPIO_ModeOut_PP_20mA);</p>
<p>四、把DC、RES、BL高低电平定义如下:</p>
<pre>
<code>#define RES_PINGPIO_Pin_0
#define DC_PIN GPIO_Pin_1
#define BLK_PINGPIO_Pin_3
#define SCK_PINGPIO_Pin_13
#define MOSI_PIN GPIO_Pin_14
#define CS_PIN GPIO_Pin_12
//-----------------LCD端口定义----------------
#define LCD_CS_Clr() GPIOA_ResetBits(CS_PIN)//CS
#define LCD_CS_Set() GPIOA_SetBits(CS_PIN)
#define LCD_RES_Clr()GPIOA_ResetBits(RES_PIN)//RES
#define LCD_RES_Set()GPIOA_SetBits(RES_PIN)
#define LCD_DC_Clr() GPIOA_ResetBits(DC_PIN)//DC
#define LCD_DC_Set() GPIOA_SetBits(DC_PIN)
#define LCD_BLK_Clr()GPIOA_ResetBits(BLK_PIN)//BLK
#define LCD_BLK_Set()GPIOA_SetBits(BLK_PIN)</code></pre>
<p>经过以上四个步骤,ST7735硬件初始化就OK了,相比STM32,他的语句简洁。我从N32G45的工程把ST7735移植过来就几步,花配了几分钟就OK。</p>
<p>其他的ST7735的驱动库,我放在附件里。工程下载下来,解压到EXAM目录下就直接可以测试了。</p>
<p>main.c为:</p>
<pre>
<code>/********************************** (C) COPYRIGHT *******************************
* File Name : Main.c
* Author : 刘建华
* Version : V1.0
* Date : 2022/02/27
* Description : 演示ST7735 硬件SPI驱动
*******************************************************************************/
#include "CH58x_common.h"
#include "lcd_init.h"
#include "lcd.h"
__attribute__((aligned(4))) UINT8 spiBuff[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6 };
__attribute__((aligned(4))) UINT8 spiBuffrev;
void DebugInit( void )
{
GPIOA_SetBits( GPIO_Pin_9 );
GPIOA_ModeCfg( GPIO_Pin_8, GPIO_ModeIN_PU );
GPIOA_ModeCfg( GPIO_Pin_9, GPIO_ModeOut_PP_5mA );
UART1_DefInit();
}
int main()
{
UINT8 i;
SetSysClock( CLK_SOURCE_PLL_60MHz );
/* 配置串口调试 */
DebugInit();
PRINT( "Start @ChipID=%02X\n", R8_CHIP_ID );
LCD_Init();
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
LCD_ShowString(10,0,"CH582M",BLUE,WHITE,32,0);
LCD_ShowString(16,36,"HELLO WORLD",RED,WHITE,16,0);
LCD_ShowString(16,54,"ST7735",RED,WHITE,16,0);
while( 1 )
;
}</code></pre>
<p></p>
<p>好啊,顶一个。</p>
<p>厉害了,顶一个</p>
popzone 发表于 2024-12-14 14:48
厉害了,顶一个
<p>多谢大佬的关注,这个板子挺好的,性价比高,有空可以关注一下。</p>
页:
[1]