收到BearPi-Pico H3863星闪开发板,首先感谢电子发烧友与小熊派提供的平台与开发板。开发板有两块,可以用来做星闪方面的功能与性能评估。这里搭配一块ssd1306 oled,做这款开发板的BLE、SLE、WIFI方面的功能、性能开发与评估。
一.开发环境搭建与点灯
1.了解开发板
这款开发板主控使用海思SOC WS63(又称Hi3863),RISC-V 高性能 32bit CPU,片内资源606KB SRAM,300KB ROM,4MB Flash 可谓很丰富,集成了2.4GHz WiFI6、BLE、SLE,且外设接口有I2C、PWM、GPIO、ADC、SPI/QSPI、UART、I2S等,资源非常丰富。
开发板实物如下:
2.开发环境搭建
开发环境支持Windows和Ubuntu下搭建,这里选择Windows下搭建,下载资源包。
(1)安装环境安装包。主要是安装HiSpark Studio依赖的python环境。
(2)安装HiSpark Studio IDE
(3)拉取SDK到本地。git clone https://gitee.com/bearpi/bearpi-pico_h3863.git
(4)打开 HiSpark Studio IDE,创建工程,配置如下
创建成功后如下
3.点灯工程准备
(1)选择案例。这里选择blinky,这里将配置参数宏改为1000ms间隔。
(2)闪灯代码。这里添加了些日志,代码如下。准备好后点击全编译。
(3)编译与烧录
烧录分为在线烧录和离线烧录。在线烧录在IDE配置如下,编译完成后IDE里按钮下载,复位下开发板,这里就开始烧录进开发板。
离线烧录使用BurnTool_H3863,配置如下。在点connect后复位下开发板,程序进行烧录。
固件烧录完成后,复位开发板,日志如下,可以看到蓝色LED指示灯1s间隔闪烁。日志如下
至此,实现开发环境搭建与例程程序烧录,整个开发流程跑通,开发板按预期正常运行。
二.创建自建工程,点亮OLED
本篇讲述创建自己的工程,并点亮ssd1306驱动的oled显示。
1.创建工程
创建自己的工程主要是脚本文件的组织编写添加,这里已经过编译测试的工程目录文件如下图,后面展开说明
(1)在application\\samples\\CMakeLists.txt修改添加如下:
(2)在application\\samples\\Kconfig修改如下
(3)在samples目录下创建user_app目录文件夹,并创建application\\samples\\user_app\\CMakeLists.txt和application\\samples\\user_app\\Kconfig脚本文件,内容如下图所示.
(4)在user_app文件目录下创建project目录。这里移植了application\\samples\\peripheral\\i2c\\下工程文件,代码放在另一部分说明。这里重点脚本文件需要注意匹配,有application\\samples\\user_app\\project\\CMakeLists.txt,application\\samples\\user_app\\project\\Kconfig,application\\samples\\user_app\\project\\app_main.code-workspace这三个脚本文件,具体修改见下图
(5)这时,在HiSpark Studio IDE里点“系统配置”按钮,在Application下可以看到自建的工程编译项
这里使能需要用到如下,其包含I2C配置。
至此,自建工程脚本框架基本构建完成,后续工程扩展进行相应添加修改即可。
2.点亮OLED
(1)这里使用到SSD1306驱动oled,像素128*64。硬件连接开发板如下:
开发板 oled模块
3.3V VCC
GND GND
TXD(GPIO16) SDA
RXD(GPIO15) SCL
(2)上面项第(4)小节也讲到移植官方例程源代码。这里将源文件布局进行调整,外设驱动及功能部分代码放在app_peripheral.c源文件.代码修改如下,将显示部分增加了一行。关于源文件路径上面脚本里已经有所体现,在自建工程时留意检查是否有遗漏等。
(3)编译烧录,可以看到oled按设计显示相应字符串。至此实现了自建工程与点亮oled显示功能。
三.BLE串口透传
本篇讲述H3863星闪开发板所具备的蓝牙功能,蓝牙串口服务端、客户端连接,通过串口工具发送数据,BLE server和client之间进行无线数据收发
1.代码准备
(1)编译烧录ble_uart_client工程,配置及涉及到工程源文件如下:
(2)编译烧录ble_uart_server工程,配置及涉及到工程源文件如下:
2.代码解读
●ble_uart.c通过宏创建ble_uart_client_task
/ble_uart_server_task
任务,在任务均注册串口接收回调,任务里消息队列接收,由串口发送的数据,消息队列里收到的数据通过蓝牙发送。
●在ble_uart_client文件路径下,可以看到ble_uart_client.c蓝牙串口客户端配置及ble_uart_client_scan.c蓝牙客户端扫描设置
●在ble_uart_server文件路径下,可以看到ble_uart_server_adv.c蓝牙串口服务端创建服务UUID,uart收发特性及蓝牙服务事件回调、配对等;ble_uart_server_adv.c蓝牙服务端广播配置,启动等
3.测验
(1)单独上电ble_uart_server端,可以看到服务端蓝牙广播与上电日志如下
(2)单独上电ble_uart_client端,可以看到客户端蓝牙上电启动扫描日志如下
(3)先上电ble_uart_server端,再上电ble_uart_client端,可以看到二者建立连接如下
(4)在客户端/服务端串口发送字符,另一端均可接收到,并串口打印出来,日志如下
至此,实现蓝牙串口客户端与服务端通讯功能。
四.SLE串口透传
上一篇讲了H3863星闪开发板可以作为蓝牙开发板使用,本篇则讲述H3863方案特别具有的星闪通讯功能,这也是华为另辟蹊径开发的近场无线通讯技术。官方宣传星闪SLE较蓝牙具备通讯速率快,通讯距离远,时延小,功耗低等特点。这里以官方例程sle_uart作为切入点。
1.代码准备与解读
(1)配置与选择
这里代码配置烧录分为SLE服务端、客户端,与上篇代码结构基本相像,配置上选择Application->Enable Sample->Enable the Sample of products->Support SLE UART sample->Select sle uart type ,这里可选 Enable SLE UART Service sample/Enable SLE UART Client sample,对应SLE串口服务端/客户端。
(2)SLE通讯射频有别与BLE,常用的蓝牙查看工具如nRF Connect对SLE不可视了,目前咱没看到关于SLE调试查看的APP工具,如果与手机射频不兼容估计这APP工具也做不了。这里就主要看代码了解SLE,通过代码及日志了解SLE通讯情况
●sle_uart.c通过宏CONFIG_SAMPLE_SUPPORT_SLE_UART_SERVER
/CONFIG_SAMPLE_SUPPORT_SLE_UART_CLIENT
编译区分SLE服务端/客户端,以sle_uart_entry
为入口,在任务里初始创建消息队列、串口初始化及注册回调、SLE服务端/客户端初始化。在sle_uart_server_task
服务端任务主体接收串口,代码里一些API函数完全封装也没有.h文件里给参数功能描述下(如sle_start_announce等
),显得比较生硬、封闭了。再就是回调比较多,底层是封装的比较严密,这部分往下查可以看到些注释说明,花些时间精力了解注册流程及回调功能,通过代码与调试测验,以便疏通了解sle的使用。
●sle_uart_server_adv.c/application\\samples\\products\\sle_uart\\sle_uart_server\\sle_uart_server.c定义了服务端广播与建立服务功能的函数,功能架构上与蓝牙的差不太多。
●sle_uart_client.c包含了客户端sle 扫描功能及建立连接通讯等功能。
2.测验
(1)SLE uart Service与SLE uart Client各自上电初始化日志.
(2)SLE uart Service与SLE uart Client先后上电,可看到连接,日志如下
(3)通过串口在SLE uart Service与SLE uart Client端发送数据,可通过SLE通讯到另一端并串口打印出,日志如下
通过试验,可以了解到SLE的通讯功能。
更多回帖