问题描述
在使用ESP32-C3芯片/模组,AT版本为Release/v3.0.0.0时,客户在使用常规AT通信时,速率达不到需求,需要换成SPI-AT,测试中遇到问题,这是为什么呢?
解决思路
在ESP-AT中重新选择编译目标为SPI-AT,见下图:
相关引脚使用ESP-AT默认引脚,将SPI主机的引脚与之对应上,上电后发现AT无法通信,随后展开分析。
单独拿一个模组使用示例examples/peripherals/spi_slave/sender模拟了一个spi的主机进行测试,通过示波器的查看,确认数据是发送出去了的,而且发送不同的指令波形都会出现不同的变化,但是SPI-AT始终没有反应。查看文档介绍,从机给主机回复的时候,握手信号应该会有一个中断信号,也就会把电平拉高,但在示波器上没有抓到握手线发出的中断信号。
通过研发同事检查确认后,问题得到定位:原来是之前应用的IDF的示例是不行的,ESP-AT里面的SPI协议做了封装的,需要参考esp32_c_series示例。
启明云端/ 03
解决方案
首先使用esp32_c_series示例作为SPI主机,第二个模块烧录SPI-AT作为从机,将通信所需的引脚进行连接。
模块内部做了UART转SPI信号,所以在测试时可用串口监视器作为测试(实际使用时为SPI信号),此时AT通信成功,指令测试完成。
此时有两种方案:
1、如果需要使用标准SPI协议做主机,可以参考esp32_c_series中的在eadme其中包含了交互说明https://github.com/espressif/esp-at/tree/master/examples/at_spi_master/spi/esp32_c_series#communication-sample
如果通过逻辑分析仪包抓了数据信号,可以与链接中的信号进行比对,确保发的数据是正确的。
2、直接移植esp32_c_series示例到mcu完成AT通信。
全部0条评论
快来发表一下你的评论吧 !