目录
1、前言
本篇文章主要讲解在Xilinx ZedBoard上开发OLED显示功能,从OLED硬件平台设计、IP核设计、SDK驱动设计到应用VxWorks6.9开发OLED显示功能,力求讲述清楚开发流程,并配套完整的演示软件和相关代码进行验证。下面将从以下几个方面进行讲解。
- OLED设计概述
- Xilinx Vivado OLED IP核设计与实现
- OLED驱动设计与实现
- VxWorks6.9开发OLED驱动和应用。
开发工具说明:
- Xilinx Vivado2018.3
- Xilinx SDK2018.3
- WorkBench3.3
2、OLED设计概述

图1 OLED设计流程图
Zedboard使用Inteltronic/Wisechip公司的OLED显示模组UG-2832HSWEG04,分辨率为128×32,是一款单色被动式显示屏幕,驱动电路采用SSD1306芯片,Zedboard具体的OLED接口电路如图2所示, UG-2832HSWEG04对应的引脚定义如表1所描述。

图2 OLED接口原理图
UG-2832HSWEG04引脚定义表1
| 引脚定义 |
描述 |
| OLED_VBAT |
电源控制引脚,低电平有效。(注意,不直接对应OLED的VBAT引脚,在原理图上作为控制脚,为低的时候将VCC3V3送入OLED。) |
| OLED_VDD |
同OLED_VBAT,低电平有效 |
| OLED_RES |
复位脚,上电的时候拉低,复位一段时间再拉高 |
| OLED_DC |
数据/命令选择引脚 |
| OLED_SCLK |
串行时钟引脚 |
| OLED_SDIN |
串行数据引脚 |
2.1 Vivado OLED IP核设计与实现
让OLED正确的显示数据,需要Znyq7000与其通信,参考SSD1306的控制时序,通信协议采用四线SPI协议,支持写模式,数据和命令均通过该协议传输,其时序如图3所示,SPI通信协议在时钟的下降沿改变数据,上升沿采样有效数据。因此,需要通过Vivado设计OLED的IP核,使其满足OLED对应的驱动时序。

图3 OLED SPI控制时序图
图4为系统设计框图,标黄色部分为OLED IP核模块,其引脚OLED[5:0]分别对应图2原理图中的6个控制管脚。具体对应关系如下。
| OLED[0]-OLED_DC OLED[1]-OLED_RES OLED[2]-OLED_SCK OLED[3]-OLED_SDIN OLED[4]-OLED_VBAT OLED[5]-OLED_VDD |

图4 系统设计框图
OLED对应的IP核PL侧AXI地址空间分配如图5所示。访问OLED的地址为0x43C00000,分配的空间大小为64KB。

图5 OLED分配的PL侧地址空间
2.2 SDK OLED驱动设计与实现
首先分析OLED UG-2832HSWEG04屏幕驱动芯片SSD1306工作原理。如图6所示,该OLED一共有四页,Page0-Page3,每页大小为128×8,该图没有重映射,为复位后默认映射。其初始化命令可以参考SSD1306的资料,为了快速开发OLED的驱动,可以基于Xilinx提供的SDK工具和BSP包快速进行开发。

图6 OLED显示方式
本节主要在Vivado完成硬件平台PL设计之后,基于PS部分的驱动软件设计,实现对OLED的控制。
由于ZedBoard开发板的OLED只支持写,不支持读,因此控制OLED就是在SCLK的时钟下,通过SDIN进行命令和数据的传输。OLED的初始化通过命令进行操作实现。
对于SPI通信,需要通过PS操作AXI地址控制PL输出对应管脚的高低电平。本示例共有6个引脚,因此需要设置6个引脚的高低电平。代码如下:
| #define OLED_BASE_ADDR 0X43c00000 //这里根据vivado中分配的地址来修改
#define OLED_DC 0 #define OLED_RES 1 #define OLED_SCLK 2 #define OLED_SDIN 3 #define OLED_VBAT &nb |

本文详细阐述了在Xilinx ZedBoard上开发OLED显示的过程,包括Vivado OLED IP核设计、SDK驱动编写、VxWorks 6.9驱动集成与应用,涉及硬件接口、初始化步骤和驱动示例。
最低0.47元/天 解锁文章
4267

被折叠的 条评论
为什么被折叠?



