这次抽出时间,继续接着上次的实验来做(
【Nucleo心得】+脉搏心率监测实验)
手上有一个淘宝上买到的0.96寸OLED模块,分辨率128*64,主控芯片为SSD1306。模块虽然有点小,但是用来显示一些简单的内容是足够了,而且oled屏幕本身没有背光,耗电相对较小,同时在阳光也能看清,这种有点使其适合用在小型电池供电设备,比如最近很火的可穿戴式设备,很多手环都是用的OLED。
该模块只对外给出了6个引脚:
1. D/C 数据/命令。
2. RST 复位。
3. SDA 数据。
4. SCL 时钟管脚。
5. VDD +3.3V 电源供电
6. GND 接地
本身模块是使用SPI总线来控制,但是模块内部已经将CS引脚接低了,也就是说这屏幕一直处于使能状态,所以基本上只需要SPI的两跟线MOSI,SCK就够了。
硬件上没有太多可说的,关键是驱动如何写。这个时候又到了发挥mbed平台强大力量的时刻了
首先在MBED平台IDE软件中建立工程文件,然后在库里寻找一下有没有SSD1306的驱动,结果还真有!看下图:
第一个Adafruit_GFX就是驱动,而且看来加载的人还挺多。我们将其添加到工程中,然后看一下它的主页说明:
可以看到这个驱动也是从arduino平台移植过来的,而且使用的是硬件SPI方式,下面还有示例,可以供我们模仿。刚开始我直接模仿示例来驱动OLED模块,的那是始终存在各种问题,后来发现是硬件上的问题。由于我是用的杜邦线来连接的开发板和OLED模块,线较长,干扰较大,数据传输总是存在问题。后来逼不得已将OLED模块直接插在了Nucleo板子上(板子改造了一下),同时将驱动程序做了修改。现在的驱动改为IO模拟SPI驱动方式,可以任意选择4个IO就可以驱动此屏幕,这点与原始驱动不同了,要注意。
还有一点要注意的是,Adafruit_GFX驱动的功能挺强大的,比如更改字号,画点,画线等,但是必须加上"WANT_ABSTRACTS"这个宏定义进去,不然这些功能是不可使用的哦。
最后附上显示的图片:
程序是在上一个帖子(心率监测)的基础上,把OLED的显示功能加了进去,由于OLED的驱动程序有所更改,所以把整个工程上传(可用KEIL打开),方便大家参考。
Nucleo_pulsesensor_oled_uvision_nucleo_l053r8.zip
(662.23 KB, 下载次数: 224, 售价: 1 分芯积分)
下一个目标,就是实现心率数据的蓝牙无线传输,呵呵,期待蓝牙板子赶快到手啊!