当前位置:网站首页>Use of OLED screen

Use of OLED screen

2022-07-06 20:22:00 Kshine2017

1. 0.96 " 7 Pin OLED The screen

  • The missing part of the text in the picture is caused by the mobile phone taking pictures , It's actually a complete text .
  • Reference link :
    https://wenku.baidu.com/view/eb67b928b91aa8114431b90d6c85ec3a87c28b86.html
    https://wenku.baidu.com/view/11e968518d9951e79b89680203d8ce2f00666590.html
  • Pin interpretation :
GND  GND
VDD  VCC    3.3V~5V
PE5    D0     CLK Clock information (SCL)      SPI_CLK
PE6    D1      Data port (SDA)         SPI_MOSI
PE7    RES     Reset                      Ordinary IO
PE8    DC      data / Command to choose (D/C)       Ordinary IO
PE9    CS      Chip selection , Low level active         SPI_CS

 Please add a picture description

  • The connection mode of resistance is shown in the following figure , Corresponding 4 Line SPI.
     Insert picture description here
  • IO simulation 4 Line SPI, drive OLED
void MX_GPIO_Init(void)
{
    

  GPIO_InitTypeDef GPIO_InitStruct = {
    0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
	
  GPIOA->BSRR = OLED_DC_Pin;
	GPIOA->BSRR = OLED_RES_Pin;
	GPIOA->BSRR = GPIO_PIN_5;//SCK pull up 
	GPIOA->BSRR = GPIO_PIN_7;// pull up 
	//CS The pin is directly connected GND
	
	
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;

  GPIO_InitStruct.Pin = OLED_DC_Pin|OLED_RES_Pin;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

	GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

#define MOSI_H GPIOA->BSRR = GPIO_PIN_7 //HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET) //
#define MOSI_L GPIOA->BRR = GPIO_PIN_7 //HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET) //
#define SCK_H GPIOA->BSRR = GPIO_PIN_5 //HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET) //
#define SCK_L GPIOA->BRR = GPIO_PIN_5 //HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET) //

//#define MISO 
#define NSS_H 
#define NSS_L 

void delayUS(uint32_t nus)
{
    		
  uint16_t i;
	for(i=0;i<nus;i++)
	{
    
	} 
}


// have access to SPI The way  HAL_SPI_Transmit(&hspi1,&data,1,1);
void My_SPI_Transmit(unsigned char data)
{
    

	unsigned char i;	        // Defining variables 
	for(i = 0; i < 8; i++)	        // loop 8 Time 
	{
    
		SCK_L;
        delayUS(1);			
	    if(data&0x80)
		    MOSI_H;
		else
			  MOSI_L;
		data<<=1;
		delayUS(1);	
		SCK_H;
		delayUS(1);	
		}
	
}


  • Actually measured , MCU works in 72MHz Under the circumstances , Above My_SPI_Transmit The time of function is about 76.4 Microsecond .
     Insert picture description here

  • Driver file
    https://download.csdn.net/download/Kshine2017/85519013

原网站

版权声明
本文为[Kshine2017]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061224354440.html