48.N32G43X例程之-硬件SPI驱动LCD

本文介绍如何使用国民技术N32G43X微控制器通过硬件SPI接口驱动LCD显示。主要内容包括SPI配置步骤、LCD初始化过程及相关的GPIO设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

N32G43X


前言

本例程主要介绍国民技术N32G43X硬件SPI驱动LCD,SPI使用的是主机模式。


提示:以下是本篇文章正文内容,下面案例可供参考

一、SPI1配置

1.SPI1配置时钟

代码如下(示例):

//SPI1配置时钟
void  SPI1_RCC_Configuration(void)
{
	RCC_ConfigPclk2(RCC_HCLK_DIV2);    
  
	RCC_EnableAPB2PeriphClk( RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_AFIO , ENABLE);    

	RCC_EnableAPB2PeriphClk( RCC_APB2_PERIPH_SPI1, ENABLE);    

}

2.SPI配置GPIO

代码如下(示例):

//SPI配置GPIO
void  SPI1_GPIO_Configuration(void)
{
    GPIO_InitType GPIO_InitStructure;			
	GPIO_InitStruct(&GPIO_InitStructure);	    

   // Configure SPI1 pins: SCK, MOSI 
	GPIO_InitStructure.Pin        = GPIO_PIN_5 | GPIO_PIN_7;  
   	GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;		
	GPIO_InitStructure.GPIO_Alternate = GPIO_AF0_SPI1; 
	
	GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
		
}

3.SPI初始化

代码如下(示例):

//SPI初始化
void  LCD_SPI1_Init(void)
{
	SPI_InitType SPI_InitStructure;
	
	SPI1_RCC_Configuration();
	SPI1_GPIO_Configuration();
	  
	SPI_InitStructure.DataDirection = SPI_DIR_DOUBLELINE_FULLDUPLEX;    
	SPI_InitStructure.SpiMode       = SPI_MODE_MASTER;    
	SPI_InitStructure.DataLen       = SPI_DATA_SIZE_8BITS;    
	SPI_InitStructure.CLKPOL        = SPI_CLKPOL_HIGH;    
	SPI_InitStructure.CLKPHA        = SPI_CLKPHA_SECOND_EDGE;    
	SPI_InitStructure.NSS           = SPI_NSS_SOFT;    
	SPI_InitStructure.BaudRatePres  = SPI_BR_PRESCALER_8;    
	SPI_InitStructure.FirstBit      = SPI_FB_MSB;    
   
   	SPI_Init(SPI1, &SPI_InitStructure);  
	SPI_Enable(SPI1, ENABLE);
    	
}

4.SPI读写函数

代码如下(示例):

//SPI读写函数
u8  SPI1_ReadWriteByte(uint8_t TxData)
{
	u8 retry=0;
	
	while((SPI1->STS&1<<1)==0) //等待发送区空	
	{
		retry++;
		if(retry>200) return 0;
	}			  
	SPI1->DAT=TxData;	 	   //发送一个byte 

	 retry=0;				 
	while((SPI1->STS&1<<0)==0) //等待接收完一个byte  
	{
		retry++;
		if(retry>200) return 0;
	}	  						    
	return SPI1->DAT;          //返回收到的数据
}

二、LCD配置

1.宏定义GPIO

代码如下(示例):

//-----------------LCD端口定义----------------  					   
//#define LCD_CS  PAout(6)	
#define   LCD_CS_L		   GPIOA->PBC  =  GPIO_PIN_6
#define   LCD_CS_H		   GPIOA->PBSC =  GPIO_PIN_6 

//#define LCD_RS  PAout(4)
#define   LCD_RS_L		   GPIOA->PBC  =  GPIO_PIN_4
#define   LCD_RS_H		   GPIOA->PBSC =  GPIO_PIN_4 

//#define LCD_POWER PCout(5)	
#define   LCD_Light_L		   GPIOC->PBC  =  GPIO_PIN_5
#define   LCD_Light_H		   GPIOC->PBSC =  GPIO_PIN_5 

//#define LCD_REST PCout(4)	
#define   LCD_REST_L		   GPIOC->PBC  =  GPIO_PIN_4
#define   LCD_REST_H		   GPIOC->PBSC =  GPIO_PIN_4 

2.读写命令和数据函数

代码如下(示例):

//RS 为0时写命令
void  Write_com(u8  com)
{
 	LCD_RS_L;// = 0;  //RS 为0时写命令
	LCD_CS_L;// = 0;  //CS为0打开片选
	SPI1_ReadWriteByte(com);			 
	LCD_CS_H;// = 1;		  
	LCD_RS_H;// = 1;
}

//RS 为1时写数据
void  Write_data(u8 dat)
{
	LCD_RS_H;// = 1;  //RS 为1时写数据
	LCD_CS_L;// = 0;  //CS为0打开片选
	SPI1_ReadWriteByte(dat);		 
	LCD_CS_H;// = 1;		  
	LCD_RS_H;// = 1;
}

3.初始化GPIO

代码如下(示例):

//初始化GPIO
void LCD_GPIO_Init(void)
{
	GPIO_InitType GPIO_InitStructure;
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA|RCC_APB2_PERIPH_GPIOC, ENABLE);

	//CS -- PA4, RS - PA6
    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = GPIO_PIN_4 |GPIO_PIN_6;
    GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA;
    GPIO_InitStructure.GPIO_Pull    = GPIO_No_Pull;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);

	//RESET -- PC4, Light - PC5
	GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = GPIO_PIN_4 |GPIO_PIN_5;
    GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA;
    GPIO_InitStructure.GPIO_Pull    = GPIO_No_Pull;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_InitPeripheral(GPIOC, &GPIO_InitStructure);
}

4.初始化LCD

代码如下(示例):

//初始化LCD					    
void LCD_Init(void)
{ 	
    LCD_SPI1_Init(); //初始化硬件SPI   
    LCD_GPIO_Init(); //初始化GPIO
    
	LCD_REST_L;
   	delay_ms(200);
   	LCD_REST_H;
					 	 					    
	Write_com(0xe2);   
	Write_com(0xa1);  
	Write_com(0xc8); 
	Write_com(0xa2); 
	Write_com(0x2f);  

	Write_com(0x26);    
	Write_com(0x81);

	Write_com(0x20);   
	Write_com(0xaf);    
	
	Write_com(0xA5); //全屏测试
    LCD_Light_H;     //打开背光
} 

三、软件下载

48.N32G43X例程之-硬件SPI驱动LCD

https://download.csdn.net/download/suqingxiao/73802448

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suqingxiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值