#申请原创#
Purple Pi开发板以SigmaStarSSD201 SoC(ARMCortex A7 内核)为核心,是一款兼容树莓派的开发板,其主频高达1.2GHz,并配有256KB L2-缓存,内置双MAC、一个PHY,支持双100M以太网接口等。另外,它集成了H.264/AVC和H.265/HEVC解码器,支持最大分辨率FHD(1920x1080)/60帧解码。此外,Purple Pi主板配有TF卡座、双10/100Mbps以太网、音频接口、USB2.0、MIPI-DSI屏幕接口和单频WIFI等。它主要应用于在智能楼宇室内机、智能家居中控、86盒家庭中控、电梯楼层显示器、IP网络广播设备和语音识别设备等。 要对该开发板进行开发,当然是要为它构成一个合适的开发平台。 但若不构建一个开发平台,又是否能对其进行开发呢? 还真能,下面就以一个基于RTC的电子时钟做例子,来介绍它的实现过程。 在其实现的过程中,主要涉及: 1)以什么为显示器件及如何实现显示功能 2)如何获取RTC计时值并将其显示出来 1.串行数码管的驱动显示 为了实现显示功能,这里所用的是一款以串行发送工作的数码管显示模块,其核心控制芯片为MAX7219,它可将串行信号转换为并行信号来驱动数码管,并具有数据的锁存功能,从而可以有效地节省MCU对它的消耗。 此外,它的亮度高、抗外部信号干扰强。 它与开发板的连接方式如图1所示,只需占用3个GPIO口。 该显示模块与开发板的连接关系为: SCL---GPIO89 SDA---GPIO88 CS ---GPIO87 图1 连接方式 那如果来驱动该数码管模块呢? 方法就是利用开发板所提供的GPIO设备,并以此来申请GPIO89、GPIO88、GPIO87这3个设备。 其申请方法是通过超级终端以手工或脚本文件来获得,所使用的指令为: 由于只使用的是GPIO口的输出功能,故需将其属性所谓输出模式,所用的指令为: 这样就可以通过输出高低电平来模拟串行信号输出了,实现高低电平输出的指令形式为: echo 0 > /sys/class/gpio/gpio88 echo 1 > /sys/class/gpio/gpio88 有了前面的准备,如果是手工输入指令的方式来驱动数码管显示无疑是无法令人承受的,为此可以用脚本文件来帮助解决。
通过脚本所实现的串行信号模拟输出程序如下: 这里有效地方受指令功能的限制,做了适当的变通处理。 例如:由于没有逻辑运算处理功能,是以整除的方式来代替位判别。 此外,由于没有移位运算,这里是以乘法运算来代替。 因为没有变量类型的设置,就以取余的方式来控制。
经测试,该程序是符合设计要求的,其测试结果如图2所示,能将发送的数据变为串行信号发送。
图2 模拟测试 有了串并转换函数,该如何实现参数控制呢? 由于脚本文件中,其函数是参数的,为此只能通过公共变量来传递参数。 例如函数write_max7219就是这样实现的,其内容如下:
有了以上2个函数的支持,就可以完成MAX7219的初始化函数了,其内容如下:
这里为了方便起见,将申请GPIO设备的内容也纳入其中。 为了进行显示功能的测试,特编写了look这个函数,其内容如下: 在使用以下指令后,即可见到图1所示的显示效果。 此外,为了让实现的内容动起来,还设计了一个循环计数程序,其效果如图3所示。 图3 显示效果 2.电子时钟功能的实现 数码管的显示功能是为电子时钟服务的,那如何来获取计时值呢? Purple Pi开发板配有RTC计时器及后备电池座,可实现掉电维持计时。 使用date指令即可获取系统计时值,其数据格式如下: 显然在显示时间时,是不能采用这种形式的。 为此,可通过以下的方式来提取各时间值。 这样,就可以通过下面的程序来实现电子时钟的功能了。
其运行效果如图4所示,证明其功能是完全正确的,同时也说明在没有搭建开发平台的情况下,使用Purple Pi开发板一样可以进行Linux的学习,一样能实现器件的应用设计。
图4 计时效果 演示视频:
|
以脚本方式直接控制开发板获取RTC时钟并以数码管显示,无需搭建开发平台,快速完成基础应用的测试开发。但是文章排版较为随意,层次堆叠混乱,希望以后可以优化文章结构,可以带来更好的阅读体验