完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
WiFi目前应用越来越广泛,串口WiFi对于单片机来说是一种比较方便的接入方式,一般使用一组AT命令来做为通信。 但是我一直也没找到一个很完美的驱动,然后花了很长时间和一个网友一起写了一套基于eBox的API驱动。欢迎搬砖。 eBox架构下的驱动将AT命令封装为用户及其方便使用的一套API。并撰写了基于API的几个标准网络应用,提供了标准应用的使用例程。降低用户编程难度。
使用eBox串口驱动为基础通信接口,配合系统提供的时基服务,这是系统的基本依赖关系。
(一)数据接口层是整个驱动中最复杂的部分: 1.AT命令发送:使用用户指定的串口发送AT格式消息 2.AT命令接收:使用一个rx_cmd_buf缓冲区作为AT命令接收缓冲区。在用户发送完一个AT命令后,系统会在tiMEOUT时间内等待AT命令的恢复,并根据回复的内容进行返回相应的结果。如果超时没有响应,则退出等待。 3.异步网络数据的接受:当模块配置好网络连接后,模块接受到网络数据后会第一时间将有效数据通过串口发送给主机。驱动会通过状态机的控制将数据合理的分配到一个环形缓冲区内。环形缓冲区的大小可以根据需求进行配置。 * 4.读取网络数据:用户只需在应用层调用相关的read方法即可将数据读出。返回值为其读取数据的长度。(此段为高级应用层部分,放到此处是为了让用户全面的认识数据发送和接受的基本过程) 注解:AT命令接收和网络数据接收分别建立了缓冲区进行处理。这样可以降低代码的复杂性。 (二)AT命令层 这一层主要是实现所有AT命令格式打包发送,用户只需将参数输入即可实现。 (三)API接口层 此层是为了进一步方便用户的使用,AT命令层由于函数名称比较晦涩,参数过于复杂,不适合用户直接使用。通过此层的打包组合实现特定功能。
API接口功能基本上已经可以满足用户的基本需求,但是用户需要去使用很多API来实现一个特定的功能,所以针对一些常用的网络协议,直接进行API打包组合产生一个特定网络功能,比如UDP,TCP客户端,TCP服务器等功能。 到了这一层用户基本上已经完全脱离了底层复杂性。可以放心的去调试自己的网络数据。
驱动好用不好用看看示例代码便可知晓,有不完善的地方欢迎大家提出修改建议。 1.基本测试,检测WiFi模块是否可用和其版本号 2.一个UDP的例程,发送一个UDP数据包。接收UDP数据并将其输出到串口上 3.TCP客户端 TCP的使用方法和UDP的方法几乎完全一样。详细内容请参考源代码。 到此我想大家应该已经基本了解了驱动的基本情况,可能有部分网友会觉得这么封装下来性能如何?我只能说,性能肯定不如你自己去写好一个AT命令用串口直接发出去高。更没有汇编效率高。但是会尽可能的优化部分高频率使用的函数以提高性能。 多说两句: eBox目前已经更新了很多功能,也有了更好的兼容性,很多网友给我了一些自己写的驱动。eBox的发展离不开大家的共同努力!希望大家多多支持! 工程文件
ebox_stm32_含wifi驱动.rar
(2.52 MB, 下载次数: 288
)
我的众筹项目地址:http://z.elecfans.com/30.html 期待大家一起来完善和发展eBox,打造国人自己的库,不仅仅支持STM32,更能支持飞思卡尔MCU、NXP MCU······ |
|
相关推荐
|
|
感谢版主的分享,这个非常棒!!谢谢
|
|
|
|
|
|
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 08:38 , Processed in 0.865794 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号