你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 5969|回复: 26

[STM32F769-DISC] 【F769IDISCOVERY评测】ESP8266简单上手

  [复制链接]

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2016-12-14 22:52:20 | 显示全部楼层 |阅读模式
           最近看到很多社区论坛大神用ESP8266配合STM32F769 Discovery(STM32官网)做了很多高端的应用,想起我也有一个闲置好久的ESP8266模块,决定重新找出来折腾折腾。高端的应用我不会搞就弄个简单的上手程序给需要的做个参考。


    STM32F32769 Discovery上有个ESP8266 串口WIFI模块的扩展接口,如果有模块的话直接装上即可使用,省了不少用杜邦线连接模块到开发板的板麻烦。我找了下丢在一边好久没用的ESP8266 吹吹灰然后插到板子上,看到熟悉的蓝灯闪烁几下灭掉红灯常亮应该问题不大可以继续战斗。


    常见的串口WIFI模块在进入数据透传模式之前都会包含很多的AT命令用于设置模块、接收发送数据。如果是第一次接触最好的找个WIFI模块的评估开发板而不是一个单独的WIFI模块.一般的WIFI模块评估板上面都会有一个USB转串口用于测试熟悉各种的AT命令,等彻底了解了各种AT命令以及发送接收数据的设置后再在程序固化WIFI的初始化设置用的AT命令序列。比较幸运是ST官方的Discovery、Nucleo 开发板上都会有一个带虚拟串口的STLink,可以借助这个虚拟串口方便的进行AT命令测试,WIFI模块接收发送数据测试,这样在前期的测试中我们可以借助这个虚拟串口做一个类似中转的作用,不需要在程序中写任何的AT命令就可以测试所的模块的命令和数据收发。


1、虚拟串口中转数据

STM32F32769 Discovery 上的ESP8266扩展接口和MCU的UART5 相连,stlink的虚拟串口和MCU的USART1 相连,由于AT命令的收发都是不定长的数据,我们可以参考上一个帖子中超时中断+DMA的模式来设置USART1\UART5同时打开超时中断和DMA收发。这样做之后我们就可以直接在电脑上同过串口助手借助stlink的虚拟串口进行ESP8266的各种AT命令测试了。

stlink的虚拟串口超时中断的回调函数如下:

  1. <font size="3" face="Tahoma">void UART_ReceiverTimeOut_Callback(UART_HandleTypeDef *huart)
  2. {
  3.     uint16_t len;
  4.     uint32_t tmp1 = 0;
  5.     tmp1 = __HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF);
  6.     if((tmp1 != RESET))
  7.     {
  8.         __HAL_UART_CLEAR_IT(huart, UART_CLEAR_RTOF);
  9.         /* set uart state  ready*/
  10.         huart->RxState = HAL_UART_STATE_READY;
  11.         /* Disable the rx  DMA peripheral */
  12.         __HAL_DMA_DISABLE(huart->hdmarx);
  13.         /*Clear the DMA Stream pending flags.*/
  14.         __HAL_DMA_CLEAR_FLAG(huart->hdmarx, __HAL_DMA_GET_TC_FLAG_INDEX(huart->hdmarx));
  15.         /* get rx data len */
  16.         len = huart->hdmarx->Instance->NDTR;
  17.         U1_Rxlen = RXBUFFLENGTH - len;
  18.         /* Process Unlocked */
  19.         __HAL_UNLOCK(huart->hdmarx);
  20.         
  21.        huart->hdmarx->State = HAL_DMA_STATE_READY;

  22.        HAL_UART_Receive_DMA(huart, U1_RxBuff, RXBUFFLENGTH);
  23.                          WIFI_CMD_Received_Sta = ENABLE;
  24.     }
  25. }
  26. </font>
复制代码
ESP8266超时中断回调函数如下:
  1. <font size="3" face="Tahoma">void WIFI_ReceiverTimeOut_Callback(UART_HandleTypeDef *huart)
  2. {
  3.     uint16_t len;
  4.     uint32_t tmp1 = 0;
  5.     tmp1 = __HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF);
  6.     if((tmp1 != RESET))
  7.     {
  8.         __HAL_UART_CLEAR_IT(huart, UART_CLEAR_RTOF);
  9.         /* set uart state  ready*/
  10.         huart->RxState = HAL_UART_STATE_READY;
  11.         /* Disable the rx  DMA peripheral */
  12.         __HAL_DMA_DISABLE(huart->hdmarx);
  13.         /*Clear the DMA Stream pending flags.*/
  14.         __HAL_DMA_CLEAR_FLAG(huart->hdmarx, __HAL_DMA_GET_TC_FLAG_INDEX(huart->hdmarx));
  15.         /* get rx data len */
  16.         len = huart->hdmarx->Instance->NDTR;
  17.         WIFI_Rxlen = RXBUFFLENGTH - len;
  18.         /* Process Unlocked */
  19.         __HAL_UNLOCK(huart->hdmarx);
  20.         
  21.        huart->hdmarx->State = HAL_DMA_STATE_READY;

  22.       HAL_UART_Receive_DMA(huart, WIFI_RxBuff, RXBUFFLENGTH);
  23.                         WIFI_CMD_Response_Sta = ENABLE;
  24.     }
  25. }</font>
复制代码
在mian函数中实现stlink虚拟串口的中转:
  1. <font size="3" face="Tahoma">int main(void)
  2. {
  3.   CPU_CACHE_Enable();
  4.   HAL_Init();
  5.   SystemClock_Config();
  6.   USART1_Init();
  7.   My_ESP8266_Init();
  8.   while (1)
  9.   {
  10.                 //发送接收的esp8266模块响应到stlink的虚拟串口
  11.                 if(WIFI_CMD_Response_Sta && WIFI_Rxlen)
  12.                 {
  13.                                 HAL_UART_Transmit_DMA(&UartHandle, WIFI_RxBuff, WIFI_Rxlen);
  14.                                 WIFI_CMD_Response_Sta = DISABLE;
  15.                                 WIFI_Rxlen = 0;
  16.                 }
  17.                 //发送接收到的stlink虚拟串口数据esp8266模块
  18.                 if(WIFI_CMD_Received_Sta && U1_Rxlen)
  19.                 {
  20.                         HAL_UART_Transmit_DMA(&WiFiUartHandle,U1_RxBuff,U1_Rxlen);
  21.                         WIFI_CMD_Received_Sta = DISABLE;
  22.                         U1_Rxlen = 0;
  23.                 }
  24.   }
  25. }</font>
复制代码
通过上面的设置我们就可以用串口助手完全控制ESP8266模块了。

2、AT命令测试

我们先用AT命令看下ESP8266的版本信息和复位命令

AT11.gif

然后查看下模块的工作模式和连接到路由器后的IP地址

AT2.gif

3、TCP测试
  
除了测试模块的AT指令之外我们测试下TCP传输,设置模块和电脑连接同一个路由,模块发送数据到电脑的TCP Server调试软件,同时TCP Server发送数据到模块,基本的设置AT指令顺序如下:
  1. <font size="3" face="Tahoma">1.设置工作模式:3(STA+AP)
  2. AT+CWMODE=3

  3. 2.设置无线路由器的用户名和密码
  4. AT+CWJAP="ssid","password"

  5. 3.查询IP,常见的是192.168.x.x局域网IP
  6. AT+CIFSR

  7. 4.设置单链接
  8. AT+CIPMUX=0

  9. 5.设置透传模式
  10. AT+CIPMODE=1

  11. 6.连接电脑上的TCPServer,IP和端口号根据具体情况进行修改即可
  12. AT+CIPSTART="TCP","192.168.1.102",8080

  13. 7.启动透传发送
  14. AT+CIPSEND

  15. 8.发送透传数据
  16. </font>
复制代码
测试结果如下:
AT3.gif

4、UDP测试

设置AT命令如下;
  1. <font size="3" face="Tahoma">1.设置工作模式:3(STA+AP)
  2. AT+CWMODE=3

  3. 2.设置无线路由器的用户名和密码(已连接过路由请忽略)
  4. AT+CWJAP="ssid","password"

  5. 3.查询IP,常见的是192.168.x.x局域网IP
  6. AT+CIFSR

  7. 4.设置单链接
  8. AT+CIPMUX=0

  9. 5.设置透传模式
  10. AT+CIPMODE=1

  11. 6.连接电脑上的udp,IP和端口号根据具体情况进行修改即可
  12. AT+CIPSTART="UDP","192.168.1.102",8080,8899,0

  13. 7.启动透传发送
  14. AT+CIPSEND

  15. 8.发送透传数据</font>
复制代码
测试结果:
AT4.gif

除了上面的工作模式之外还有其他数据传输模块,借助于stlink的虚拟串口进行中转数据我们可以很快的熟悉AT命令和数据收发的设置。

5、ESP8266调试软件

如果感觉输入各种的AT命令麻烦可以使用ESP8266调试软件配合stlink的虚拟串口进行AT命令测试和数据收发测试

AT5.gif



测试代码:
WIFI.rar (888.92 KB, 下载次数: 75)

评分

参与人数 1ST金币 +20 收起 理由
zero99 + 20

查看全部评分

回复

使用道具 举报

6

主题

462

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-12-28
发表于 2016-12-15 09:03:29 | 显示全部楼层
谢谢分享 占沙发

评分

参与人数 1ST金币 +10 收起 理由
creep + 10 Bingo !!!

查看全部评分

回复 支持 反对

使用道具 举报

10

主题

693

回帖

0

蝴蝶豆

金牌会员

最后登录
2018-6-15
发表于 2016-12-15 09:14:44 | 显示全部楼层
谢谢分享                     
回复 支持 反对

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2016-12-15 09:44:45 | 显示全部楼层
膜拜大神
回复 支持 反对

使用道具 举报

20

主题

1110

回帖

125

蝴蝶豆

论坛元老

最后登录
2019-5-4
发表于 2016-12-15 10:02:26 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
 楼主| 发表于 2016-12-15 10:23:12 | 显示全部楼层

              
回复 支持 反对

使用道具 举报

64

主题

744

回帖

23

蝴蝶豆

实习版主

最后登录
2020-12-8
发表于 2016-12-15 12:08:22 | 显示全部楼层
顶大神
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2016-12-15 12:47:30 | 显示全部楼层
膜拜大神
回复 支持 反对

使用道具 举报

11

主题

449

回帖

0

蝴蝶豆

金牌会员

最后登录
2018-12-18
发表于 2016-12-15 12:57:35 | 显示全部楼层
回复 支持 反对

使用道具 举报

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
 楼主| 发表于 2016-12-15 13:40:20 | 显示全部楼层

感谢版主支持!
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版