最近入手一个热门的平头哥W801-kit开发板, 是冲着上面自带的BLE和WIFI去的, 但是网上的资料奇少. 看了说明和W806 唯一的差别在于多了蓝牙和WIFI功能, 其他的都一样.
官方推荐的开发环境是C-Sky, 安装后居然要占用>3G的硬盘空间, 有些夸张啊, 为了一个小板子, 硬盘都显得紧张了!
在网上查了一下, 有人正在把 Micropython 移植到这个板子上, 参考
micropython/ports/xt804 at master · gengyong/micropython · GitHub
这个版本功能有限, 还是初级的.
作者给出的示例程序
import machine
# PB0 脚, 输出, 默认高电平
pb0 = machine.Pin('B0', machine.Pin.OUT, value=1)
# 输出低电平
pb0.off()
# PA0 脚, 输入
pa0 = machine.Pin('A0', machine.Pin.IN)
pa0.value()
根据这个例子可以编写W801上的跑马灯程序
import machine
import time
# PB0 脚, 输出, 默认高电平
pb5 = machine.Pin('B5', machine.Pin.OUT, value=1)
pb25 = machine.Pin('B25', machine.Pin.OUT, value=1)
pb26 = machine.Pin('B26', machine.Pin.OUT, value=1)
pb18 = machine.Pin('B18', machine.Pin.OUT, value=1)
pb17 = machine.Pin('B17', machine.Pin.OUT, value=1)
pb16 = machine.Pin('B16', machine.Pin.OUT, value=1)
pb11 = machine.Pin('B11', machine.Pin.OUT, value=1)
while True:
# 输出低电平
pb5.off()
time.sleep(0.1)
pb5.on()
time.sleep(0.1)
另外还有人另起楼灶做的新的开发引擎, 参考
pikascript: PikaScript是一个完全重写的超轻量级python引擎,零依赖,零配置,可以在少于4KB的RAM下运行(如stm32g030c8和stm32f103c8),极易部署和扩展另外
https://gitee.com/Lyon1998/pikascript#%E4%BD%BF%E7%94%A8pika%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8pikapackageexe
这个相对于micropython 也算是一个异类.
另外还有人把LuatOS移植到 W801/806 上, 这也难怪, 因为 LuatOS Air301和他们用的是一样的芯片, 移植起来就很容易了. 参考
luatos-soc-air101: 合宙Air101/Air103固件源代码, 适用于Air101/Air103/w806/w800等基于xt804内核的芯片
https://gitee.com/openLuat/luatos-soc-air101?_from=gitee_search
这里作为一个示例, 点亮W801板载的7颗灯
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "gpiodemo"
VERSION = "1.0.0"
log.info("main", PROJECT, VERSION)
-- sys库是标配
_G.sys = require("sys")
gpio.setup(0, function(val)
log.info("PA0", val)
end, gpio.PULLUP)--按键按下接地,因此需要上拉
--下面的GPIO引脚编号,请根据实际需要进行更改!
local LED1 = gpio.setup(27, 0) -- PB11输出模式
local LED2 = gpio.setup(32, 0) -- PB16输出模式
local LED3 = gpio.setup(33, 0) -- PB17输出模式
local LED4 = gpio.setup(34, 0) -- PB18输出模式
local LED5 = gpio.setup(42, 0) -- PB26输出模式
local LED6 = gpio.setup(41, 0) -- PB25输出模式
local LED7 = gpio.setup(21, 0) -- PB5输出模式
sys.taskInit(function()
while 1 do
LED1(0)
LED2(1)
LED3(1)
LED4(1)
LED5(1)
LED6(1)
LED7(1)
sys.wait(100)
LED1(1)
LED2(0)
LED3(1)
LED4(1)
LED5(1)
LED6(1)
LED7(1)
sys.wait(100)
LED1(1)
LED2(1)
LED3(0)
LED4(1)
LED5(1)
LED6(1)
LED7(1)
sys.wait(100)
LED1(1)
LED2(1)
LED3(1)
LED4(0)
LED5(1)
LED6(1)
LED7(1)
sys.wait(100)
LED1(1)
LED2(1)
LED3(1)
LED4(1)
LED5(0)
LED6(1)
LED7(1)
sys.wait(100)
LED1(1)
LED2(1)
LED3(1)
LED4(1)
LED5(1)
LED6(0)
LED7(1)
sys.wait(100)
LED1(1)
LED2(1)
LED3(1)
LED4(1)
LED5(1)
LED6(1)
LED7(0)
sys.wait(100)
LED1(1)
LED2(1)
LED3(1)
LED4(1)
LED5(1)
LED6(1)
LED7(1)
sys.wait(100)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
使用官方的Luatools_v2烧录到W801后会循环点亮板载灯. 但是这个程序显得冗长乏味. 考虑到Lua的表和Python 的列表类似, 结合以前的经验, 用表的方式存储灯, 然后逐个点亮实现跑马灯的效果
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "gpiodemo"
VERSION = "1.0.0"
log.info("main", PROJECT, VERSION)
-- sys库是标配
_G.sys = require("sys")
gpio.setup(0, function(val)
log.info("PA0", val)
end, gpio.PULLUP)--按键按下接地,因此需要上拉
--下面的GPIO引脚编号,请根据实际需要进行更改!
local LED1 = gpio.setup(27, 0) -- PB11输出模式
local LED2 = gpio.setup(32, 0) -- PB16输出模式
local LED3 = gpio.setup(33, 0) -- PB17输出模式
local LED4 = gpio.setup(34, 0) -- PB18输出模式
local LED5 = gpio.setup(42, 0) -- PB26输出模式
local LED6 = gpio.setup(41, 0) -- PB25输出模式
local LED7 = gpio.setup(21, 0) -- PB5输出模式
local leds = {LED1,LED2,LED3,LED4,LED5,LED6,LED7}
sys.taskInit(function()
while 1 do
for i = 1, 7 do --正向点灯
leds[i](0)
sys.wait(100)
leds[i](1)
sys.wait(100)
for i = 6, 2, -1 do --逆向点灯
leds[i](0)
sys.wait(100)
leds[i](1)
sys.wait(100)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
CRC16 校验寄存器赋值为 0xFFFF;
取被校验串的第一个字节赋值给临时寄存器;
临时寄存器与 CRC16 校验寄存器的高位字节进行“异或”运算,赋值给 CRC16 校验寄存器;
取 CRC16 校验寄存器最后一位赋值给检测寄存器;
把 CRC16 校验寄存器右移一位;
若检测寄存器值为 1,CRC16 校验寄存器与多项式 0xA001 进行“异或”运算,赋值给 CRC16 校验寄存...
其本质是使用lua的 . 写法手动传入参数并调用方法。
原本的 bg:setContentSize(bgSize) 等效于 bg.setContentSize(bg, bgSize)。
而上述写法在被
本人小白,在淘宝上看见了这款芯片(W801),感觉性价比挺高的,特意拿来学习学习,特此写下开发经历,先来配置环境。如有错误,欢迎大佬批评指正
一、CDK下载
CDK可以用来编写程序编译
网址:https://occ.t-head.cn/community/download?id=575997419775328256
注意:进入网页后选择最新的推荐版本下载并安装,安装过程中自动选择D盘,整个过程中默认安装就可以,不要有中文路径
二、SDK下载
W800和W801可以使用同一个SDK,这里下载W800的SDK
一.项目流程
项目整体思路比较简单,W801上电后读取内部flash中保存在固定位置的Wifi账号密码,同时开始蓝牙,每当蓝牙接收到命令后,就对其进行解析,如果为连接wifi命令,则断开当前wifi,并进行新的wifi连接,连接成功后将账号密码更新至内部flash中固定位置,用于下次上电连接。大致的流程图如下:
二.代码解析
【1】使用说明:本代码使用的基本都是基于SDK中代码进行的修改
【2】主程序:
void UserMain(void)
printf("\n------------------
GMM-HMM语音识别是一种基于高斯混合模型(GMM)和隐马尔可夫模型(HMM)的语音识别技术,常用于语音识别系统中。以下是一些开源的GMM-HMM语音识别系统源码:
1. Kaldi: Kaldi是一个基于Apache许可证的开源语音识别工具包。它支持GMM-HMM、DNN-HMM和TDNN-HMM等多种语音识别模型,并提供了一系列工具用于训练和评估语音识别系统。Kaldi支持多种语言,包括英语、法语、汉语、阿拉伯语等。
2. HTK: HTK是一个基于HMM的语音识别工具包,提供了GMM-HMM、DNN-HMM、LSTM-HMM等多种语音识别模型,并提供了一系列工具用于训练和评估语音识别系统。HTK支持多种语言,包括英语、法语、德语、意大利语等。
3. Julius: Julius是一个基于HMM的开源语音识别引擎,支持GMM-HMM、DNN-HMM和LSTM-HMM等多种语音识别模型。Julius支持多种语言,包括英语、日语、汉语、韩语等。
4. Sphinx4: Sphinx4是一个基于HMM的语音识别工具包,支持GMM-HMM、DNN-HMM和TDNN-HMM等多种语音识别模型。Sphinx4支持多种语言,包括英语、汉语、日语、阿拉伯语等。
以上是一些常用的GMM-HMM语音识别系统源码,你可以根据自己的需求选择合适的开源工具。