Art_Pi学习笔记:学习驱动wifi模块AP6212

电子说

1.3w人已加入

描述

开发环境:
RT-Thread Studio
开发板:
Art-Pi
OS版本:
4.0.3

笔记内容

参考官方例程的配置,软件包依赖于fal和easyflash

wifi模块

硬件勾选AP6212

wifi模块

保存配置退出,编译通过,下载即可,打开终端查看调试信息

通过终端调试WIFI

wifi模块

网卡设备已经注册成功。这时候就可以通过wifi提供的调试工具来试试网络是否已经联通。首先是查询当前可用热点信息wifi scan

wifi模块

然后是连接热点wifi join 热点名称 密码

wifi模块

然后可以试试ping一下百度

wifi模块

还可以看看当前wifi状态wifi status

wifi模块

遇到不清楚的可以wifi help查询一下指令

wifi模块

到此,意味着AP6212已经成功驱动起来了。但是这样只是第一步,因为板卡重启之后是不会自动重新连接的。

wifi模块

要实现保存配置信息,并且开机自动连接,需要参考官方例程art_pi_wifi

学习art_pi_wifi例程

通过rtt-studio新建一个art_pi_wifi的项目,然后编译下载到板卡上,先运行一下效果。

烧录固件之后第一次启动,wifi没有连接,因为此时并没有保存热点配置信息,不过“Auto Connect status”的状态是“Enable”。

通过wifi join指令连接热点,ping通baidu之后,使用reboot指令重启板卡。

板卡第二次启动之后,在wifi注册完毕之后,自动连接上了之前配置好的热点,不需要在用wifi join指令,直接ping就可以通baidu。

下面就来看看这个过程是如何实现的。

wifi模块

对比一下自建项目和官方项目的文件差异,主要的差别在于port目录下多了一个wifi_config.c的文件。虽然官方例程中还有一个ef_fal_port.c的文件,不过我是放在EasyFlash的包中了。下次还是要学习官方的做法,放在port目录下,这样可以有效防止更新工具包的时候把ef_fal_port.c文件给搞丢了。

wifi模块

学习wifi_config.c文件

在文件的最底下,有一个wlan_autoconnect_init的函数,先看看这个函数会在哪里被调用。查找一下原来是在main.c中被调用。也就是说在主线程上先配置了wifi自动重连的一些信息,然后又使能了自动重连。以此来实现重启之后wifi自动重新的功能。

wifi模块

下面来看看这个wlan_autoconnect_init函数到底做了什么配置

一开始是两个初始化函数

wifi模块

接下来的rt_wlan_cfg_set_ops函数位于wlan_cfg.c文件中,主要是调用了rt_wlan_cfg_init函数。这里应该是申请一段内存来保存配置信息吧。

wifi模块

那到底这些配置信息是保存在什么地方呢?注意rt_wlan_cfg_set_ops函数传入的参数是指针,指向哪里呢?

wifi模块

这三个是什么呢?

wifi模块

这三个函数的具体实现用到了两个函数ef_get_env_blob和ef_set_env_blob,这两个函数位于ef_env.c文件中

wifi模块

就清楚了,这里就是调用了easyflash的api来保存和获取环境变量。

移植到自己的项目中实验

既然清楚了整个处理流程,那就是将文件复制到自己的工程中,验证一下

wifi模块

编译通过,下载到板卡上验证,可以,自动重连了。

wifi模块

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分