打印本文 关闭窗口 | |
ESP8266 常见问题来源于瑞达科技网 | |
作者:佚名 文章来源:网络 点击数 更新时间:2019/12/22 文章录入:瑞达 责任编辑:瑞达科技 | |
|
|
ESP8266 常见问题本页面收集esp8266常见问题 概述本文档主要介绍开发者在ESP8266开发中常见的一些问题。 这些问题主要包括以下几大类:
以下是各分类的具体问题和解答。 基本概念相关
ESP8266 是高性能无线 SOC,在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。支持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈。
ESP01~ESP14是由深圳安信可科技研发生产的ESP8266系列模组,在ESP8266芯片的基础上,完善了外围器件布局和优化天线。
AiCloud 是安信可提供给广大客户的免费服务器,数据全裸,UDP 传输,简单稳定,且含有诸多例程和 PC 端上位机调试工具。
乐鑫是ESP8266的芯片厂商,安信可是依据ESP8266生产模组,并提供一系列开发方案的厂家。
这个根据您的需求来定,若您只需要局域网就可以满足产品需求,那么无需服务器,同样可以使用ESP8266进行开发。
安信可官方淘宝店铺:http://shop.ai-thinker.com/
模组硬件之间的差异主要是封装区别,以及flash大小的区分,您可以查看ESP8266选型列表,若有疑问,可联系我们的销售人员。
SDK方法: AT方法: 您可以自已依此评估自己适合哪种方案
因为FreeRTOS是后面才开放的,所以一般常用的是NONOS
若您是企业用户,我们会专门委派一名工程师负责贵司的对接; ESP8266 相关* 为什么透传会丢包? 因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。透传功能使用的是TCP协议,每包数据是1460(取决于协议栈),只要网络良好,buffer空间没有被消耗完,就可以不停地传输数据。对于透传。串口接收的数据间隔超过20ms,就会认为 接受结束,将已经接受的数据传输至网络。如果网络不好,就可能会丢失一些数据,因此,为了避免这种情况,可以将串口设置为流控模式。 * ESP8266可以同时使用AP+STA吗? ESP8266 可以同时使用AP+STA模式(但不能做WiFi放大器)。 * ESP8266可以进行低功耗吗? ESP8266可以进行低功耗。AT指令进行低功耗说明: 设置睡眠模式,sleep只在单STA模式下生效,默认工作在modem-sleep模式。 AT+SLEEP=0 0为禁止休眠模式 1为light-sleep模式 功耗0.9mA 2为modem-sleep模式 功耗15mA * 将建立的TCP Server 连接通过AT 指令保存到flash? * 如何让ESP8266上电后快速连接AP? 外设*SDIO 是否支持 SD 卡? ESP8266 是 SDIO Slave ,不支持 SD 卡。 *ESP8266 有几个 UART? ESP8266 有两个 UART,其中 UARTO 有 TX、RX,可做数据传输;UART1 由于 RX 脚被 SPI-Flash 占用,只能使用 TX,可以做串口调试信息打印。 *GPIO 可以直接连 5V 吗? 不可以。GPIO 只能承受 3.6V。需要通过降压电路,否则会造成 GPIO 损坏。 硬件*ESP8266 电压电流需求? ESP8266 的数字部分的电压范围是 1.8V ~ 3.3V,模拟部分的工作电压是 3.0V ~ 3.6V,最低 2.7V。 模拟电源峰值 350 mA,数字电源峰值 200 mA。
*设计 ESP8266 的供电时,需要注意哪些问题? 请注意如下几点: *ESP8266 上电时电流很大,是什么原因? ESP8266 的 RF 和数字电路具有极高的集成度。上电后,RF 自校准会需要大电流。模拟部分电路最大的极限电路可能达到 500 mA;数字电路部分最大电流 达到 200 mA。一般的操作,平均电流在 100 mA 左右。因此,ESP8266 需要供电能达到 500 mA,能够保证不会有瞬间压降。 *可以使用锂电池或者 2 节 AA 纽扣电池直接给 ESP8266 供电吗? 2 节 AA 纽扣电池可以给 ESP8266 供电。锂电池放电时压降比较大,不适合直接给 ESP8266 供电。ESP8266 的 RF 电路会受温度及电压浮动影响。不推荐不加任何校准的电源直接给 ESP8266 供电。 *ESP8266 的 RAM 的使用结构是怎么的?
WiFi相关*路由配置是正确的,但是发生找不到路由,连接失败,为什么? 如果 SSID 和密码配置是正确的,可能的原因有 2 个。
* ESP8266 SoftAP + Station 模式下网络断开或丢包的情况? 虽然 ESP8266 支持 SoftAP + Station 共存模式,但是 ESP8266 实际只有一个硬件信道。因此在 SoftAP + Station 模式时,ESP8266 SoftAP 会动态调整信道值与 ESP8266 Station 一致。这个限制会导致 ESP8266 SoftAP + Station 模式时一些行为上的不便,用户请注意。例如:
这种情况,用户可以通过设置定时器,超时后调用 wifi_station_disconnect 停止 ESP8266 Station 不断连接路由的尝试;或者在初始配置时,调用 wifi_station_set_reconnect_policy 和 wifi_station_set_auto_connect 禁止 ESP8266 Station 尝试重连路由。 *Wi-Fi 信道是什么?可以自行选择信道吗? 信道指的是 Wi-Fi 使用的指定频段中特定频率的波段。不同国家地区使用的信道数目是不同的。您可以参考ESP8266 Wi-Fi 信道选择指南。 应用*为什么云端升级需要2个 “bin” 文件?“user1.bin” 和 “user2.bin” 有什么区别? user1.bin 和 user2.bin 是 2 个不同的 BIN 文件。生成 user1.bin 和 user2.bin 时,必须使用相同的 Flash 和 boot 设置,以保证 OTA 升级成功。2个 BIN 文件是互补的,运行 user1.bin 的时候,升级是下载 user2.bin;运行 user2.bin 的时候,升级是下载 user1.bin。这样可以保证升级过程中,如果有掉线的情况发生,设备还是可以正常运行。 固件编译调试相关* 导入工程注意事项 工程文件的导入的注意不要有空格和中文字符,例如:C:\Users\Administrator\Desktop\sdk\esp_iot_sdk_v1.3.0 * esp8266模组LED灯为什么上电闪一下就灭了? * ESP8266启动信息说明? * 模组发送AT指令无响应? a,请选择74880的波特率,看下启动日志,把RST复位引脚拉低再拉高,可使用 b,是否进入flash启动模式,GPIO15下拉,GPIO0,GPIO2上拉? c,是否烧录了固件?烧录配置flash size大小是否跟WiFi模组的flash一致? * 如何屏蔽上电打印? U0TXD默认上电有系统打印,对此敏感应用可通过UART的内部引脚交换功能,在初始化的时候,调用system_uart_swap函数。将 U0TXD、U0RXD 分别于U0RTS(MTDO/GPIO15)、U0CTS (MTCK/GPIO13)交换来屏蔽该上电的系统打印。 交换后,硬件上的下载管脚还是使用U0TXD + U0RXD,通信时需要将MTDO对应接到MCU的RXD,MTCK对应加到MCU的TXD。 * 使用UART1打印日志,如何配置? UART1只有TX功能,可以在UART0用于通讯时做打印log用。 参考代码如下: void ICACHE_FLASH_ATTR uart_init_new(void) { // Wait for FIFOs to be emptied UART_WaitTxFifoEmpty(UART0); UART_WaitTxFifoEmpty(UART1); // Configure UART settings UART_ConfigTypeDef uart_config; uart_config.baud_rate = BIT_RATE_74880; uart_config.data_bits = UART_WordLength_8b; uart_config.parity = USART_Parity_None; uart_config.stop_bits = USART_StopBits_1 uart_config.flow_ctrl = USART_HardwareFlowControl_None; uart_config.UART_RxFlowThresh = 120; uart_config.UART_InverseMask = UART_None_Inverse; UART_ParamConfig(UART0, &uart_config); UART_IntrConfTypeDef uart_intr; uart_intr.UART_IntrEnMask = UART_RXFIFO_TOUT_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_FULL_INT_ENA; uart_intr.UART_RX_FifoFullIntrThresh = 100; uart_intr.UART_RX_TimeOutIntrThresh = 2; uart_intr.UART_TX_FifoEmptyIntrThresh = 20; UART_IntrConfig(UART0, &uart_intr); // Set UART1 for printing UART_SetPrintPort(UART1); // Register interrupt handler UART_intr_handler_register(uart0_rx_intr_handler); ETS_UART_INTR_ENABLE(); } * 上电为什么输出乱码? 上电输出乱码是正常的,因为外部晶振选择是26M,请选择74880的波特率,按下复位键或把RST引脚拉低再拉高,可以看到启动信息。可使用安信可串口调试助手进行查看,aithinker_serial_tool_v1.2.3.7z * 为什么编译sdk的时候会发生 |
|
打印本文 关闭窗口 |