嵌入式系统开发 ——基于分布式系统OpenHarmony 课件 08-轻量系统应用开发;09-小型系统应用开发.pptx
基于OpenHarmony的嵌入式开发
第八章轻量系统应用开发;[8.1.1]项目的硬件组成
Hi3861SoC模块:Hi-12F-Kit
显示屏幕:OLED128×64(I2C接口)
空气质量检测传感器
Hi3861内部没有包含温湿度、PM2.5等传感器,需要使用外部传感器
PTQS1005多合一气体传感器模组,如下特性:
①激光散射原理测量颗粒物浓度;
②半导体原理测量TVOC(TotalVolatileOrganicCompounds,有机气态物质);
③红外非分光原理测量二氧化碳;
④内部集成温湿度一体检测芯片;
⑤多种传感器统一风道,优化空间和反应速度。;[8.1.1]项目的硬件组成
空气质量检测传感器PTQS1005;[8.1.1]项目的硬件组成
空气质量检测传感器PTQS1005;[8.1.2]项目实现过程
①创建项目,同7.1节,略
②OLED的功能支持:7.4.1小节示例的功能过于简单
使用功能更丰富的第三方库,扩展OLED128×64的显示特性
U8g2:Libraryformonochromedisplays,version2,
U8g2isamonochromegraphicslibraryforembeddeddevices.U8g2supportsmonochromeOLEDsandLCDs,whichincludethefollowingcontrollers:SSD1305,SSD1306……
Includesallgraphicsprocedures(line/box/circledraw).
Supportsmanyfonts.(Almost)norestrictiononthefontheight.
Requiressomememoryinthemicrocontrollertorenderthedisplay.
下载U8g2,解压缩到项目目录下,将文件夹名称更改为u8g2即可
本示例实际使用的是纯文本的U8x8库(包含在U8g2中);[8.1.2]项目实现过程
②OLED的功能支持:在BUILD.gn中增加U8g2支持;[8.1.2]项目实现过程
②OLED的功能支持:工程源码文件内容
U8g2重点:实现U8g2(U8x8)中的相关功能函数(Setup);[8.1.2]项目实现过程
②OLED的功能支持:工程源码文件内容
byte_cb:回调函数(u8x8_byte_hw_i2c):switch-case
U8X8_MSG_BYTE_INIT:用来初始化GPIO
U8X8_MSG_BYTE_SEND:用来发送数据(复制数据到Buffer)
U8X8_MSG_BYTE_SET_DC:在I2C中不使用(SPI:Data/Cmd)
U8X8_MSG_BYTE_START_TRANSFER:开始传输数据
U8X8_MSG_BYTE_END_TRANSFER:结束传输数据
gpio_and_delay_cb:回调函数(u8x8_gpio_and_delay)
U8X8_MSG_GPIO_AND_DELAY_INIT:初始化IO,在BYTE_INIT已完成
U8X8_MSG_DELAY_NANO:在I2C中不使用,延时1纳秒
U8X8_MSG_DELAY_MILLI:延时1微秒
;[8.1.2]项目实现过程
②OLED的功能支持:工程源码文件内容:两个回调函数(部分源码)
;[8.1.2]项目实现过程
②OLED的功能支持:工程源码文件内容:两个回调函数(部分源码)
;[8.1.2]项目实现过程
③Hi3861与PTQS1005的通信,选择使用UART:9600,8N1
PTQS1005有很多数据,可以选择性地读取,指令与格式如下:
例如:0x42,0x4D,0xAB,0x00,0x00,0x01,0x3A
;[8.1.2]项目实现过程
③Hi3861与PTQS1005的通信,选择使用UART:9600,8N1
使用读取一般数据方式读取PTQS1005
;[8.1.2]项目实现过程
③Hi3861与PTQS1005的通信,选择使用UART:9600,8N1
首先,配置Hi3861的UART1接口,9600,8N1模式,参考第七章
其次,完成发送指令的函数:读取一般数据SendCommand()
;[8.1.2]项目实现过程
③Hi3861与PTQS1005的通信,选择使用UART:9600,8N1
再次,接收数据、解析数据;[8.1.2]项目实现过程