完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,使用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个回答
|
|
根据您提供的信息,您已经实现了以下功能:
1. 电脑分享AP并开启TCP服务端,ESP32S2通过WiFi Sta模式连接到AP并建立TCP连接。 2. 电脑端通过TCP发送开启测量命令。 3. 接收到命令后,ESP32S2开启定时器1及中断,在中断中进行AD采集。 接下来,我将为您提供一些建议和可能遇到的问题的解决方案: 1. 确保ESP32S2的ADC通道已正确配置。在初始化ADC1时,请确保选择了正确的ADC通道和分辨率。 2. 在TCP客户端接收到开始测量命令后,确保正确地启动定时器中断。您可以使用`timer_group_set_alarm`函数设置定时器的触发时间,并使用`timer_group_enable_alarm`函数启用定时器中断。 3. 在定时器中断服务程序中,使用`adc1_get_raw`函数读取ADC值。确保在读取ADC值之前,已经正确地初始化了ADC1。 4. 将读取到的ADC值转换为实际电压值。您可以使用ESP32S2的参考电压(例如1.1V)来计算实际电压值。 5. 将转换后的电压值通过TCP发送到电脑端。您可以使用`esp_tcp_write`函数将数据发送到TCP连接。 6. 如果需要停止测量,确保在TCP客户端接收到停止命令后,正确地关闭定时器中断。您可以使用`timer_group_disable_alarm`函数禁用定时器中断。 7. 确保在程序中添加必要的错误处理和异常处理,以便在遇到问题时能够及时地进行处理。 8. 在调试过程中,使用串口打印关键信息,以便更好地了解程序的运行情况。 9. 如果遇到连接问题,请检查ESP32S2的WiFi配置是否正确,并确保电脑端的TCP服务端能够正确地接收和发送数据。 10. 最后,确保您的程序具有良好的可读性和可维护性,以便在后续开发中能够快速地进行修改和扩展。 希望这些建议对您有所帮助。如果您在实现过程中遇到任何问题,请随时提问,我会尽力为您提供帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
145个成员聚集在这个小组
加入小组536浏览 6评论
449浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
432浏览 5评论
430浏览 4评论
404浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 12:40 , Processed in 0.712592 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号