596|0

2933

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【NUCLEO H533RE】OLED SSD1306屏SPI接口测试 [复制链接]

1、测试介绍

本次测试主要为NUCLEO-H533RE的SPI接口外设 Master Half-Duplex模式测试,测试验证SPI的编程流程。测试使用了0.96英寸OLED屏,驱动类型为SSD1306芯片。

SSD1306有IIC和SPI两种接口模式,本次测试使用SPI模式。NUCLEO-H533RE使用SPI 外设Master Half-Duplex模式。测试显示字符串。

2、硬件连接

主要有两个硬件

SSD1306 SPI和NUCLEO-H533RE

VCC 3.3 GND
D0      <===>  PC1 MOSI

D1      <===>  PC1 SCLK

RES   <===>  PC1 GPIO

DC    <===>   PA1 GPIO

3、参数配置

参数设置主要为系统时钟和SPI外设的参数。

(1) 系统设置外部24M晶振,系统时钟250Mhz,PLL2Q的时钟为4MHZ

  (2)SPI时钟设置

 

将SPI的时钟设置为PLL2Q,即SPI4的时钟为4MHZ。

(3) SPI参数模式

  SPI模式为Master Half-Duplex模式,PC1为MOSI ,PA0 SCLK。数据位8bit,速率控制为2MHZ

  这里通过Prescale控制SPI的速率。过快的速度可能造成SSD1306无法工作。

(4)GPIO设置

 

将PB1和PA1设置为输出模式。

4、程序与工作原理

程序主要为SSD1306驱动和字体文件组成。详细代码参考附录程序

 /* USER CODE BEGIN 2 */
  ssd1306_Init();
	ssd1306_Fill(Black);
	ssd1306_UpdateScreen();
  /* USER CODE END 2 */

  /* Initialize leds */
  BSP_LED_Init(LED_GREEN);

  /* Initialize USER push-button, will be used to trigger an interrupt each time it's pressed.*/
  BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);

  /* Initialize COM1 port (115200, 8 bits (7-bit data + 1 stop bit), no parity */
  BspCOMInit.BaudRate   = 115200;
  BspCOMInit.WordLength = COM_WORDLENGTH_8B;
  BspCOMInit.StopBits   = COM_STOPBITS_1;
  BspCOMInit.Parity     = COM_PARITY_NONE;
  BspCOMInit.HwFlowCtl  = COM_HWCONTROL_NONE;
  if (BSP_COM_Init(COM1, &BspCOMInit) != BSP_ERROR_NONE)
  {
    Error_Handler();
  }

  /* USER CODE BEGIN BSP */

  /* -- Sample board code to send message over COM1 port ---- */
  printf("Welcome to STM32 world !\n\r");
  
//	ssd1306_SetCursor(0, 0);
//  ssd1306_WriteString(title, Font_11x18, White);
//	ssd1306_UpdateScreen();
  /* -- Sample board code to switch on leds ---- */
  BSP_LED_On(LED_GREEN);

  /* USER CODE END BSP */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

    /* -- Sample board code for User push-button in interrupt mode ---- */
    if (BspButtonState == BUTTON_PRESSED)
    {
      /* Update button state */
      BspButtonState = BUTTON_RELEASED;
      /* -- Sample board code to toggle leds ---- */
      BSP_LED_Toggle(LED_GREEN);
      /* ..... Perform your action ..... */
    }
    ssd1306_SetCursor(0, 0);
		ssd1306_WriteString(timerStr, Font_11x18, White);
		ssd1306_UpdateScreen();
		
		HAL_Delay(100);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

5、测试过程

烧写程序运行

 

 

附录:项目文件 OLEDSPI.zip (7.06 MB, 下载次数: 0)

 

 

此帖出自stm32/stm8论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表