hi3861v100、hi3861lv100 通过api(application programming interface)面向开发者提供wi-fi功能的开发和应用接口,包括芯片初始化、资源配置、station创建和配置、扫描、关联以及去关联、状态查询等一系列功能, 框架结构如图1-1所示。
各功能模块说明如下:
app应用开发层:用户基于api接口的二次开发。
example示例:sdk提供的功能开发示例。
api接口:提供基于sdk的通用接口。
lwip协议栈:网络协议栈。
wpa supplicant(含hostapd):wi-fi管理模块。
wi-fi驱动:802.11协议实现模块。
platform平台:提供soc系统板级支持包(包括:芯片和外围设备驱动、操作系统以及系统管理)
1、wi-fi驱动加载与卸载
1.1 概述
在完成芯片上电后,驱动加载实现对芯片寄存器的初始配置、校准参数读取与写入、软件资源的申请和配置;驱动卸载实现软件资源的释放。
1.2 开发流程
使用场景:wi-fi驱动初始化为wi-fi功能提供基本资源配置和芯片初始化,是wi-fi功能实现的第一步。当需要配置wi-fi功能时,必须先完成驱动的初始化,wi-fi功能使用完成后,可以使用去初始化完成资源释放也可以使用软复位来完成资源释放。
功能:wi-fi驱动加载与卸载提供的接口如表2-1所示
使用驱动加载与卸载的典型流程:
步骤1:调用hi_wifi_init, 完成wi-fi驱动初始化。
步骤2:参考“3 sta功能”或“4 softap功能”配置wi-fi功能。
步骤3:调用hi_wifi_deinit,完成wi-fi驱动去初始化。
----
结束
返回值如表2-2所示
1.3 注意事项
驱动资源配置不支持运行中修改,须先卸载驱动再进行修改,修改后重新初始化。
驱动为了保证wi-fi业务的连续性,会在启动时根据vap数量和用户数量预申请内存,其中1个vap资源预申请约5k内存,1个用户资源预申请约7k内存,请根据场景需要合理配置初始化的资源数。目前仅配网时需要用到softap和sta共存,一般建议配置为2个vap和2个用户;如果可以实现配网时先关闭softap再启动sta去关联,vap和用户数量均可配置为1。
1.4 编程实例
示例1:基于liteos的app_main函数,在系统初始化时自动完成wi-fi驱动的加载,此加载方式无须进行卸载开发,系统reboot时自动完成驱动卸载和加载。
示例2:基于shell命令,在系统启动后,通过手动下发shell命令完成wi-fi驱动的加载和卸载。
2、sta功能
2.1 概述
sta功能即non-ap station功能,实现驱动sta vap的创建、扫描、关联以及dhcp,完成通信链路的建立。开发sta功能前,须完成驱动加载。
2.2 开发流程
使用场景:当需要接入某个网络并与该网络通信时,需要启动sta功能。
功能:驱动sta功能提供的接口,如表3-1所示。
sta功能开发的典型流程:
步骤1:调用hi_wifi_sta_start, 启动sta。
步骤2:调用hi_wifi_set_bandwidth, 设置sta带宽模式,20m带宽可不用配置。
步骤3:(可选,根据需要配置)调用hi_wifi_sta_set_reconnect_policy, 设置自动重连。
步骤4:调用hi_wifi_sta_scan(或调用hi_wifi_sta_advance_scan;执行带参数扫描),触发sta扫描。
步骤5:调用hi_wifi_sta_scan_results,获取扫描结果。
步骤6:根据接入网络需求,自定义筛选扫描结果,调用hi_wifi_sta_connect, 进行连接。
步骤7:调用hi_wifi_sta_get_connect_info,查询wi-fi连接状态。
步骤8:连接成功后,调用netifapi_dhcp_start,启动dhcp客户端,获取ip地址。
步骤9:调用hi_wifi_sta_disconncet,离开当前连接的网络。
步骤10:调用netifapi_dhcps_stop,停止dhcp客户端。
步骤11:调用hi_wifi_sta_stop,关闭sta。
---结束
返回值如表3-2所示
2.3 注意事项
sta支持5m/1 om窄带模式,需要时可调用接口设置,不调用则默认启动20m带宽sta。
扫描为非阻塞式接口,扫描命令下发成功后需要延迟一段时间后再获取扫描结果,全信道扫描延迟时间建议设置为1s。
可通过指定ssid、bssid、信道等带指定参数的扫描,实现更精准地扫描,缩短扫描时间。
已知待连接网络的参数时,可省去扫描过程,直接发起连接。
连接为非阻塞式接口,连接命令下发成功后,需要通过命令获取连接状态。
注册事件回调函数后,wi-fi相关的事件会通过该回调上报用户,用户可根据事件执行后续动作。
不支持重复启动sta,再次启动sta时须先执行关闭sta。
关闭sta步骤为可选,设备所处的网络地位不变,不需要执行关闭sta。
2.4 编程实例
示例:实现sta功能启动、扫描、关联以及获取ip地址。
3、softap功能
3.1 概述
softap功能提供网络接入点供其他sta接入,并对接入的sta提供dhcp server服务。
3.2 开发流程
使用场景:当需要创建一个网络接入点,供其他设备接入并共享网络内的数据时,需要使用softap功能。
功能:提供的接口如表4-1所示。
softap功能开发的典型流程:
步骤1:配置softap的网络参数:
-调用hi_wifi_softap_set_protocol_mode,设置协议模式。
-调用hi_wifi_softap_set_beacon_period,设置beacon周期。
-调用hi_wifi_softap_ set_dtim_period,设置dtim周期。
步骤2:调用hi_wifi_softap_start,启动softap。
步骤3:调用hi_wifi_set_bandwidth,设置softap的带宽,20m带宽可不用配置。
步骤4:调用netifapi_netif_set_addr,配置dhcp服务器。
步骤5:调用netifapi_dhcps_start,启动dhcp服务器。
步骤6:调用netifapi_dhcps_stop,停止dhcp服务器。
步骤7:调用hi_wifi_softap_stop,关闭softap。
--结束
返回值如表4-2所示
3.3 注意事项
softap的网络参数为可选配置,无特殊要求均可使用初始默认值。
softap支持5m/1 0m窄带模式,需要时可调用接口设置,不调用则默认启动20m带宽softap。
softap的网络参数在关闭softap时不会重置,会继续沿用_上一次配置,重启单板可恢复至初始默认值。
softap模式下最大关联用户数限制:
-小于初始化时配置的用户数量。
-最大关联用户不超过2个。
3.4 编程实例
示例:实现将softap功能的beacon周期配置为200ms,并启动softap,最后将dhcp服务器的ip地址配置为192.168.43.1。
除此之外,wi-fi软件应用创建还包括了混杂模式、csi数据采集、sta&softap共存、wi-fi&蓝牙共存、软件重传等诸多无线网实用功能开发。想详细了解学习的童鞋,可以扫码加入我们的鸿蒙技术交流群,免费领取领取完整的基于harmonyos hi3861v100开发板wi-fi模组应用开发文档。另外还给大家准备了超级详细的hi3861v100硬件&软件开发文档资料,也一并免费送给大家学习。
电源设计中电容到底有多重要
二极管知识:串联防反接原理 并联防反接原理
设计管理系统消除了ASIC捷径风险
数控机床电气系统故障常用诊断方法
如何用vcs+verdi仿真Verilog文件并查看波形呢?
Hi3861V100创建Wi-Fi驱动应用的步骤
机床的轴越多越好吗,机床五轴该如何选择
TF-A的不同启动阶段有哪些
Arduino的碰撞检测警告系统的工作方式
网易Java程序员两轮面试问题经验
电阻涨价80% 国巨电子回应市场供需决定
基于KY32MT028主控的高压工业风扇PCBA方案
基于网络存储技术实现地震数据处理解释一体化的布诸和管理应用
红米pro2最新消息:红米Pro2来袭,这部手机当首当其冲,哪些手机会受波及?
集线器的局域网标准
盘点2022年半导体行业:国产化路在何方
扬尘监测设备可以实时监测扬尘
11月自动驾驶行业发展取得了哪些新成果?
LED手电筒DIY自制
关于电压控制晶体振荡器的介绍