[8266]2.开发之前要了解的事实

 

原创 比特 找小黑

 

[8266]2.开发之前要了解的事实_第1张图片

让我们一起用esp8266做一些好玩的东西吧
 

 

再次认识ESP8266

 

[8266]2.开发之前要了解的事实_第2张图片

  • ESP8266EX内置超低功耗 Tensilica L106 32-bit RISC 处理理器器,CPU 时钟速度最⾼高可达160 MHz,⽀支持实时操作系统 (RTOS) 和 Wi-Fi 协议栈。

  • ESP8266EX内置64KB iRAM(用来执行代码)和96K dRAM(用来存储数据)。

  • ESP8266EX使用外置 SPI flash 存储⽤户程序和数据。理论上最⼤可⽀持 16 MB 的存储。

  • ESP8266EX 支持 TCP/IP 协议,完全遵循 802.11 b/g/n WLAN MAC 协议,支持 STA (连接路由器)和 SoftAP (作为热点,手机可以连接)。

  • 有各种外设接口:GPIO、SDIO、SPI、IIC、IIS、UART(串口)、PWM、IR 遥控接⼝、ADC(模/数转换器器)。

和任何一个单片机一样,我们用编程控制它拥有的资源,也就是利用CPU和内存执行程序控制外设,可通过8266的引脚相连更多的设备。关于CPU+内存的原理,如果有不了解的可以看我之前的文章[我-计算机](公众号首页->计算机->原理)。

 

和一般单片机最大的不同就是,它支持wifi,稍微夸张的说:它将无所不能。

 

最后说一点,市面上有很多esp8266的模块,都是集成了ESP8266EX,只是样子不同、引出的引脚多少不同、外接的Flash大小不同、或者集成了USB转串口芯片(如果你有USB转串口模块这个就没必要,我就不喜欢集成USB转串口的板子,额外占了空间)

 

顺便说说我使用的USB转串口:CP2102

[8266]2.开发之前要了解的事实_第3张图片

 

 

 

 

 

搭建开发环境

 

 

ESP8266目前支持很多种开发方式,我们这里关注的是官方推荐idf风格的开发。idf方式开发有很多优点:

  1. 这是最原生的开发方式,可以控制的资源最多,也最灵活。

  2. 相比很多MicroPython、lua等脚本语言开发运行效率高很多,之前用脚本语言开发,明显感觉卡顿。

  3. 乐鑫最新的ESP32也是使用idf风格,所以熟悉了8266的开发,几乎可无缝平移到ESP32。

  4. 产品开发基本使用idf方式,所以为找工作带来优势。

  5. 最重要的是,这种原生的开发,能学到很多原理,如果搞个图形界面,你可能开发了很多应用,还是有很多不清楚的地方。

 

我们接下来就开始在ubuntu linux下搭建ESP8266开发环境。

(windows和mac的用户可以参考官方教程:https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/index.html)

 

1. 安装工具链(就是把代码编译成能烧写到8266的bin文件的工具)

#安装依赖sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial
#从下列地址下载工具链    for 64-bit Linux:    https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
    for 32-bit Linux:    https://dl.espressif.com/dl/xtensa-lx106-elf-linux32-1.22.0-100-ge567ec7-5.2.0.tar.gz
#下载并解压工具mkdir -p ~/espcd ~/esptar -xzf ~/Downloads/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
#将工具链加入环境变量#在  ~/.bashrc 最后加入下面一行export PATH="$PATH:$HOME/esp/xtensa-lx106-elf/bin"
#为了更方便的使用USB转串口,执行下面命令sudo usermod -a -G dialout $USERsudo chmod -R 777 /dev/ttyUSB0

 

2. 下载SDK (idf风格)

#下载SDKcd ~/espgit clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git
#配置PATH#在  ~/.bashrc 最后加入下面一行export IDF_PATH="$HOME/esp/ESP8266_RTOS_SDK"
#然后执行python -m pip install --user -r $IDF_PATH/requirements.txt

 

3. 创建一个工程

#拷贝官方的hello world工程cd ~/esp  //这个是拷贝到 esp目录下,实际上可以拷贝到任何地方cp -r $IDF_PATH/examples/get-started/hello_world ./
#配置项目cd ~/esp/hello_worldmake menuconfig

make menuconfig会看到这样的界面

[8266]2.开发之前要了解的事实_第4张图片

可以在蓝色的选项中选择flash的大小(这里是选择编译的目标板子信息,选的比实际小就没问题,不能比实际大),为了加快烧写速度,可以将串口波特率改为921600(默认115200)。

 

4. 编译并烧写(具体连接方法见后文)

#用USB转串口连接好ESP8266make flash

 

5. 查看log(连线方式有别于步骤4,详情见后文)

#改变连线,重启后运行make monitor

 

 

 

 

 

接线方式

 

 

[8266]2.开发之前要了解的事实_第5张图片

看上面的原理图,虽然写的07/08/12E的最小系统,前面说过其实所有的模块都一样。


22引脚为8266 TX引脚-----连接-----USB转串口RX引脚

21引脚为8266 RX引脚-----连接-----USB转串口TX引脚

8266的地线------------------连接-----USB转串口的地线

这样就可以传输数据了,我一般会把8266电源正极接USB转串口3.3V为其供电。

 

这里要说的是:

如果GPIO0(18引脚)接地上电,8266就会进入烧写模式,对应以上步骤4。

如果GPIO0(18引脚)接地上电,8266就会正常启动,对应以上步骤5。

 

在网上找了个01模块的连线图(是不是都一样阿)

[8266]2.开发之前要了解的事实_第6张图片

 

 

 

 

 

 

启动流程和Flash分区

 

 

这里不打算详细的说明,只要明白大概的执行流程就行。

 

模块上电默认执行内部ROM的程序,根据GPIO0(也有其他)的状态判断进入哪种模式,

如果进入烧写模式就接收串口来的数据,写入flash;

如果正常启动就会执行0地址处的bootloader,bootloader根据0x8000处的分区表执行0x10000处的用户APP(这里可能不严谨,但不影响使用)。

 

三块橙色的分别为bootloaer、分区表、我们自己编译的程序(APP)。

关于分区表更详细的内容后面再说。

 

 

----------我是比特,一个想把问题搞清楚的青年才俊----------

公众号:find_xiaohei 
及时更新,博客不定期更新

[8266]2.开发之前要了解的事实_第7张图片

你可能感兴趣的:(ESP8266)