快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索

tag 标签: ESP8266

相关日志

分享 ESP8266 的 RAM 的使用结构是怎么的?
wateras1 2016-11-23 10:45
ESP8266 的 RAM 的使用结构是怎么的? ESP8266 的 RAM 总共 160 KB。 IRAM 空间为 64 KB: 前 32 KB 用作 IRAM,用来存放没有加 ICACHE_FLASH_ATTR 的代码,即 .text 段,会通过 ROM code 或二级 boot 从 SPI Flash 中的 BIN 中加载到 IRAM。 后 32 KB 被映射作为 iCache,放在 SPI Flash 中的,加了 ICACHE_FLASH_ATTR 的代码会被从 SPI Flash 自动动态加载到 iCache。 DRAM 空间为 96 KB: 对于 Non-OS_SDK,前 80 KB 用来存放 .data/.bss/.rodata/heap ,heap 区的大小取决于 .data/.bss/.rodata 的大小;还有 16 KB 给 ROM code 使用。 对于 RTOS_SDK,96 KB 用来存放 .data/.bss/.rodata/heap ,heap 区的大小取决于 .data/.bss/.rodata 的大小。
个人分类: ESP8266 WIFI|1921 次阅读|0 个评论
分享 ESP8266 FAQ文档
热度 1 wateras1 2015-9-9 10:24
ESP8266FAQ 文档 目录 版本信息 2 目录 3 1 、 前言 3 2 、 硬件问题 3 2.1. 工作模式 3 2.2. Flash 与内存 3 2.3. CPU 3 2.4. GPIO 3 2.5. Uart 3 2.6. PWM 3 2.7. 晶振 3 2.8. 硬件资料 3 2.9. WatchDog 3 2.10. ESP8266 与 ESP8089 的区别 3 3 、 SDK 软件 3 3.1. 基本结构及编译 3 3.2. 系统任务 3 3.3. softAPstation 3 3.4. 系统定时器 3 3.5. 复位功能 3 3.6. 低功耗 3 3.7. 网络连接 3 3.8. AT 透传 3 3.9. AT 指令常见问题 3 4 、 云端服务 3 4.1. 基本问题 3 4.2. 云端升级 3 1、 前言 本文总结了一些客户常见问题。 2、 硬件 问题 ESP8266 尺寸为 5x5mm , ESP8266 模组需要的外围器件有: 10 个电阻电容电感、 1 个无源晶振、 1 个 flash 。工作温度范围: -40~125 ℃。 2.1. 工作模式 1 、 问: ESP8266StandAlonemode 和 SLAVE-SPImode 分别是什么? 答: ESP8266 有两种工作模式: 1) StandAlone 模式 该模式 ESP8266 作为主芯片,独立运行; 2) SIP 模式( SLAVE-SPI,Slave-SDIO ) 该模式 ESP8266 作为从芯片,采用 SPI 或 SDIO 与主芯片通讯,如主芯片采用 ARM 。 2.2. Flash 与内存 1、 问: Flash 参考容量及型号是什么样的? 答: Flash 规格需满足以下要求: 1) SPIFlash 2) 支持 QuadSPI( 推荐 ) 和 DualSPI 3) 容量最好在 4Mbit 及以上 推荐型号 winbond:W25Q40CL 2、 问:可用空间是怎样的? 答: RAMsize35kB ( station 模式下,连上路由后, heap+data 区大致可用在 35K 左右,具体可用内存大小,可调用接口 system_get_free_heap_size 获得) ROMsize64kB (片上没有 ROM ,用户程序存放在 spiflash 中,当前 spiflash 大小为 512KB ,当前定义可用程序区 64KB 。可通过更换容量更大的 spiflash ,从而可支持到 4MB 。) 3、 问:两个 flash 的分工? 答:由于 ESP8266 有两种工作模式, StandAlone 和 SPI-Slave : PCB 板中间的 flash 用于 ESP8266 工作在 StandALone 模式下的; 右上角的 flash 用于 ESP8266 工作在 SPI-Slave 模式下, ESP8266 作为 SPISLAVE (或 SDIO )连接 Host ,同时 ESP8266 又作为 SPImaster 通过 HSPI 和右上角的 flash 连接。 客户实际运用时,只需根据使用 ESP8266 的模式,选用一种 flash 连接方式即可。 4、 问:如何对 Flash 加密,保护客户软件(防抄板)? 答: 方法一:在 ESP8266 芯片中定制客户专用的 id ,软件里需要传入正确的客户 id ,跟芯片中的客户 id 相符,才能继续运行,否则系统 hang 住。 方法二:在使用烧录工具烧写 flash 时,先读取芯片 id (每颗芯片唯一),将芯片 id 存入 flash 特定地址,在程序中读取芯片 id 和 flash 特定地址中存放的 id ,两者一致,程序才能正常运行。 5、 问:搜索不到 ESPSoftAP ? 答: 1) 确认是否更换了 flash ,请更换成我们原来 Demo 板上的 flash 或者替换成 W25Q 系列的 Flash 。 2) 尝试调节晶振两边的对地调节电容( 26M 晶振两边的对地调节电容在 8.2pF~12pF )。 2.3. CPU 1、 问: CPU 主频跑多少? 答: CPU 主频支持 80M 和 160M 。 2.4. GPIO 1、 问: GPIO 口的输出电压电流的规格式 ? 答: GPIO 口输出电压为 VDD_IO (比如 3.3V ),输出电流应该不超过 20mA 。 2、 问: GPIO 口的软件设置方式。 答: 1) GPIOAPI 请参见文档“ EspressifIoTSDK 编程手册”中 5.1GPIO 接口 API 2) 如希望提高设置 GPIO 的速率,可以采用如下方式,直接写寄存器控制。 GPIO_REG_WRITE(GPIO_ENABLE_ADDRESS,xxxx);// 使能哪些 GPIO 口 GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS,xxxx);// 设置哪些 GPIO 口 GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS,xxxx);// 清除哪些 GPIO 口 第一句只要调用一次;后两句控制输出高电平或低电平。 3、 问: GPIO 口使用示例。 答:以下简单罗列出了几个应用中的 GPIO 口的功能描述。 a) wifi 开关应用: MTDI--- 控制继电器,可高低电平控制; MTCK--- 指示 wifi 工作状态; MTMS--- 接复位按键(长按 5s 可完成复位功能)。 b) 温湿度传感器应用: MTMS---I2C_SCL ; GPIO2---I2C_SCK ; MTCK--- 复位按键 ( 按住复位按键重新上电,可完成复位 ) ; GPIO0---wifi 工作状态指示灯; MTDI--- 与服务器通信的指示灯; U0RXD---Button ,暂未定义功能; MTDO---LED ,暂未定义功能。 c) 智能灯应用: MTMS--- 红外接收; 三路 PWM 输出: MTDI--- 红色灯控制; MTDO--- 绿色灯控制; MTCK---- 蓝色灯控制。 d) 2UART : UART0:U0RXD+U0TXD--- 通信 UART1 : GPIO2(TXD)--- 打印 目前 uart0 可以用来收发用户自己的数据包, uart1 用作打印信息。 2.5. Uart 1、 问: ESP8266 有几个 uart ? 答: ESP8266 有两个 uart ,其中 uart0 有 TX 、 RX ,可做数据传输; uart1 仅有 TX ,可以做串口调试信息打印。 2、 问:目前支持的波特率范围? 答: 110~460800 3、 问:怎样修改 uart 波特率? 答:下载请将波特率设为 115200, 修改波特率需要做如下操作 : a) uart.c 中最后一句注释掉 ; b) user_main.c 中需添加 uart_init(115200,115200); 4、 问:串口 log 乱码? 答:关于波特率打印出现乱码,有两种方法来解决: ( 1 )使用 USB 转 TTL 的串口线:例如 CP2102 ,只需接 GNDRXDTXD 。 ( 2 )可能是串口线不支持 74880 这个波特率的打印,请修改波特率为 115200 。修改方法如 UART 问题 1 。 5、 问:初始波特率为什么是 74880 ? 答:这是由于一些最初的设计原因,在板子上电初始跑 bootrom 的一段 log 需要在 74880 的波特率下正常打印。跑到用户程序区后,波特率改为 115200 后可正常打印的。 2.6. PWM 1 、问: ESP8266 支持几路 PWM ? 答:目前支持 4 路 PWM ,硬件实际是 1 路 PWM ,由软件实现为 4 路 PWM 。 2 、问: ESP8266PWM 频率多少? 答:默认 100-500Hz 。 10kHz 也行 但分辨率到不了 1/256 。 2.7. 晶振 1 、 问:晶振的要求? 答:要求晶振本身的频偏要在 ± 10ppm 以内。 2 、 问: Demo 使用 26M 晶振,如需更换成 40M 晶振, firmware 是否要修改? 答:请将 esp_init_data_default.bin 中下图红色标注的地方改为 00 ( 40M 晶振)。 01 表示 26M 晶振。注意更换为 40M 晶振后,两边的对地调节电容需要更改(应该是 18PF )。( 26M 晶振两边的对地调节电容在 8.2pF~12pF ) 2.8. 硬件资料 1、 问:硬件资料使用什么工具打开? 答: 电路原理图: orcad16.6 PCB:PadsLayout9.5 2.9. WatchDog 1、 问: ESP8266 有 watchdog 吗? 答:有。程序异常跑飞的情况下,会自动 reset 。 2.10. ESP8266 与 ESP8089 的区别 1、 问: ESP8266 、 ESP8089 两者的区别? 答: ESP8266 是一颗为物联网定义的产品,特征是它能从 flashboot-up 。 与 ESP8089 最大的区别就是: ESP8266 能直接跑 TCP/IP 和应用程序,自带协议( TCP/IP 等), ESP8266 底层是有 MAC 的,而 ESP8089 没有, ESP8089 的 MAC 由主 IC 实现。 ESP8266 可以作为主 IC ,让客户进行二次开发; ESP8089 只能作为其他 Host 的从 IC ,无法做二次开发。 3、 SDK 软件 3.1. 基本结构及编译 1、 问: ESP8266 有操作系统吗? 答: ESP8266 目前没有操作系统,后期可能会采用 FreeRTOS 。 2、 问: ESP8266 有 main 吗? 答: ESP8266 没有 main ,程序入口为 user_init 。 3、 问:如何定义一个函数,或者 const 的全局变量,放到 flash 里面动态加载运 行,还是常驻 RAM 里面运行。 答:函数若添加 ICACHE_FLASH_ATTR ,会动态加载;不添加,则常驻 iRAM 。 Const 常驻 dRAM 。 4、 问: wifi_set_ip_info 接口不生效? 答:需要在 user_init 中调用。 5、 问: ESP8266 编译器 license 更新? 答: xtensa 的 license 修改名称为 xtensaSDK.lic ,放在虚拟机的路径 C:\usr\xtensa\License 下。 6、 问:编译时 make 无反应? 答:请注意是否有将 esp_iot_sdk_v0.8.4\examples\IoT_Demo 文件夹下的所有文件拷贝到 APP 文件夹中。 7、 问: master-device-key.bin 一定要烧录吗? 答: master-device-key.bin 的实际名称是长度为 40 字节的 16 进制字符串,在 Espressifwebsite : http://iot.espressif.cn/#/ 上申请,如果客户不用 Espressif 云端服务(例如客户自建服务器),则无需申请、烧录。 3.2. 系统任务 1、 问:请问如何编写任务才比较合理? 答:参考文档“ EspressifIoTSDK 编程手册”,其中有简单举例, system_os_task 与 system_os_post 3.3. softAPstation 1、 问: ESP8266station 和 softAP 的 mac 地址是否相同? 答:不相同。 ESP8266 有两套 MAC ,因此可以支持 softAP+station 共存的模式。 2、 问:现在最多可以记录多少个 wifi 的 ssid 和 password ? 答:最多记录 5 个 AP 的信息 3、 问: ESP8266softAP 可连接几个 station ? 答:由于内存限制, ESP8266softAP 最多可连接 4 个 station 4、 问: ESP8266wifi_softap_set_config 这类设置 wifi 属性的接口不生效? 答:需要在 user_init 中调用;否则,需要重启之后生效,即调用 system_restart 5、 问: ESP8266 作为 station 连入路由后,没有被分配到 IP 地址? 答:查证是否建立了一个以上的 UDPserver ,目前 IOT_Demo 只能建一个 UDPserver ,否则会影响 DHCP ,无法获得 ip 地址。如需多建 UDPserver ,需要向乐鑫申请开放 lwip 的源代码进行修改。 6、 问:搜索不到 ESPSoftAP ? 答: ( 1 )确认是否更换了 flash ,请更换成我们原来 Demo 板上的 flash 或者替换成 W25Q 系列的 Flash 。 ( 2 ) 尝试调节晶振两边的对地调节电容( 26M 晶振两边的对地调节电容在 8.2pF~12pF )。 3.4. 系统定时器 1 、 问:如何使用 os_timer_arm_us ,以及定时时间范围 ? 答:使能 us 级定时器,在 user_config.h 中 #defineUSE_US_TIMER ,并在 user_init 中调用 system_timer_reinit() ,此时可以同时使用 os_timer_arm_us 和 os_timer_arm ( 1 )未定义 USE_US_TIMER 时: 每秒钟的 tick 数是 80000000/256=312500 因此有效时间是 (2^31-1)/312500=6871.947670s 所以 os_timer_arm() 的时间参数范围是 0-6871947ms os_timer_arm_us 不可用 ( 2 )定义 USE_US_TIMER 时: 每秒钟的 tick 数是 80000000/16=5000000 因此有效时间是 (2^31-1)/5000000=429.4967294s 所以 os_timer_arm() 的时间参数范围是 0-429496ms os_timer_arm_us 的时间参数范围是 0-429496729us 3.5. 复位功能 1、 问:复位后恢复的出场设置参数是什么? 答: system_restore 将 wifi 相关参数复位,即擦了路由信息以及恢复了 softap 默认名称 3.6. 低功耗 1、 问:低功耗说明。 答:如下图,其中的“可唤醒”指数据来了自动唤醒。 模式 Modem-Sleep Light-Sleep Deep-Sleep 动作 关闭 WiFiModem 电路; 关闭 WiFiModem 电路、晶振和 PLL ; 仅 RTC 电路工作,关闭其他电路,芯片处于极低功耗待机状态。 CPU 和其他外设正常运行。 CPU 和其他外设处于时钟暂停待机状态。 电流 10~20mA 0.5mA 10~20uA 唤醒 可唤醒 可唤醒 无法唤醒,设备依照设定,定时醒来。 应用场景 用于 CPU 需要一直工作的场景。 如 PWM 或 I2S 应用等。 如果没有数据传输,可根据 802.11 标准(如 U-APSD ),关闭 WiFiModem 电路来省电。 例如,在 DTIM3 时,每 sleep300ms ,醒来 3ms 接收 AP 的 Beacon 包等,整体平均电流约 15mA 。 用于 CPU 可暂停的应用。 如 WiFi 开关。 如果没有数据传输,可根据 802.11 标准(如 U-APSD ),关 闭 WiFiModem 电路,并暂停 CPU 来省电。 例如,在 DTIM3 时,每 sleep300ms ,醒来 3mS 接收 AP 的 Beacon 包等,则整体平均电流约 0.9mA 。 用于不需一直保持 WiFi 连接,很长时间才发送一次数据包的应用。 如每 100 秒测量一次温度的传感器。 例如,每 300S 醒来后需 0.3~1s 连上 AP 发送数据 , 则整体平均电流可远小于 1mA 。 2、 问: ESP8266 低功耗注意事项? 答: ESP8266 低功耗只针对 station 模式,对于 softAP 则没有低功耗。 目前实现的低功耗为 modensleep 模式和 deepsleep 模式, modemsleep 目前没有接口控制,自动开启,依据所连 AP (路由器)的设置支持 DTIM ; deepsleep 的接口为 system_deep_sleep ,设置每休眠多久醒来一次。 3.7. 网络连接 7、 问:最多可以建立几个网络连接? 答: TCP 连接最多可以建立 5 个; UDP 连接最多可以建立 5 个。可同时建立 5 个 TCP 连接和 5 个 UDP 连接。 请注意,目前 IOT_Demo 只能建一个 UDPserver ,如需多建 UDPserver ,需要向乐鑫申请开放 lwip 的源代码进行修改。 8、 问: UDPserver 的注意事项? 答:目前 IOT_Demo 只能建一个 UDPserver ,如需多建 UDPserver ,需要向乐鑫申请开放 lwip 的源代码进行修改。 9、 问: ESP8266 作为 station 连入路由后,没有被分配到 IP 地址? 答:查证是否建立了一个以上的 UDPserver ,目前 IOT_Demo 只能建一个 UDPserver ,如需多建 UDPserver ,需要向乐鑫申请开放 lwip 的源代码进行修改。 10、 问: ESP8266 作为 tcpclient ,某些工具作为 tcpserver ,连接断开却会重连。 答:使用 TCPUDPDebug 这个工具做 server 即可。这个问题是因为某些网络调试工具,在断开连接时没有实现完整的 TCP 退出流程,如果不走完整的 TCP 退出流程, ESP8266 会判断为异常断开,对 TCPserver 进行重连。 11、 问: ESP8266 是否支持 iperf ,如何测试网络吞吐量? 答: ESP8266 不支持使用 iperf ,可以参照文档“ EspressifIoTSDK 编程手册”中的 espconn 系列接口自行编写程序测试。另,我司内部测试过网络吞吐量,可发邮件向我司申请提供网络吞吐量的测试结果。 3.8. AT 透传 1 、 问: ESP8266AT 透传的通信能力? 答:在硬件流控情况下,数据不丢失,速度 11kbits/s, 基本达到串口极限 2 、 问:使用工具测试,无法退出透传? 答:注意,如果直接用键盘打字输入 +++ ,有可能时间太慢,不被认为是连续的三个 + ,建议使用如下工具: 字符串输入框 : +++ 发送新行: 不要勾选 点击发送 3.9. AT 指令常见问题 1 、问: AT+CIPCLOSE 无法成功断开? 答:使用 TCPUDPDebug 这个工具做 server 即可。这个问题是因为某些网络调试工具,在断开连接时没有实现完整的 TCP 退出流程,如果不走完整的 TCP 退出流程, ESP8266 会判断为异常断开,对 TCPserver 进行重连。 2 、 问: AT 测试指令的用途? 答:测试指令是提供给用户作为指令格式帮助,但是帮助格式很占内存所以没有写完整,有些指令没有写测试指令,有些指令只留了 OK 作为响应。测试指令不会对模块进行操作。 3 、问: AT+CIPSEND 发送数据时,提示 busy 。 答:在 AT+CIPSEND 发送数据时,回车符号也会被认为是一个数据字节, 若发送字节数,超过设置字节数,会提示 busy ,并将多余数据丢弃,不影响设定字节范围内的数据发送。 4、 云端服务 有关 Espressif 服务器的所有 API ,可在网站查询: http://iot.espressif.cn/#/api/ 4.1. 基本问题 1 、 问:网站使用简介,及 master-device-key.bin 如何申请? 答:参考文档“ EspressifCloudIntroduction ” ,推荐使用 chrome 浏览器下载 master-device-key.bin 。 4.2. 云端升级 1 、 问:固件云端升级成功之后,重启自动运行新固件吗? 答:要调用 system_upgrade_reboot ;不调用就不会切换 2 、 问:客户自建服务器,怎样进行云端升级? 答:客户可以自建服务器,参照文档“云端升级实现方案”第 5 章 软件实现,调用其中的接口,通过 httpurl ,实现云端升级。若用 httpsurl 的话,需要服务器支持 MaximumFragmentLengthNegotiation ,否则内存占用太大。
个人分类: ESP8266 WIFI|7668 次阅读|3 个评论

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-2-23 04:32 , Processed in 0.095675 second(s), 8 queries , Redis On.

Powered by EEWORLD电子工程世界

© 2018 http://bbs.eeworld.com.cn/

返回顶部