[已解决] 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
-
- Posts: 4
- Joined: Wed Jun 16, 2021 12:58 pm
[已解决] 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
如题,使用ESP32S2做了一个小设备,计划实现功能如下:
1、电脑分享AP并开启TCP服务端,ESP32S2上电后通过WiFi Sta模式连接到AP并建立TCP连接。
2、电脑端通过TCP发送开启测量命令
3、接收到命令后,ESP32S2开启定时器1及中断,在中断中进行AD采集。
程序的编写基本参考官方examples中的TCP Client、ADC1及TimerGroup例程。基本逻辑如下:
1、串口、ADC1、WiFi Sta、TCP Client、定时器等初始化,其中在定时器初始化中设置中断。
2、创建tcp_receive_task,接收到开始指令则开启定时器中断、接收到停止指令则关闭定时器中断。
3、在定时器中断回调函数中,为保证中断函数处理速度,仅设置二值信号量用来同步任务。
4、创建ad_measure_task任务,等待二值信号量开启任务,任务使用adc1_get_raw()函数获取ADC结果。
问题现象:
接收到TCP传来的开启指令,开启定时器后,通过串口打印出大量的“phy :”错误 phy: pll_cap_ext 10。这个错误代码我百度了一下,没太明白什么意思。
若在ad_measure_task任务中屏蔽adc1_get_raw()函数,则不会出错。
若屏蔽WIFI、TCP的初始化开启,通过串口接收开启定时器任务,也不会出错。
不屏蔽WIFI的时候,通过串口接收开启定时器任务,也会出错,但报错次数明显降低。
实在是查不出来原因啊,难道 定时器1、ADC1、WIFI三者有某种什么神秘力量的联系吗????????我查手册,仅说明了ADC2与WIFI有冲突,ADC1应该没问题啊~~~求大佬们解答~~~谢谢啦。
错误一般发生后会以高频形式串口记录如下:
(21461) phy: pll_cap_ext 10[0m
[0;32mI (21471) phy: pll_cap_ext 10[0m
[0;32mI (21471) phy: pll_cap_ext 10[0m
[0;32mI (21481) phy: pll_cap_ext 10[0m
[0;32mI (21481) phy: pll_cap_ext 10[0m
[0;32mI (21481) phy: pll_cap_ext 10[0m
[0;32mI (21491) phy: pll_cap_ext 10[0m
[0;32mI (21491) phy: pll_cap_ext 10[0m
[0;32mI (21491) phy: pll_cap_ext 10[0m
[0;32mI (21501) phy: pll_cap_ext 10[0m
[0;32mI (21501) phy: pll_cap_ext 10[0m
[0;32mI (21501) phy: pll_cap_ext 10[0m
[0;32mI (21511) phy: pll_cap_ext 10[0m
[0;32mI (21511) phy: pll_cap_ext 10[0m
[0;32mI (21521) phy: pll_cap_ext 10[0m
[0;32mI (21521) phy: pll_cap_ext 10[0m
[0;32mI (21521) phy: pll_cap_ext 10[0m
[0;32mI (21531) phy: pll_cap_ext 10[0m
[0;32mI (21531) phy: pll_cap_ext 10[0m
[0;32mI (21531) phy: pll_cap_ext 10[0m
[0;32mI (21541) phy: pll_cap_ext 10[0m
[0;32mI (21541) phy: pll_cap_ext 10[0m
[0;32mI (21551) phy: pll_cap_ext 10[0m
[0;32mI (21551) phy: pll_cap_ext 10[0m
[0;32mI (21551) phy: pll_cap_ext 10[0m
[0;32mI (21561) phy: pll_cap_ext 10[0m
1、电脑分享AP并开启TCP服务端,ESP32S2上电后通过WiFi Sta模式连接到AP并建立TCP连接。
2、电脑端通过TCP发送开启测量命令
3、接收到命令后,ESP32S2开启定时器1及中断,在中断中进行AD采集。
程序的编写基本参考官方examples中的TCP Client、ADC1及TimerGroup例程。基本逻辑如下:
1、串口、ADC1、WiFi Sta、TCP Client、定时器等初始化,其中在定时器初始化中设置中断。
2、创建tcp_receive_task,接收到开始指令则开启定时器中断、接收到停止指令则关闭定时器中断。
3、在定时器中断回调函数中,为保证中断函数处理速度,仅设置二值信号量用来同步任务。
4、创建ad_measure_task任务,等待二值信号量开启任务,任务使用adc1_get_raw()函数获取ADC结果。
问题现象:
接收到TCP传来的开启指令,开启定时器后,通过串口打印出大量的“phy :”错误 phy: pll_cap_ext 10。这个错误代码我百度了一下,没太明白什么意思。
若在ad_measure_task任务中屏蔽adc1_get_raw()函数,则不会出错。
若屏蔽WIFI、TCP的初始化开启,通过串口接收开启定时器任务,也不会出错。
不屏蔽WIFI的时候,通过串口接收开启定时器任务,也会出错,但报错次数明显降低。
实在是查不出来原因啊,难道 定时器1、ADC1、WIFI三者有某种什么神秘力量的联系吗????????我查手册,仅说明了ADC2与WIFI有冲突,ADC1应该没问题啊~~~求大佬们解答~~~谢谢啦。
错误一般发生后会以高频形式串口记录如下:
(21461) phy: pll_cap_ext 10[0m
[0;32mI (21471) phy: pll_cap_ext 10[0m
[0;32mI (21471) phy: pll_cap_ext 10[0m
[0;32mI (21481) phy: pll_cap_ext 10[0m
[0;32mI (21481) phy: pll_cap_ext 10[0m
[0;32mI (21481) phy: pll_cap_ext 10[0m
[0;32mI (21491) phy: pll_cap_ext 10[0m
[0;32mI (21491) phy: pll_cap_ext 10[0m
[0;32mI (21491) phy: pll_cap_ext 10[0m
[0;32mI (21501) phy: pll_cap_ext 10[0m
[0;32mI (21501) phy: pll_cap_ext 10[0m
[0;32mI (21501) phy: pll_cap_ext 10[0m
[0;32mI (21511) phy: pll_cap_ext 10[0m
[0;32mI (21511) phy: pll_cap_ext 10[0m
[0;32mI (21521) phy: pll_cap_ext 10[0m
[0;32mI (21521) phy: pll_cap_ext 10[0m
[0;32mI (21521) phy: pll_cap_ext 10[0m
[0;32mI (21531) phy: pll_cap_ext 10[0m
[0;32mI (21531) phy: pll_cap_ext 10[0m
[0;32mI (21531) phy: pll_cap_ext 10[0m
[0;32mI (21541) phy: pll_cap_ext 10[0m
[0;32mI (21541) phy: pll_cap_ext 10[0m
[0;32mI (21551) phy: pll_cap_ext 10[0m
[0;32mI (21551) phy: pll_cap_ext 10[0m
[0;32mI (21551) phy: pll_cap_ext 10[0m
[0;32mI (21561) phy: pll_cap_ext 10[0m
-
- Posts: 4
- Joined: Wed Jun 16, 2021 12:58 pm
Re: 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
使用IDF版本为4.2.1
另外偶尔也会报这个错误: I (489481) wifi:bcn_timout,ap_probe_send_start
能否解答一下,wifi:bcn_timout,ap_probe_send_start 及 phy: pll_cap_ext 10这两个错误,分别代表什么吗?应该从哪方面入手去排查?我手头上有JTAG调试工具,但感觉这种错误没办法用JTAG调试出来
本人嵌入式及FreeRTOS小白,都是从网上找资料自学的,可能有很多简单的问题也不明白,求大佬们指教,谢谢
另外偶尔也会报这个错误: I (489481) wifi:bcn_timout,ap_probe_send_start
能否解答一下,wifi:bcn_timout,ap_probe_send_start 及 phy: pll_cap_ext 10这两个错误,分别代表什么吗?应该从哪方面入手去排查?我手头上有JTAG调试工具,但感觉这种错误没办法用JTAG调试出来
本人嵌入式及FreeRTOS小白,都是从网上找资料自学的,可能有很多简单的问题也不明白,求大佬们指教,谢谢
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
4.2.1 有此问题,后期会 backport 回 release/v4.2 分支。当前请使用 v4.3 试一下,v4.3 已经正式 release。
-
- Posts: 4
- Joined: Wed Jun 16, 2021 12:58 pm
Re: 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
好的,我试下V4.3版本,能否告知wifi:bcn_timout,ap_probe_send_start 及 phy: pll_cap_ext 10这两个错误,分别代表什么吗?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
wifi:bcn_timout,ap_probe_send_start 这个是 ESP 设备在一定时间内未收到路由的 beacon 包,ESP 设备主动发送 probe request 去探测路由是否存在
phy: pll_cap_ext 10 这个是 adc1 使用之后把 adc1 和 adc2 共用的 XPD 给关掉了,所以 wifi 使用 adc2 测量的跟踪校准就出错了。
phy: pll_cap_ext 10 这个是 adc1 使用之后把 adc1 和 adc2 共用的 XPD 给关掉了,所以 wifi 使用 adc2 测量的跟踪校准就出错了。
-
- Posts: 4
- Joined: Wed Jun 16, 2021 12:58 pm
Re: 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
了解,切换成4.3后确实没再出问题,谢谢大佬的回答。ESP_Gargamel wrote: ↑Tue Jun 22, 2021 7:55 amwifi:bcn_timout,ap_probe_send_start 这个是 ESP 设备在一定时间内未收到路由的 beacon 包,ESP 设备主动发送 probe request 去探测路由是否存在
phy: pll_cap_ext 10 这个是 adc1 使用之后把 adc1 和 adc2 共用的 XPD 给关掉了,所以 wifi 使用 adc2 测量的跟踪校准就出错了。
Re: [已解决] 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
后面发布的 4.2.2,以及当前的 github release/v4.2 1e363839096 仍旧有这个问题
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: [已解决] 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
是的,4.2.2 没赶上合入,会在 4.2.3 上修正。
Re: [已解决] 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
我正在使用ESP-IDF 4.3.1,并没有初始化ADC相关的代码,但是使用examples/wifi/get-started中的两个项目(STA和softAP),都出现了phy: pll_cap_ext 10这个信息然后wifi无法工作的问题,请问有解决思路吗?
Who is online
Users browsing this forum: No registered users and 43 guests