本篇体验板上的UART的控制,主要分3部分:硬件分析,软件实现,测试效果。
一、硬件分析
1 OLED显示屏
OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD),它是由美籍华裔教授邓青云在实验室中发现。OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光. 相较于市场上流行的液晶显示器(LCD) 有明显的优势,主要表现为:自主发光(不需要背光源),无视角问题(视角可达170°以上),重量轻,厚度薄,亮度高,发光效率高,响应速度快(是液晶的 1000倍),动态画面质量高,温度范围广(温度范围-40℃~80℃),低功耗,抗震能力强,制造成本低,可柔性显示。尤其适用于要求高亮度的仪表行 业,以及条件要求更高的军工产品。
当前比较常用的OLED调试模块,是晶门公司推出的驱动SSD1303/SSD1306单色OLED,它采用TAB封装。这种基于CMOS工艺的驱动IC集成了行、列驱动器、振荡器、对比度控制器和图形数据存储器(GDDRAM),可支持的最大分辨率为132×64,其中OLED屏底部132×16的点阵区域可以显示4色的局域色,并可编程实现64级灰度,当用于单色显示时,可编程控制256级对比度。SSD1303提供有6800,8080和SPI等用于与微控制器进行通信的显示接口。以下是本人的OLED显示模块实物图,为SPI接口。
2 板载接口
FireBLE开发板上用来连接OLED模块的接口如下图所示,它是一个“标准”的SPI接口类型,分别由QN9021蓝牙芯片的P0_3,P1_0,P1_1,P1_7控制。该4个引脚,分别对应的功能配置,可参见下表所示。
P0_3 |
OLED_RST 0: P0_3 (I/O):GPIO 1: CLKOUT0 (O):Clock output 0 2: T0_ECLK (I/O):Timer 0 external clock input or PWM output |
P1_1 |
OLED_DA 0: P1_1 (I/O):GPIO 1: DAT1 (I/O):In 4-wire mode, SPI1 output data. In 3-wire mode, data I/O 2: TXD1 (O):UART1 Tx data 3: T1_0 (I/O):Timer 1 input capture /clock or PWM output |
P1_0 |
OLED_RS 0: P1_0 (I/O):GPIO 1: DIN1 (I):SPI1 input data in 4-wire mode, invalid in 3-wire mode 2: RXD1 (I):UART1 Rx data 3: T2_ECLK (I/O):Timer 2 external clock input or PWM output |
P1_3 |
OLED_CLK 0: P1_3 (I/O):GPIO 1: SPICLK1 (I/O):SPI1 clock 2: RTS1 (O):UART1 RTS 3: CLKOUT1 (O):Clock output 1 |
虽然FireBLE提供了SPI接口库文件,但如果要根据OLED的时序图,来完成SPI接口驱动的编写,还是需要一定的时间和技术条件,好在在FireBLE提供的模块中,已经完成了针对OLED的SPI接口驱动,下面将其移植到自己的项目中。
二 软件实现
1 复制源码
2 添加宏定义
3 开启初始化
4 编写串口测试函数,该函数由main函数直接调用
void TestOLED(void) { SystemInit(); OLED_Init(); //初始化 OLED OLED_Clear(); //清屏 OLED OLED_ShowString(0,0,(uint8_t*)" www.ickey.cc "); OLED_ShowString(0,2,(uint8_t*)" FierBLE "); OLED_ShowString(0,4,(uint8_t*)" gjianw217"); OLED_ShowString(0,6,(uint8_t*)" 20151005"); while(1) { // add TODO; } }
三、测试效果