本帖最后由 gaoyang9992006 于 2024-7-24 17:09 编辑
因为要调用M058S的库函数,因此要在ST7735的头文件里包含它
#include "M058S.h"
接下来要实现
RST DC CS的映射
#define DC_SetLow() P01=0
#define DC_SetHigh() P01=1
#define CS_SetLow() P04=0
#define CS_SetHigh() P04=1
#define RST_SetLow() P00=0
#define RST_SetHigh() P00=1
通过宏定义实现函数映射替换
接下来就是通过SPI发送函数实现ST7735的数据发送
void ST7735_SPI_SendByte(uint8_t byte)
{
//LCD_Writ_Bus(byte);
/* Write to TX register */
SPI_WRITE_TX0(SPI0, byte);
/* Trigger SPI data transfer */
SPI_TRIGGER(SPI0);
/* Check SPI0 busy status */
while(SPI_IS_BUSY(SPI0));
}
最后就是在主函数里,设置IO工作模式和SPI工作模式
GPIO_SetMode(P0, BIT0|BIT1|BIT4|BIT5|BIT7, GPIO_PMD_OUTPUT);
因为我们只使用了发送功能,在配置SPI时候只配置发送引脚即可,另外CS我们自己实现的拉高拉低,因此也可以不配置SPI的SS
/* Select HCLK as the clock source of SPI0 */
CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL1_SPI0_S_HCLK, MODULE_NoMsk);
/* Enable SPI0 peripheral clock */
CLK_EnableModuleClock(SPI0_MODULE);
/* Setup SPI0 multi-function pins */
SYS->P0_MFP &= ~( SYS_MFP_P05_Msk | SYS_MFP_P07_Msk);
SYS->P0_MFP |= ( SYS_MFP_P05_MOSI | SYS_MFP_P07_SPICLK);
最后设置SPI工作模式和位宽,频率
/*---------------------------------------------------------------------------------------------------------*/
/* Init SPI */
/*---------------------------------------------------------------------------------------------------------*/
/* Configure as a master, clock idle low, 8-bit transaction, drive output on falling clock edge and latch input on rising edge. */
/* Set IP clock divider. SPI clock rate = 2 MHz */
SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0, 8, 2000000);
接下来就可以使用ST7735的函数使用SPI实现屏幕点亮了
ST7735_Init();
ST7735_FillScreen(ST7735_BLACK);
ST7735_DrawRectangle(0,0+24,10,5,ST7735_YELLOW);CLK_SysTickDelay(250000);
ST7735_DrawRectangle(15,5+24,10,20,ST7735_BLUE);CLK_SysTickDelay(250000);
ST7735_DrawRectangle(30,25+24,10,10,ST7735_RED);CLK_SysTickDelay(250000);
|