3668|5

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm32f769i评测之wifi接口的初步体验 [复制链接]

  stm32f769开发板集成了WiFi接口,这为开发IOT应用打下了基础,借助于板载的LCD显示屏和一些API接口可以玩一玩很多高端的功能。刚好在实验室找到了一块ESP8266模块,今天就初步体验一下一些基本的功能。首先把ESP8266模块插到WiFi接口上,接口距离屏幕很近,导致WiFi模块无法很好与底座很好的结合,需要先把屏幕卸下来,再将模块插上去。接好的模块如下图所示

  WiFi接好之后,首先是要配置一些参数。配置的方式一般有两种,一种是登录网址的方式,远端配置,就像配置路由器一样。还有一种方式是使用串口来配置,发送相关的AT指令来完成。但是ESP8266模块似乎无法登录网址来配置,搜到了它的使用手册,上面只给出了使用串口来配置的方法,所以只好借助于开发板上的串口了。

  开发板上并没有直接因此串口的接口,但是通过电路图可知,stlink电路部分是预留了虚拟串口的功能的,如下图所示

因此我们可以借助于这个虚拟串口与PC机的串口调试助手实现通信。这是官方预留的功能,不需要用户编写相关程序,安装最新的驱动就可以直接被识别,使用起来很方便。我的电脑上的stlink驱动比较老了,导致无法识别出串口,在请教了一位大神后,更新了驱动,虚拟串口就可以被识别了。不同的电脑识别出的串口号不一样,我电脑上识别出的串口如下图所示,
  
通过电路图可知,虚拟串口使用的是USART1,WIFI接口使用的是UART5,要想使用串口调试助手发送调试命令给ESP8266,必须让USART1与UART5建立起联系,当然硬件上是不可能了,因此只能从软件上着手了。它的逻辑框图如下图所示,

  搞清楚逻辑关系就开始编写程序,依然是使用CubeMx来完成程序的初始化工作,它的使用前面已经介绍过了,这里不再赘述。初始化工作完成后,主要是在main.c文件中添加要实现的功能。首先是完成串口接收不定长数据的功能,实现的方法也很多,这里是使用检测空闲中断(IDLE)的方法来实现。相关的概念不再展开描述,读者可以自行到网上查相关资料,网上各路大神都给出了详细的介绍。

  首先使能IDLE中断,这两句话的位置很重要,放错位置了并不能打开IDLE中断,使用cubemx编写程序,程序的位置基本是固定的,最好是在它指定的位置添加语句,这样你再重新生成程序文件时,添加的语句也不会被覆盖掉。
在while循环中实现虚拟串口与ESP8266信息的中转:
  
在发送完成回调函数中完成IDLE中断标志位的清除:

在中断处理程序中调用回调函数:



程序编译通过后下载到开发板中,接下来我们就可以通过串口调试助手控制WiFi模块了。
先来测试一下复位命令,发送命令AT+RST,得到的返回结果如下:

通过AT命令,也可以设置其他的参数,包括设置WiFi模式,名称和密码等,这里不再一一演示。命令均可以在手册山查到。


点击此处,查看STM32F769I开发板官方资源。

stm32f769_WIFI.rar

8.65 MB, 下载次数: 39

此帖出自stm32/stm8论坛

最新回复

你好,那个while()循环中的if(wifi_response&&wifi_len)         {             HAL_UART_Transmit_DMA(&huart1,wifi_rx_buffer,wifi_len);             wifi_response=0;             wifi_len=0;         } if后面的条件怎么变成真,然后让程序执行呢,希望能解答一下,谢谢!   详情 回复 发表于 2019-7-14 15:41

赞赏

2

查看全部赞赏

点赞 关注(1)
 

回复
举报

1158

帖子

2

TA的资源

版主

沙发
 
板子居然还带了一个Wifi接口!!!!666666
此帖出自stm32/stm8论坛
 
 

回复

16

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
此帖出自stm32/stm8论坛
 
 

回复

2774

帖子

8

TA的资源

版主

4
 
不错,开箱了!
此帖出自stm32/stm8论坛
 
 
 

回复

419

帖子

7

TA的资源

纯净的硅(初级)

5
 
不错的帖子,学习了
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 

你好,那个while()循环中的if(wifi_response&&wifi_len)
        {
            HAL_UART_Transmit_DMA(&huart1,wifi_rx_buffer,wifi_len);
            wifi_response=0;
            wifi_len=0;
        }

if后面的条件怎么变成真,然后让程序执行呢,希望能解答一下,谢谢!

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表