基于Zynq7000平台VxWorks6.9开发应用——OLED开发应用篇

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

 

目录

 

1、前言

2、OLED设计概述

2.1 Vivado OLED IP核设计与实现

2.2 SDK OLED驱动设计与实现

2.3 OLED初始化

2.4  OLED更新显存

3、VxWorks6.9开发驱动与应用

3.1 OLED驱动

3.2  OLED应用

3.3  OLED显示


1、前言

        本篇文章主要讲解在Xilinx ZedBoard上开发OLED显示功能,从OLED硬件平台设计、IP核设计、SDK驱动设计到应用VxWorks6.9开发OLED显示功能,力求讲述清楚开发流程,并配套完整的演示软件和相关代码进行验证。下面将从以下几个方面进行讲解。

  1. OLED设计概述
  2. Xilinx Vivado OLED IP核设计与实现
  3. OLED驱动设计与实现
  4. VxWorks6.9开发OLED驱动和应用。

开发工具说明:

  1. Xilinx Vivado2018.3
  2. Xilinx SDK2018.3
  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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CPUOS2010

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

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

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

打赏作者

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

抵扣说明:

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

余额充值