Xilinx社区
首页 > Steve专栏 > Adam Taylor玩转MicroZed系列第83部分:简单通信接口Ⅲ
Steve专栏
Adam Taylor玩转MicroZed系列第83部分:简单通信接口Ⅲ
来源:  时间:2015-07-20  浏览量:17118

  By Adam Taylor

  在上期的博客中,我们同时研究了如何通过Zynq SoC的PS(处理器系统)MIO和PL(可编程逻辑)EMIO来使用SPI通信。本期博客中为了给OLED模块进行上电,我们将通过EMIO同时使用SPI和GPIO。

  为了控制OLED模块,我们需要使用下表中定义的和在第81部分中简要提到的一些GPIO:

信号

FPGA IO

PS GPIO标识号

描述

方向

复位

U9

54

低电平复位

输出

VDD

U12

55

低电平数字电源使能

输出

VBatt

U11

56

低电平Dc/Dc电源使能

输出

数据/命令

U10

57

数据/命令。命令 = 0

输出

  在EMIO模式下我们使用这些GPIO的方式和在MIO模式下的方式完全一致。我们需要驱动这些信号来满足下图中定义的时序:

  OLED上电

  OLED掉电

  为了实现上述目的,我们可以使用Zynq SoC的CPU中的私有定时器。一旦通过使用GPIO信号实现这些时序后(t1 = 3us,t2 = 3us,toff = 100ms),接着我们就可以进行初始化,然后通过SPI总线把命令发送到OLED模块了。

  想要使用EMIO中的GPIO需遵循以下步骤:

  • 包含头文件xgpiops.h

  • 使用XGpioPs类型声明GPIO

  • 使用XGpioPs_Config类型来声明一个GPIO配置指针

  • 使用XGpioPs_LookupConfig()函数来查询GPIO配置

  • 使用XGpioPs_CfgInitialize()函数来初始化GPIO

  一旦我们已经初始化好GPIO并准备好传送信号之后,我们需要声明信号的方向,并且假如需要,我们还要使能它。所有这些信号都是输出,因此我们把它们声明为输出,并且在定义信号初始状态之前,将这些输出使能。下面是一个演示以上步骤的例程:

  #define vdd 55

  XGpioPs_SetDirectionPin(&Gpio, vdd, 1);

  XGpioPs_SetOutputEnablePin(&Gpio, vdd, 1);

  XGpioPs_WritePin(&Gpio, vdd, 1);

  OLED模块正确上电之后,我们现就可以给OLED模块发送命令了。

  但发什么命令呢?

  为了初始化OLED模块,我们需要配置它的构建控制器,这就需要发送一个23字节的配置字符串来把OLED控制器置为显示信息的状态。在下一期的博客中,接着我们会开始把显示的信息发送到OLED面板中,但是现在,我们需要通过OLED面板数字手册中提供的SPI链路来发送以下命令:

  1. 关掉显示

  2. 设置好时钟、频率、分频器和倍频器设置

  3. 设置显示偏移和开始线

  4. 配置好电源供应来驱动OLED面板

  5. 配置好映射、扫描方向和引脚硬件配置

  6. 设置预供电时段

  7. 开启显示

  如上面所说,这7个命令需要23个字节。为了简化该过程,我声明了一个包含了所有这些配置字的u8数组,我们写SPI总线的时候可以把它们循环发送出去。在配置文件的最后,我们可以看到OLED已经启动了,虽然上面还没有任何显示的内容。下面是配置代码的片段:

  u8 init_vector[23] = {0xae, 0xd5, 0x80, 0xa8, 0x1f, 0xd3, 0x00, 0x40, 0x8d, 0x14, 0xa1, 0xc8, 0xda, 0x02, 0x81, 0x8f, 0xd9, 0xf1, 0xdb, 0x40, 0xa4, 0xa6, 0xaf};

  for(i =0; i<23; i++){

  wr_buff[0] = (u8) init_vector[i];

  XGpioPs_WritePin(&Gpio, dc, 0); // 设置DC为命令

  XSpiPs_SetSlaveSelect(&SpiInstance_EMIO, 0x01); //选择从机

  XSpiPs_PolledTransfer(&SpiInstance_EMIO, wr_buff, NULL, 1); //写控制字

  XGpioPs_WritePin(&Gpio, dc, 1); // 设置DC为数据

  }

  下期博客中,我们会研究如何让OLED显示一幅图像。

  点击这里获取OLED数据手册。

  现在,你可以方便地获取第一年的亚当·泰勒玩转MicroZed系列Kindle电子书版本了,很实惠仅需7.5美元。点击这里

  原文链接:

  http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-ish-...

热点文章
精选视频
推荐资源

中国授权培训机构

北京 电话:(010)82757632
      (010) 62192881
深圳 电话:(0755)86186715
武汉 电话:(027)61389792
成都 电话:(028)80821007
南京 电话:(025)66022032
西安 电话:(029)82230498
邮箱:sales@e-elements.com

中国授权经销商

香港 电话:(852)22127848
北京 电话:(010)84148118
成都 电话:(028)86528262
上海 电话:(021)33678387
深圳 电话:(0755)26584925
武汉 电话:(027)87322806
邮箱:china@avent.com
深圳 电话:(0755)26743210
上海 电话:(021)51696680
北京 电话:(010)51726678
成都 电话:(028)85139576
武汉 电话:(027)87690155
邮箱:
xilinx_enquiry@comtech.com.cn

社区主办


《电子产品世界》杂志社

内容提供


    赛灵思公司

Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052