今天收到了等了两周的W801开发板, 和W806开发板外观基本一致, 但是元件布局有调整, W801和W806开发板的实物对比
两个芯片核心完全一样, 芯片布局基本一致, 看差异就能大致了解W801的配置
W801的规格书
增加的WIFI和蓝牙的描述
Wi-Fi 特性
蓝牙特性
低功耗模式
W801的规格书增加了PIN脚频率和驱动能力栏, 各个PIN的最高频率是有区别的, 从10MHz到80MHz不等, 从后面的功能描述看, 与W806是一致的, 因此猜测此频率描述也适用于W806
W806和W801并非pin-pin兼容, 从PIN#5到#9这5个PIN对应的功能是不同的, 具体区别如下
W806
板载三颗LED,分别对应PB0, PB1, PB2, 都是对应PWM复用的PIN脚,
W801
板载七颗LED, 分别对应PB5, PB25, PB26, PB18, PB17, PB16, PB11, 但是里面对应PWM复用的只有PB25和PB16, 所以没法像W806那样演示流水灯了
W801除了将MicroUSB换成了Type-C, 还增加了Reset, 5V以及多组3.3V和GND的排线引出, 这个比较不错, 在W806上没有5V引出, 如果有5V外设的话比较不方便
W801增加了板载天线, 因此比W806长出了一截天线的长度
代码部分, 现在W806可用的代码, 都可以运行在W801上, 无线部分需要等SDK中加入对这部分外设的支持. 这里说一下W801的烧录下载.
这块W801开发板在下载上和W806有一些区别. W801内置了串口的RTS控制, 因此带来一些问题, 暂时不能判断是设计问题, 还是属于我的使用方式不对:
使用W806的SDK下载烧录W801时, 需要将rules.mk中的-rs参数修改一下, 从at
改为rts
, 就能对W801开发板写入了
run:all
@$(WM_TOOL) -c $(DL_PORT) -rs rts -ds $(DL_BAUD) -dl $(FIRMWAREDIR)/$(TARGET)/$(TARGET).fls -sl str -ws 115200
monitor:
@$(WM_TOOL) -c $(DL_PORT) -sl str -ws 115200
list:
@$(WM_TOOL) -l
down:
@$(WM_TOOL) -c $(DL_PORT) -rs rts -ds $(DL_BAUD) -dl $(FIRMWAREDIR)/$(TARGET)/$(TARGET).fls
image:all
@$(WM_TOOL) -c $(DL_PORT) -rs at -ds $(DL_BAUD) -dl $(FIRMWAREDIR)/$(TARGET)/$(TARGET).img
flash:all
@$(WM_TOOL) -c $(DL_PORT) -rs rts -ds $(DL_BAUD) -dl $(FIRMWAREDIR)/$(TARGET)/$(TARGET).fls
erase:
@$(WM_TOOL) -c $(DL_PORT) -rs at -eo all
烧录命令make flash
...
make[1]: Leaving directory '/home/milton/wm-sdk-w806/platform/drivers'
LINK W806.elf
OBJCOPY W806.bin
generate normal image completed.
generate normal image completed.
compress binary completed.
generate compressed image completed.
build finished!
connecting serial...
serial connected.
wait serial sync...
serial sync sucess.
mac 58-6D-CD-C1-CC-AA.
start download.
0% [####] 100%
download completed.
如果要单独控制W801进入下载模式, 需要用以下的步骤
连接串口
拉低RTS, 然后立即
以10ms的间隔, 连续输入二进制字符0x1B
, 即Esc对应的编码
此时W801就会进入下载模式, 回显如下的字符, 之后一直输出字符C
Secboot V0.6\r\n
CCCCCCCCCCCCCCCC
import serial
import time
port = serial.Serial(
"/dev/ttyUSB0",
baudrate=115200,
rtscts=True,
timeout=0)
if port.isOpen():
print('opened')
else:
print('open failed')
packet = bytearray()
packet.append(0x1B)
port.rts = False
while True:
for i in range(0, 100):
port.write(packet)
time.sleep(0.01)
data = port.read_all()
print(data)
if len(data) == 0 or data == b'enter main\r\n':
print('.')
continue
else:
break
print('pass')
while True:
data = port.read_all()
print(data)
time.sleep(1)
手机扫一扫
移动阅读更方便
你可能感兴趣的文章