894|7

169

帖子

1

TA的资源

纯净的硅(初级)

楼主
 

【STM32H7S78-DK】⑦连接WIFI获取时间(基于ESP8266) [复制链接]

看到标题,你可能要纳闷了,为什么要基于ESP8266?

STM32H7S78-DK不是自到了WIFI模块吗?

就是下图中左边的MXCHIP EWM3080(通过SPI通信与STM32H7S78-DK)

 

 

 

 

 

 

然而,问题来了。

首先官方例程或BSP,并没有这个wifi模块的例程(或者是我没找到?)

其次,对于这个模块的信息只有官网有一些,ST官方提到用之前要升级固件。

https://www.st.com.cn/zh/development-tools/x-wifi-emw3080b.html#

 

 

然而下载下来是这样的:

 

 

 

 

 

也就是B-U585I-IOT02ASTM32H573I-DK的固件。下面两个是通用固件?

或者有大神可以移植到STM32H7S78-DK?

 

B-U585I-IOT02A的官方例程

mx_wifi.zip (114.91 KB, 下载次数: 0)

 

 

尝试用官方网站的UART升级办法,得到的是串口错误信息。

 

尝试到最后只能放弃。

 

只能选择ESP8266,

 

眼尖的你可能已经看到了,扩展板上有ESP-01插孔。

淘宝买了个ESP8266模块(5元包邮)

 

结果问题又来了。

 

 

 

 

看到了吗?STMOD+(CN3) UART7的RXT和TXD引脚跟SPI4是共用端口,而且是没有焊接的(DNF,DNP是英文(Do Not Populate)的意思,译为“不焊接”。)

 

那就干脆,把SB1、SB5焊接起来,测试果然OK。

 

 

 

 

回到ESP8266.

3V3 RST EN直接短接,要保持高电平。

 

 

 

剩下的就是程序来完成配置了(通过AT指令)。

 

 

本程序的基本思路是。

 

通过扩展版USRT7 TXD——>AT指令配置并获取时间——>USRT7 RXD 获取数据——>进行数据加工,单独摘出时间——>虚拟串口USRT4 TXD——>PC 串口助手显示时间(也可以在上一步直接通过开发板的LCD显示时间)

 

关于串口部分的测试,详见前贴,本例要同时开启UART4(——>虚拟串口)和UART7(——>ESP8266 WIFI)

https://bbs.eeworld.com.cn/thread-1295306-1-1.html

其中UART7要开启中断:

 

 

 

 

关于ESP8266的使用方法,以及时间获取方式,网上有很多资料可以参考。

#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stm32h7rsxx_hal_uart.h"

unsigned char UART_BUF1[] = "AT\r\n";             //AT指令确认
unsigned char UART_BUF2[] = "AT+CWMODE=1\r\n";    //STA模式
unsigned char UART_BUF3[] = "AT+CWJAP=\"Xiaomi_D7CB\",\"密码\"\r\n";  //连接wifi
unsigned char UART_BUF4[] = "AT+CIPSTART=\"TCP\",\"tianqiapi.com\",80\r\n";
unsigned char UART_BUF5[] = "AT+CIPSEND=5\r\n";
unsigned char UART_BUF6[] = "GET\r\n";
unsigned char UART_BUF7[] = "AT+CIPCLOSE\r\n";

unsigned char UART_BUF0[300] ;
unsigned char UART_BUF00[25] ;

 

核心的AT代码是:

unsigned char UART_BUF4[] = "AT+CIPSTART=\"TCP\",\"tianqiapi.com\",80\r\n";

unsigned char UART_BUF5[] = "AT+CIPSEND=5\r\n";

unsigned char UART_BUF6[] = "GET\r\n";

 

 

main函数代码:

int main(void)
{

  MPU_Config();
  SystemCoreClockUpdate();
  HAL_Init();

  MX_GPIO_Init();
  MX_UART7_Init();
  MX_UART4_Init();

  HAL_UART_Receive_IT(&huart7, UART_BUF0,sizeof(UART_BUF0));

 
  HAL_UART_Transmit(&huart7,UART_BUF1, sizeof(UART_BUF1),1000);
  HAL_Delay(1000);
  HAL_UART_Transmit(&huart7,UART_BUF2, sizeof(UART_BUF2),1000);
  HAL_Delay(1000);
  HAL_UART_Transmit(&huart7,UART_BUF3, sizeof(UART_BUF3),1000);
  HAL_Delay(1000);

  HAL_UART_Transmit(&huart7,UART_BUF4, sizeof(UART_BUF4),1000);
  HAL_Delay(100);
  HAL_UART_Transmit(&huart7,UART_BUF5, sizeof(UART_BUF5),1000);
  HAL_Delay(100);
  HAL_UART_Transmit(&huart7,UART_BUF6, sizeof(UART_BUF6),1000);
  HAL_Delay(100);
  HAL_UART_Transmit(&huart7,UART_BUF7, sizeof(UART_BUF7),1000);
  HAL_Delay(1000);



  for(int i=175;i<200;i++)
  {

	  UART_BUF00[i-175]=UART_BUF0[i];
  }


  HAL_UART_Transmit(&huart4,UART_BUF00, sizeof(UART_BUF00),1000);


  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

		//HAL_Delay(1000);
		//HAL_UART_Transmit(&huart7,UART_BUF1, sizeof(UART_BUF1),1000);
  }
  /* USER CODE END 3 */
}

 

 

 

 

此部分就是进行数据加工,单独摘出时间

for(int i=175;i<200;i++)

{

 

UART_BUF00[i-175]=UART_BUF0;

}

 

 

UART7串口中断函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{

	HAL_UART_Receive_IT(&huart7, UART_BUF0,sizeof(UART_BUF0));
}

 

 

 

 

运行结果如图,时间与北京时间有8小时差别(时区原因),后续再优化了。

 

本次分享就到这里。

 

此帖出自stm32/stm8论坛

最新回复

我看了一下,目前貌似还没有h7s上的threadx移植好的历程,等官方出吧   详情 回复 发表于 2024-10-8 17:31
点赞 关注(1)
 

回复
举报

7059

帖子

11

TA的资源

版主

沙发
 

这个wifi模块的驱动库还真有点基础才能研究起来呀。

此帖出自stm32/stm8论坛

点评

没错,不过有B-U585I-IOT02A和STM32H573I-DK开发板的WIFI例程,移植过来应该不难就是要花时间钻研。  详情 回复 发表于 2024-10-7 09:15
 
 

回复

169

帖子

1

TA的资源

纯净的硅(初级)

板凳
 
lugl4313820 发表于 2024-10-7 09:10 这个wifi模块的驱动库还真有点基础才能研究起来呀。

没错,不过有B-U585I-IOT02A和STM32H573I-DK开发板的WIFI例程,移植过来应该不难就是要花时间钻研。

此帖出自stm32/stm8论坛

点评

大佬搞起来,给大家打个样呀。我原来也搞过U585没看懂。  详情 回复 发表于 2024-10-7 09:53
 
 

回复

7059

帖子

11

TA的资源

版主

4
 
cc1989summer 发表于 2024-10-7 09:15 没错,不过有B-U585I-IOT02A和STM32H573I-DK开发板的WIFI例程,移植过来应该不难就是要花时间钻研。

大佬搞起来,给大家打个样呀。我原来也搞过U585没看懂。

此帖出自stm32/stm8论坛
 
 
 

回复

169

帖子

1

TA的资源

纯净的硅(初级)

5
 

B-U585I-IOT02A开发板,有【STM32H7S78-DK】同款WIFI模块。

 

而且官方有各种WIFI例程,以及便捷的WIFI固件升级方式。

此帖出自stm32/stm8论坛
 
 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

6
 

这个模块的例程在H573上有(例程名:NX_network_wifi),主控和模块用SPI通信,而且是threadx的操作系统,写的比较麻烦

此帖出自stm32/stm8论坛

点评

谢谢!我帖子里附了B-U585I-IOT02A的WIFI例程(mx_wifi),需要移植到STM32H7S78-DK  详情 回复 发表于 2024-10-7 13:15
 
个人签名

没用比没有强

 
 

回复

169

帖子

1

TA的资源

纯净的硅(初级)

7
 
电子烂人 发表于 2024-10-7 12:30 这个模块的例程在H573上有(例程名:NX_network_wifi),主控和模块用SPI通信,而且是threadx的操作系统, ...

谢谢!我帖子里附了B-U585I-IOT02A的WIFI例程(mx_wifi),需要移植到STM32H7S78-DK

此帖出自stm32/stm8论坛

点评

我看了一下,目前貌似还没有h7s上的threadx移植好的历程,等官方出吧  详情 回复 发表于 2024-10-8 17:31
 
 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

8
 
cc1989summer 发表于 2024-10-7 13:15 谢谢!我帖子里附了B-U585I-IOT02A的WIFI例程(mx_wifi),需要移植到STM32H7S78-DK

我看了一下,目前貌似还没有h7s上的threadx移植好的历程,等官方出吧

此帖出自stm32/stm8论坛
 
个人签名

没用比没有强

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表