ESP12必须用开发板才能烧写jlink固件烧写么?直接接串口线能否烧录

查看: 24454|回复: 9
漫谈Microduino WIFI ESP8266 之一 烧写AT固件
本帖最后由 topdog 于
21:29 编辑
Microduino WIFI ESP8266 采用乐鑫信息科技(上海)有限公司 (Espressif Systems (Shanghai) Pte., Ltd.) 生产的ESP8266EX。ESP8266EX 提供完整且自成体系的 Wi-Fi 网络解决方案;它能够搭载软件应用,或者通过另一个应用处理器卸载所有 Wi-Fi 网络功能。当ESP8266作为设备中唯一的处理器搭载应用时,它能够直接从外接闪存(Flash)中启动,内置的高速缓冲存储器(cache)有利于提⾼高系统性能,并减少内存需求。另一种情况,ESP8266可作为 Wi-Fi 适配器,通过 UART 或者 CPU AHB 桥接连接到任何基于微控制器的设计中,为其提供无线上网服务,简单易行。ESP8266EX 高度片内集成,包括:天线开关,RF balun,功率放大器,低噪放大器,过滤器,电源管理模块,因此它仅需很少的外围电路,且包括前端模块在内的整个解决方案在设计时就将所占 PCB空间降到最低。ESP8266EX 集成了增强版的 Tensilica’s L106 钻石系列32位内核处理器,带片上 SRAM。ESP8266EX 通常通过 GPIO 外接传感器和其他功能的应用,SDK 中提供相关应用的示例软件。ESP8266EX 系统级的领先特征有:节能VoIP在睡眠/唤醒之间快速切换,配合低功率操作的自适应无线电偏置,前端信号处理,故障排除和无线电系统共存特性为消除蜂窝/蓝牙/DDR/LVDS/LCD干扰。ESP8266最小系统电路非常简单。仅需一颗外置的FLASH芯片,晶振以及少量的电容电阻即可构成最小系统。目前国内外应用这个芯片做模块的厂家很多。深圳安信可是做的比较成功的一家,AI是他们公司的商标,所有的秘密就隐藏在铁壳屏蔽罩下面,就像乐鑫ESP8266穿了件安信可的马甲,外面又套了件Microduino牌的透视装。另外还有个第三者NODEMCU基于安信可的模块,然后开发SDK固件,所以ESP8266的圈子比较凌乱。
IMG_7966.JPG (137.92 KB, 下载次数: 14)
14:58 上传
本节我们主要讨论为Microduino WIFI ESP8266 刷入v0.9.5.2 AT Firmware固件。下面请出一位重要配角EtOH为Microduino制作的刷机伴侣,这个设计很聪明,完全可以获得红点奖。CP2012usb2ttl增加了俩个编码开关,其中一个可以选择串口rx和tx是否交叉,而另一个可以选择串口映射到串口0还是串口1。这种设计可以更方便的调试各类模块,检测模块间的通讯状态。本实验中左拨盘为一,右面拨盘为1,每个小拨盘上面是1,下面为0,从左到右,这样就实现了rx和tx不交叉,串口1的工作状态。ESP8266此位置是UART0,D2是TX, D3是RX。
IMG_7964.JPG (167.31 KB, 下载次数: 12)
14:58 上传
两个模块层叠后的效果。
IMG_7968.JPG (123.75 KB, 下载次数: 8)
14:58 上传
Microduino WIFI ESP8266模块型号应该为ESP-6,板子上面有两个焊点一个是work,一个是down。下载固件需要把down焊住。下面的原理图可见GPIO0 为低电平,系统经过串口进入FLASH升级新程序状态。烧写结束截断down焊点系统恢复运行正常。还有个方法也是最简单的即是GND用杜邦线连到GPIO0,位置在down焊点的上方的小洞里面,也可以刷机。
tuzhi.JPG (32.51 KB, 下载次数: 15)
15:58 上传
烧录软件用ESP8266Flasher-x86-v0.9.2.4这是一款自动的傻瓜式的软件,模块组层叠好插到usb槽中,操作界面自动识别串口。
IMG_7959.JPG (128.55 KB, 下载次数: 11)
14:58 上传
1.JPG (40.44 KB, 下载次数: 13)
14:54 上传
配置界面点齿轮找到固件,后面是FLASH的对应位置选0x00000
2.JPG (43.64 KB, 下载次数: 12)
14:54 上传
操作界面界面点击一键烧写,自动识别芯片的MAC
3.JPG (48.51 KB, 下载次数: 8)
14:54 上传
观看日志界面可以看到进程的情况,直到操作界面进程条到头,左下角会有个绿色的勾出现就说明固件刷好了。
4.JPG (39.97 KB, 下载次数: 7)
14:54 上传
把down的焊点去除,模块组层叠好插到usb槽中。PC机的无线网卡可以搜索到Microduino WIFI ESP8266发出的wifi信号AI-THINKER。AI-THINKER SSID后面的六位数是和芯片的MAC相对应的。
5.JPG (29.84 KB, 下载次数: 12)
14:54 上传
再用安信可的ESP8266调试工具V2.2来看看固件的稳定性,波特率设置为115200,打开com口,数据接收口会有乱码,之后是ready,说明系统准备好了,按左面常用命令测试AT,右面回复为ok。这个固件不要改变波特率,默认设置为115200,改的话后果很严重会死机,但是不要惊慌重新刷一遍固件就可以解决。
6.JPG (151.67 KB, 下载次数: 18)
14:54 上传
再复位重启一下AT+RST,右面回复了铁壳下面的小秘密。
7.JPG (29.15 KB, 下载次数: 7)
14:54 上传
Microduino WIFI ESP8266运行非常稳定,重启,恢复出厂设置都能正常运行,无乱码现象。
16:07 上传
点击文件名下载附件
4.12 MB, 下载次数: 914
大神真有效率,不久前才看你写的cc3k,这么快就出8266了
wing 发表于
大神真有效率,不久前才看你写的cc3k,这么快就出8266了
cc3000早就到手了,一直没写。
楼主写的太好了,赞!
starwood 发表于
楼主写的太好了,赞!
谢谢你的鼓励。
学习学习学习学习
蹲蹲兄,关于ESP 8266的固件请教:(比如我现在是12F),我想在ARDUINO IDE下玩,也就是把8266当作一片具有wifi的MCU玩,那么与固件有关系吗?如果有,应该选择哪种固件呢?安信可的AT固件吗?我刚入手一片没,能用(出厂默认的固件,我估计是AT固件),但我想了解一下。
本帖最后由 topdog 于
21:32 编辑
蹲蹲兄,关于ESP 8266的固件请教:(比如我现在是12F),我想在ARDUINO IDE下玩,也就是把8266当作一片具有 ...
esp8266有4种玩法:1,乐鑫官方的sdk,Windows下cygwin的,linux的基于toolchain,固件主要是乐鑫官方的nonos和rtos,当然还有其他公司提供的二次开发2,用arduino ide for esp8266写程序;3,esp8266刷AT命令结合arduino core实现控制 4,是基于micropython
上述固件刷入的方法一样,语言就看你的应用习惯了。
我的三片8266 12f已经shua了两种,arduino 方式和micropython,很好玩啊。少不得请教你今后。
我的三片8266 12f已经shua了两种,arduino 方式和micropython,很好玩啊。少不得请教你今后。
正好做了个esp8266 12f测量am2301测量温度湿度上传iot.doit.am,用arduino ide for esp8266写的,和你分享一下。
Powered by现在位置:
SDK编译环境安装包的安装、编译与烧录教程
【支持最新版AT、IOT及LUA源码编译,附源码】
1、安装包Fans_ESP8266_SDK_Make.exe
下载地址:http://pan.baidu.com/s/1pJ6w1tD
安装后在C盘下生成三个文件夹:c:\python27、c:\usr、c:\ESP8266_SDK_Fans_V2.0【最新固件源代码】
安装前确认之前没有安装过xtensa,如果安装过则请:
同时确定电脑的系统时间为最新的(不要设置成过去的日期和时间,如日。)
然后,点击Fans_ESP8266_SDK_Make.exe进行安装
注:一定要选择默认安装,即:C:\
注:安装过程中提示,选择确定与允许即可。
完成安装后,将
C:\usr\xtensa\XtDevTools\install\tools\RC-2010.1-win32\XtensaTools\Tools\lic\license.dat
编辑修改里面的两个HOSTID=后面的值为本电脑的MAC值(即物理地址),保存即可完成注册。
将SDK的源代码复制,这里分三种情况,具体操作如下:
(1)如果是AT源代码,则只需要拷贝AT文件夹里的三个文件夹driver、include、user到C:\usr\xtensa\esp_iot_sdk\app里面。
注:只拷贝这三个文件夹的文件,其他不需要。
(2)如果是IOT源代码,则需要拷贝以下几个文件夹:
到C:\usr\xtensa\esp_iot_sdk\app里面,其他的不需要拷贝。
(3)如果是LUA源代码,则需要拷贝以下几个文件夹:
到C:\usr\xtensa\esp_lua_sdk\app里面,其他的不需要拷贝。
然后,运行C:\usr\install里的xtensa_IOT或者xtensa_LUA
在命令提示符状态下输入:cd app
接着,输入make clean指令对编译环境进行清除(进行两次清除操作)。
然后输入make指令对源代码进行编译操作
编译成功后(无错误提示,特别是代码的编译错误),输入makebin,最终输出Fans_SDK_flash.bin固件。
编译成功,最终输出Fans_SDK_flash.bin固件。
(存放在C:\usr\xtensa\esp_iot_sdk\bin\Fans_SDK_flash.bin)
最后,将固件烧录。
固件接线方法:采用USB转TTL串口连接模块与PC
VCC----à3.3
GND--àGND
CH_PD--à3.3
GPIO0--àGND
其余引脚为空。
模块上电后,确保电脑的串口只有模块一个,然后输入burnbin,进入烧录,进度完成后,烧录固件完成。
或者使用ESP8266一键烧写工具-显MACv0.91-x86.exe进行烧录:
先把固件导入到INTERNAL://FLASH这个选项中。
最后点击一键烧写:
本安装包纯绿色安装,如果不需要这个编译环境,可以直接删除以下三个文件夹就完成卸载。
C:\python27
C:\ESP8266_SDK_Fans_V2.0【最新版SDK代码】
固件启动运行接线方法:采用USB转TTL串口连接模块与PC
VCC----à3.3
GND--àGND
CH_PD--à3.3
其余引脚为空。
如有什么问题请联系: Q群【ESP8266开发与应用】
LUA源码开发教程
NodeMcu介绍:(一) 概述
NodeMcu是什么?
NodeMcu是一款运行于乐鑫ESP8266芯片之中的可编程固件。
它以lua语言为基础,同时提供了封装esp8266硬件操作的高级API,可以让开发者以类似于arduino的方式与底层硬件打交道,使软件开发人员轻松操作硬件设备;同时NodeMcu还提供了事件驱动型的网络API,Nodejs风格的编程方式更是让互联网开发人员如鱼得水。
目前NodeMcu推出的第一代开发板NodeMcu Dev Kit,对安信可科技推出的esp8266封装模块ESP12进行扩展,包括了:
D1~D10:均可复用为GPIO,PWM,I2C,1-Wire
A0:1路ADC
USB转串口调试接口
可用RAM为20Kbyte;目前采用512K FLash,用户可用存储空间150Kbyte。同时使用NodeMcu Flash Programmer自动烧写固件。
低成本的ESP8266硬件、高度抽象NodeMcu API将助推众多开发者们的创造性想法,让您的原型开发快速推进!
NodeMcu介绍:(二)固件烧写
准备工作:
一、拿到NodeMcu的开发板
NodeMcu开发板基于乐鑫esp8266进行拓展,引出常用管脚,方便使用者进行基于NodeMcu-firmware的原型开发。
二、下载 NodeMcu Frimware Programmer
NodeMcu提供了烧写固件的专用工具,根据您的操作系统可以选择下载
三、下载NodeMcu固件
最新版的NodeMcu固件,请下载。
四、一根micro-USB数据线
一、使用USB数据线连接计算机与NodeMcu开发板。
第一次连接时,计算机会弹出安装驱动的提示,请搜索下载CH340的驱动,可以在计算机-&设备管理器中查看USB转serial是否安装成功。
二、运行NodeMcu Firmware Programmer烧写固件
NodeMcu Firmware Programmer(以下简称NFP)提供了NodeMcu Firmware的自动烧写功能,在成功连接计算机与NodeMcu开发板之后,打开NFP并选择Config选项,点击第一栏的 ,选择已经下载的NodeMcu固件。如图所示
然后选择“Operation”,出现如下图状态:点击“Flash”,进行固件烧写。状态如下:等待烧写结束,如下至此,NodeMcu固件已经烧写至NodeMcu开发板。关闭NFP,断开USB连线。
三、打印Hello world
再次连接计算机与NodeMcu开发板,打开调试软件,推荐使用Tera Term,初次打开TeraTerm需进行简单配置,SeraialPort选择设备管理器中显示的CH340USB转串口的端口号。点击OK进入主界面。
print("hello world")
NodeMcu响应如下:
至此,NodeMcu Firmware已经正式运行在NodeMCU开发板中,您可以通过我们提供的进行原型开发,Good Luck!
NodeMcu介绍:(三)启动文件init.lua
启动过程中的init.lua
如图所示,当用户重新供电或者执行node.restart()函数之后,NodeMcu Firmware将会重新启动,启动过程中的最后一步是执行init.lua文件,如果在NodeMcu中不存在此文件,或者此文件内容不可执行,则会弹出如上图中的lua:cannot open init.lua。
如果用户想要在启动后自动执行用户自己的代码,那么可以在init.lua写入最简单的dofile("yourfile.lua")即可。NodeMcu在下次重新启动之后,便可自动跳转执行“yourfile.lua” ,达到类似于bootloader的作用,当然用户也可以在init.lua中写入其他的lua代码,如:可以进行wifi设置,获取ip等操作。
具体代码如下:
file.open("init.lua","w+")
file.writeline([[print("hello world")]])
file.close()
文件操作函数请参考Tera Term中显示如下
然后执行 node.restart(),NodeMcu将会重新启动,并自动执行init.lua,执行效果如下:
NodeMcu介绍:(四)下载*.lua文件
在前一篇文章中我们介绍了如何使用"init.lua"文件,要注意的是我们通过NodeMcu固件提供的file模块相关函数创建、修改并保存"init.lua"文件,我们的文件内容只有一行代码“print("hello world")",通过调试窗口TeraTerm即可进行上述操作,但是当文件中有较多的代码后,上述通过调试窗口逐行输入的方式就不合适了,下面我们就介绍一下如何通过NodeMcu Studio 2015进行代码下载。
关于NodeMcu Studio 2015
NodeMcu Studio 2015是用于NodeMcu固件下载用户代码的工具软件,目前仅支持Windows 7和Windows XP(需要安装.Net FramWork 4.0)。用户需要将已经编写好的*.lua代码复制到文件目录下的”Lua Programs“文件夹下,然后运行NodeMcu Studio 2015.exe,配置串口,并在文件栏中选择需要下载的文件,点击”Download“,下载至NodeMcu。
准备*.lua代码
用户需要预先编辑好要下载的lua代码文件,此处我们新建了"init.lua"和"list.lua",代码分别如下:
--init.lua
print("set up wifi mode")
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PassWord")
--here SSID and PassWord should be modified according your wireless router
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip()== nil then
print("IP unavaiable, Waiting...")
tmr.stop(1)
print("Config done, IP is "..wifi.sta.getip())
--dofile("yourfile.lua")
--list.lua
l = file.list();
for k,v in pairs(l) do
print("name:"..k..", size:"..v)
其中init.lua用于设置nodemcu wifi的工作模式并获取ip,再成功获取ip之后,可以选择执行dofile("yourfile.lua");list.lua文件用于列出nodemcu文件系统中当前的文件。将这两个文件复制到Lua Programs文件夹中。
运行NodeMcu Studio 2015.exe文件
运行软件,并在All Programs一栏中选择init.lua,点击Download,直至出现如下界面,文件成功下载至NodeMcu。
然后同样的,将list.lua文件也下载至NodeMcu中
关闭NodeMcu Studio 2015.exe
测试下载文件
打开TeraTerm,输入:
node.restart()
出现如下界面:init文件执行成功。
然后执行:
dofile("list.lua")
执行结果:列出当前文件为init.lua和list.lua
获取NodeMcu Studio 2015
现在,您可以通过我们提供的简单开发工具NodeMcu Studio 2015进行代码下载,获取地址: (19.7 KB)
现在就编辑你自己的lua代码,把想法付诸实现吧!
NodeMcu 编程示例:读取气压计bmp085的数据
bmp085介绍
BMP085大气压传感器是一款廉价的精密气压、温度传感器,使用I2C通讯协议,使用方便,其主要参数:
· 压力传感器范围:300-1100 hPa(对应海拔9000米 至 -500米)
· 分辨率: 0.03hpa/0.25米
· 温度传感器范围:-40℃ +85℃ ±2℃误差值
· I2C数据接口
· 3.3V 5V双电平方案
NodeMcu采集bmp085代码
------------------------------------------------------------------------
-- BMP085 I2C module for NODEMCU
-- NODEMCU TEAM
-- LICENCE: http://opensource.org/licenses/MIT
-- Christee &&
------------------------------------------------------------------------
local moduleName = ...
local M = {}
_G[moduleName] = M
--default value for i2c communication
local id=0
--default oversampling setting
local oss = 0
--CO: calibration coefficients table.
local CO = {}
-- read reg for 1 byte
local function read_reg(dev_addr, reg_addr)
i2c.start(id)
i2c.address(id, dev_addr ,i2c.TRANSMITTER)
i2c.write(id,reg_addr)
i2c.stop(id)
i2c.start(id)
i2c.address(id, dev_addr,i2c.RECEIVER)
local c=i2c.read(id,1)
i2c.stop(id)
--write reg for 1 byte
local function write_reg(dev_addr, reg_addr, reg_val)
i2c.start(id)
i2c.address(id, dev_addr, i2c.TRANSMITTER)
i2c.write(id, reg_addr)
i2c.write(id, reg_val)
i2c.stop(id)
--get signed or unsigned 16
--parameters:
--reg_addr: start address of short
--signed: if true, return signed16
local function getShort(reg_addr, signed)
local tH = string.byte(read_reg(0x77, reg_addr))
local tL = string.byte(read_reg(0x77, (reg_addr + 1)))
local temp = tH*256 + tL
if (temp & 32767) and (signed == true) then
temp = temp - 65536
return temp
-- initialize i2c
--parameters:
function M.init(d, l)
if (d ~= nil) and (l ~= nil) and (d &= 0) and (d &= 11) and (l &= 0) and ( l &= 11) and (d ~= l) then
print("iic config failed!") return nil
print("init done")
i2c.setup(id, sda, scl, i2c.SLOW)
--get calibration coefficients.
CO.AC1 = getShort(0xAA, true)
CO.AC2 = getShort(0xAC, true)
CO.AC3 = getShort(0xAE, true)
CO.AC4 = getShort(0xB0)
CO.AC5 = getShort(0xB2)
CO.AC6 = getShort(0xB4)
CO.B1 = getShort(0xB6, true)
CO.B2 = getShort(0xB8, true)
CO.MB = getShort(0xBA, true)
CO.MC = getShort(0xBC, true)
CO.MD = getShort(0xBE, true)
--get temperature from bmp085
--parameters:
--num_10x: bool value, if true, return number of 0.1 centi-degree
-- default value is false, which return a string , eg: 16.7
function M.getUT(num_10x)
write_reg(0x77, 0xF4, 0x2E);
tmr.delay(10000);
local temp = getShort(0xF6)
local X1 = (temp - CO.AC6) * CO.AC5 / 32768
local X2 = CO.MC * 2048/(X1 + CO.MD)
local r = (X2 + X1 + 8)/16
if(num_10x == true) then
return ((r/10).."."..(r%10))
--get raw data of pressure from bmp085
--parameters:
--oss: over sampling setting, which is 0,1,2,3. Default value is 0
function M.getUP_raw(oss)
local os = 0
if ((oss == 0) or (oss == 1) or (oss == 2) or (oss == 3)) and (oss ~= nil) then
local ov = os * 64
write_reg(0x77, 0xF4, (0x34 + ov));
tmr.delay(30000);
--delay 30ms, according to bmp085 document, wait time are:
-- 4.5ms 7.5ms 13.5ms 25.5ms respectively according to oss 0,1,2,3
local MSB = string.byte(read_reg(0x77, 0xF6))
local LSB = string.byte(read_reg(0x77, 0xF7))
local XLSB = string.byte(read_reg(0x77, 0xF8))
local up_raw = (MSB*65536 + LSB *256 + XLSB)/2^(8 - os)
return up_raw
--get calibrated data of pressure from bmp085
--parameters:
--oss: over sampling setting, which is 0,1,2,3. Default value is 0
function M.getUP(oss)
local os = 0
if ((oss == 0) or (oss == 1) or (oss == 2) or (oss == 3)) and (oss ~= nil) then
local raw = M.getUP_raw(os)
local B5 = M.getUT(true) * 16 - 8;
local B6 = B5 - 4000
local X1 = CO.B2 * B6 / 4096
local X2 = CO.AC2
local X3 = (X1 + X2)*B6/2048
local B3 = CO.AC1*(2^os) + (X3*2^os + 2)/4 --local B3 = ((CO.AC1*4 + X3)*2^os + 2)/4
X1 = CO.AC3 -- * B6 /8192
X2 = CO.B1 * B6 /32768 -- * B6 / 8192
X3 = ((X1 + X2)*B6/8192 + 2)/4
local B4 = CO.AC4 * (X3 + 32768) / 32768
local B7 = (raw -B3) * (50000/2^os)
local p = B7/B4 * 2
X1 = (p/256)^2
X1 = (X1 *
X2 = (-7357 *p)/65536
p = p +(X1 + X2 + 3791)/16
--get estimated data of altitude from bmp085
--parameters:
--oss: over sampling setting, which is 0,1,2,3. Default value is 0
function M.getAL(oss)
--Altitudi can be calculated by pressure refer to sea level pressure, which is 101325
--pressure changes 100pa corresponds to 8.43m at sea level
return (M.getUP(oss) - 3/10000
bmp085采集代码以模块的形式编写,提供了5个对外调用的函数:
init(sda, scl) --初始化I2C总线
getUT() --返回温度
getUP_raw() --返回未校准的气压值
getUP() --返回校准后的气压值
getAL() --返回计算高度
将文件命名为bmp085.lua,并使用NodeMcu Studio 2015下载到NodeMcu中,然后打开TeraTerm进行测试。
调用bmp085模块,并获取数据
重新启动NodeMcu
node.restart()
当init.lua执行完毕之后,输入如下代码,引用bmp085模块:
b=require "bmp085"
执行初始化操作:
b.init(8,9) --这里要用户根据需求映射sda 和 scl到NodeMcu的 IO
然后调用getUT(), getUP(), getAL(),获取响应的数据,结果如下:如上图,所处环境的温度19.0摄氏度,气压值102596Pa,海拔高度107m(高度为估算值)。
释放bmp085模块
模块引用完毕之后,请及时释放bmp85所占用的内存,释放方法为:
b = nil --此处b因为用户定义的变量
bmp085 = nil
package.loaded["bmp085"] = nil
释放之前和释放之后的内存对比:本设计分享的是ESP8266小黄板设计资料,见附件下载其原理图/APK/IoT固件等。ESP8266小黄板电路采用ESP-12无线模块,该工业级ESP-12小黄板使用使用说明:1. Android手机安装IOT.APK 苹果手机端稍后发布;2. 短路帽接上后,上电进入烧写模式;拿掉后,进入正常运行状态;3. 装上电池后,手机搜索到由开发板发出的热点AP:AI-THINKER;4.手机加入这个AP,密码是:ai-5. 加入成功后就可以用手机直接控制模块了;6. 在“配置设备”里输入家用路由器“SSID”和“密码”,点击上方的路由器图标,跳转后等待片刻即可加入路由器,手机连接路由器WiFi,再次“发现设备”即可实现在局域网内控制。ESP8266小黄板原理图截图:
没有更多数据!Stay Hungry, Stay Foolish.
ESP8266-12F WIFI转串口模块底板设计
一、ESP8266-12F模块简介
ESP8266-12F 是ESP8266-12的增强版,完善外围电路,四层板板工艺,增强阻抗匹配,信号输出更佳,无论是稳定性还是抗干扰能力,PCB天线经过专业实验室测试,完美匹配,经过ROHS认证,都得到了大幅度的提升!对于之前选择ESP-12的用户,即使已经做出产品也没关系,增强版完全兼容之前固件,引脚在 ESP-12的基础上又新增六个IO口、SPI口引出,开发更加便捷,应用更加广泛。
二、模块底板设计
由于模块为了减小体积,采用邮票孔封装,但是这种设计不方便工程师调试软件,所以需要将其安装在底板上(如下图所示),并引出通信接口,方便调试使用。
图片来自网络,侵删
如果没有条件制作底板,也可在邮票孔周围焊接插针、外围电子元件等。其原理图如下
三、带底板模块与电脑链接
串口模块与电脑链接需要USB转串口模块作为协议转换介质,为了稳定的调试该模块,我们推荐使用CP2102转串口模块或者其他更稳定的串口模块(非广告,自用)
首先需要把带底板的8266模块的电源与串口模块的电源相连,其次需要将其串口交错相连。示意图如下
然后将串口模块插到电脑的USB接口上,在电脑上使用串口调试助手发送AT指令,检查串口模块是否正常工作。
默认工作波特率为位停止位,8位数据,无校验。此参数可使用AT指令调整。
常见问题:
(1)串口返回 “ERROR”
检查外围电路是否正确,波特率配置是否正确。
(2)模块指示灯常亮或者电脑无法识别串口
串口模块供电不足,使用外部供电或者使用供电能力在200ma以上的串口模块。
(3)串口返回乱码
检查波特率配置是否正确,同时需要检查供电是否充足,因为供电不足也会导致返回乱码。
四、模块与单片机的链接
根据该模块的设计特性,最终将会应用在单片机与网路的通信上,所以我们需要将模块与单片机相连进行开发、调试工作。与单片机链接和与电脑链接类似,但是要注意供电是否充足,否则将导致模块不能正常工作。
没有更多推荐了,

我要回帖

更多关于 jlink固件烧写 的文章

 

随机推荐