[已解决] 求助帖......使用定时器开启AD采集,并通过TCP发送出去~~出现问题
Posted: Wed Jun 16, 2021 1:48 pm
如题,使用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