小白入门设备开发的芯路历程
HarmonyOS Connect设备开发,我相信很多新开发者都被这些问题所困扰,面对各种开发板不知道如何选择?芯片、模块、开发板都很困惑?如何使用代码来控制开发板?在这个问题上,我们将逐一为您回答。
芯片是将电路集中在半导体晶圆表面的一种小型化方法,可以通过系统指令控制端口设备。如果将系统比作设备的灵魂,那么芯片就是设备的心脏,芯片制造商是基于OpenHarmony的Linux内核、LiteOS-A内核及LiteOS-M内核,面向 HarmonyOS Connect 业务提供不同的芯片适配方案,如图1所示:
图1 芯片适配方案
在HarmonyOS Connect在设备开发过程中,通过 HarmonyOS Connect 认证芯片和模块可以帮助开发人员缩短设备开发和认证周期,如图2所示,在官方网站上列出了几个认证芯片:
图2 已认证的芯片
不同类型的芯片适用于不同领域的产品。因此,我们可以得出结论,在设备开发之前,我们应该明确开发的设备类型,选择合适的芯片。
在设备开发过程中,芯片、模块多的是芯片、模块和开发板。我们应该如何选择它们之间的区别和联系?下面将为您回答。
如图3所示,是高度集成的2.4GHz SoC Wi-Fi的Hi3861V100芯片。这个只有指甲盖大小的空间集成了IEEE 802.11b/g/n基带,功率放大器PA、低噪声放大器LNA、RF balun、天线开关、电源管理等模块。
图3 Hi3861V100芯片
由于芯片尺寸小,管脚没有直接引出,天线、电容、电感和MCU都需要借助外部电路去布置。如果开发者想利用芯片实现Wi-Fi功能需要设计芯片的天线部分电路并增加Flash该实现过程的研发成本较高,芯片用于保存数据。到目前为止,有以下模块。
很多模组厂商针对各类芯片设计出各式各样的模组。如图4所示,是的 Hi3861RNIV与100模块相比Hi3861V该模块还集成了电源电路,Flash芯片、天线电路等,让开发者直接忽略了上节的芯片Wi-Fi功能实现部分大大降低Wi-Fi开发难度。模块还能满足用户对芯片二次开发的需求。
图4 Hi3861RNIV100模组
模块是面向产品的,模块可以在测试和验证后直接嵌入产品中。此外,一个芯片可以通过控制模块制造多个模块和相同的芯片Flash尺寸、天线材料、模块尺寸适合各种智能产品。那么如何快速测试和验证模块的功能呢?这有以下开发板。
如图5所示,搭载Hi3861RNIV100模块开发板(以下简称Hi3861开发板)提供了包括标准在内的更丰富的外围资源E53接口、NFC标签、USB Type-C、复位按钮、用户按钮、射频天线、串口转换电路等。Hi3861RNIV快速测试验证100模块的功能。
图5 Hi3861开发板
开发板面向测试学习。在提供测试和验证模块性能的同时,它还可以帮助新开发者快速学习和理解模块。因此,开发板可以看作是从模块到产品的中间临时变量,如图6所示:
图6 芯片、模块和开发板的区别
综上所述,一个芯片可以制作多个模块,一个模块可以嵌入不同的开发板。这就是为什么我们经常看到它是基于Hi3861开发板的原因。
通过以上介绍,相信大家已经了解了芯片、模块和开发板之间的关系。让我们来看看如何选择开发板。
如第一章所述,在选择开发板之前,应确定待开发设备的类型,并选择合适的芯片。
在选择模块时,应确定待开发设备的功能,并充分考虑功能、成本、尺寸等因素。模块功能越多,引脚越多,模块体积越大,成本越高。例如,如果只需要开发设备Wi-Fi选择功能Wi-Fi模块,如果需要开发的设备Wi-Fi 可选择蓝牙功能Combo模组。
模块确认后,我们如何选择开发板?根据不同的应用场景,不同的开发板套件提供不同的扩展板。如图7所示,通过E扩展53个接口,开发智能加湿器、智能台灯、智能安全、智能烟雾等案例,使案例开发更加灵活方便。
图7 典型的扩展板
因此,在选择开发板时,首先要确定待开发设备的应用场景,然后根据各发板套件提供的扩展板选择最合适的开发板。
我相信你选择了一个适合你的开发板。现在让我们看看如何通过代码控制它。如图8所示,是的Hi3861开发板搭载E53标准接口,通过OpenHarmony提供丰富的外设操作能力E控制53个接口,实现设备开发。
图8 搭载的E53接口
本文介绍了如何通过调用来调用OpenHarmony的NDK接口在Hi在3861开发板上编写创作Wi-Fi热点程序。
完成Wi-Fi以下主要用于热点创建API。
完成Wi-Fi创建热点需要以下步骤。
(1)通过 RegisterWifiEvent 接口向系统注册热点状态变更事件,STA网站加入事件,STA相关回调函数如下:
代码如下:
//注册wifi事件的回调函数 g_wifiEventHandler.OnHotspotStaJoin = OnHotspotStaJoinHandler; g_wifiEventHandler.OnHotspotStaLeave = OnHotspotStaLeaveHandler; g_wifiEventHandler.OnHotspotStateChanged = OnHotspotStateChangedHandler; error = RegisterWifiEvent(&g_wifiEventHandler); if (error != WIFI_SUCCESS) { printf("RegisterWifiEvent failed, error = %d.\r\n",error); return -1; } printf("RegisterWifiEvent succeed!\r\n");
复制
(2)调用 SetHotspotConfig 设置指定的热点配置。代码如下:
///设置指定的热点配置 HotspotConfig config = {0}; strcpy(config.ssid, AP_SSID); strcpy(config.preSharedKey, AP_PSK); config.securityType = WIFI_SEC_TYPE_PSK; config.band = HOTSPOT_BAND_TYPE_2G; config.channelNum = 7; error = SetHotspotConfig(&config); if (error != WIFI_SUCCESS) { printf("SetHotspotConfig failed, error = %d.\r\n", error); return -1; } printf("SetHotspotConfig succeed!\r\n");
复制
(3)调用 EnableHotspot 接口,使能Wi-Fi AP 模式。代码如下:
//启动wifi热点模式 error = EnableHotspot(); if (error != WIFI_SUCCESS) { printf("EnableHotspot failed, error = %d.\r\n", error); return -1; } printf("EnableHotspot succeed!\r\n");
复制
(4)调用 IsHotspotActive 口,检查AP热点模式是否启用,代码如下:
//检查热点模式是否使能
if (IsHotspotActive() == WIFI_HOTSPOT_NOT_ACTIVE)
{
printf("Wifi station is not actived.\r\n");
return -1;
}
printf("Wifi station is actived!\r\n");
复制
(5)调用 netifapi_netif_set_addr 函数设置网卡信息,并调用 netifapi_dhcps_start 函数启动dhcp服务。代码如下:
//启动dhcp
g_lwip_netif = netifapi_netif_find("ap0");
if (g_lwip_netif)
{
ip4_addr_t bp_gw;
ip4_addr_t bp_ipaddr;
ip4_addr_t bp_netmask;
IP4_ADDR(&bp_gw, 192, 168, 1, 1); /* input your gateway for example: 192.168.1.1 */
IP4_ADDR(&bp_ipaddr, 192, 168, 1, 1); /* input your IP for example: 192.168.1.1 */
IP4_ADDR(&bp_netmask, 255, 255, 255, 0); /* input your netmask for example: 255.255.255.0 */
err_t ret = netifapi_netif_set_addr(g_lwip_netif, &bp_ipaddr, &bp_netmask, &bp_gw);
if(ret != ERR_OK)
{
printf("netifapi_netif_set_addr failed, error = %d.\r\n", ret);
return -1;
}
printf("netifapi_netif_set_addr succeed!\r\n");
ret = netifapi_dhcps_start(g_lwip_netif, 0, 0);
if(ret != ERR_OK)
{
printf("netifapi_dhcp_start failed, error = %d.\r\n", ret);
return -1;
}
printf("netifapi_dhcps_start succeed!\r\n");
复制
以上就是本期全部内容,通过本文的介绍,你心中的疑惑是不是已经解开了?如果是,那么恭喜你,你已经入门HarmonyOS Connect设备开发了,我们期待你的加入。
感谢鸿蒙官网:华为开发者博客