你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

亚当泰勒玩转MicroZed连载31:系统模块驱动NeoPixel RGB LED阵列

发布者:jackzhang 时间:2014-07-09 10:01:22

作者:Steve Leibson, 赛灵思战略营销与业务规划总监

6个月前,在我开始写这个连载博客的时候,我就通过提供一些好的、简单易用的例子,来阐述Zynq All Programmable SoC的PS(处理器系统)和PL(可编程逻辑)的若干细节知识,并在以前的章节中介绍了MicroZed I/O载体卡,现在,我们可以尝试把之前介绍过的这些方面都组合到一起,来看看让它们协同工作是多么容易的事情。

这个例子,我们主要考虑用PS来控制PL去驱动一个Adafruit NeoPixel数字RGB LED阵列。我们会通过下面的方法来实现:
1.开发一个PL外设来驱动NeoPixels;
2.在PS和PL之间通信;
3.使用Zynq I/O载体卡和卡上的PMOD扩展端口;
4.开发一个PS应用来使上面这些项协同工作;

我不认为这个工作在一篇博文中就能描述完,可能会需要写几篇,但是不用担心,所有的事情都已经实现了,并且可以正常工作,所以在方法上不会有任何问题,我将花点时间来详细说明这个工作。

有些人也许会问,NeoPixel是什么?它们是独立编址的LED,每一个NeoPixel都包括一个红色、绿色和蓝色LED,这些LED通过一个数字控制器来控制。它们被安装成条状,就象你在这张AdaFruit照片中看到的那样:

AdaFruit NeoPixel数字RGB LED防水条

AdaFruit NeoPixel数字RGB LED防水条

AdaFruit NeoPixel条采用的是一个非常简单的3线接口,包括电源、电源回复和Din(数据输入)。三个NeoPixe LED(红、绿或者蓝)输出的光都用一个8-bit值来表示,因此,每一个单色LED都可以提供256个亮度级,当和另外两个LED组合到一起的时候,就可以得到24位色(16777216个颜色)。丰富的色彩以及简单的串行接口,使得这些LED器件在许多场合中都得到广泛使用。

更好的地方在于,NeoPixel之间可以通过菊花链连接在一起。每一个NeoPixel都有一个缓冲的Dout(数据输出)接口,当命令字一个接一个的传输过来时, NeoPixel就把数据从Din接口直接传送到Dout接口,这样,仅用一根I/O线,就可以把这些独立编址的NeoPixel组合成一个大的条状或者其它的排列方式。想要组合成多大都行,只要你能把它们都点亮。

两个NeoPixel通过菊花链组合在一起

两个NeoPixel通过菊花链组合在一起

NeoPixel采用Worldsemi WS2812智能型LED集成光源(数据手册这里)。这些器件通常采用5V供电,但是,数据手册中建议可以采用3.3V供电,其中的限制因素就是蓝色LED需要的供电电压是3.2V~3.4V。因此,应该(的确是)可以采用MicroZed I/O载体卡的3V3来给这些器件供电,我会在后面的博文中进行更详细的说明。

我需要一个PMOD扩展模块来确保能够把NeoPixel同MicroZed I/O载体卡连接起来。PmodCON1扩展模块连接器把PMOD接口上的4根信号线和电源/电源回复线输出到6个螺丝接线端。

PmodCON1与NeoPixel条之间的连接

PmodCON1与NeoPixel条之间的连接

我们要有一个良好的工程习惯,就是在一头扑进去开发一个方案之前,先定义好一些需求。下面整理了这个应用的一些主要需求:
1、要能够驱动可变数量的NeoPixel;
2、在工作过程中,用户可以进行升级;
3、每一个NeoPixel都要能单独进行编址;
4、每一个NeoPixel在工作过程中要能够进行升级;

这些需求都非常简单,但是,满足这些需求的应用能够以多种方式灵活地进行使用。

在下一篇博文中,我们将要着眼于通过什么样的架构和方法来实现这些需求。下面的图片展示了这个方案最初的测试结果,测试中只控制了一个LED。

第一个用Zynq控制的NeoPixel

第一个用Zynq控制的NeoPixel

原文链接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...

© Copyright 2014 Xilinx Inc.
如需转载,请注明出处

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了