描述
本文来源电子发烧友社区,作者:卢松涛, 帖子地址:
https://bbs.elecfans.com/jishu_2286300_1_1.html非常感谢发烧友论坛和上海合宙通信科技有限公司 为我和孩子 提供此产品合宙Air105开发板感谢大佬们的指导。合宙Air105开发板是一款由上海合宙通信科技有限公司 LuatOS-SoC开发板,如果使用厂家提供的合宙LuatOS固件和LuaTools下载软件,可以用任何文本编辑软件开发使用此Air105开发板。LuatOS:LuatOS是一款针对嵌入式的脚本运行框架,可以极大提升开发效率。使用Lua 5.3作为主要语言,针对资源较少的嵌入式环境进行了优化,极大提升了运行效率。Powerful embedded Lua Engine for IoT devices, with many components and low memory requirements (16K RAM, 128K Flash)是合宙出的基于freertos的VM,提供库和外设、LuatOS-SOC接口及demo 极大提升开发效率。合宙Air105是一款QFN88 封装,10mm x 10mm 大小的MCU, 支持最多54个GPIO,不仅提供UART/GPIO/I2C/ADC/SPI等基础外设,更提供DAC/USB/DCMI/HSPI/LCDI/KCU等高级外设接口,内置充电 功能,支持5V/3.3V供电,同时自带5v转3.3V的LDO,4M字节Flash,640K字节RAM。105发布:http://www.elecfans.com/d/comp-4699659-136340651553233530880.html105源码:https://gitee.com/openLuat/luatos-soc-air105105编译说明:https://wiki.luatos.com/develop/compile/Air105.html105寄存器手册:https://luatos.com/t/air105我使用的LuatOS-SoC@Air105 V0007正式固件地址:https://gitee.com/openLuat/LuatOS/releases/v0007.air105.v0007最新的https://gitee.com/openLuat/LuatOS/releases/v0007.air105.v0008下载tool(我下载的是LuaTools 2。1。58): https://wiki.luatos.com/pages/tools.html准备一个文本编辑软件(我用的UltraEdit)程序:
-
-
-- LuaTools需要PROJECT和VERSION这两个信息
-
PROJECT = "coremark"
-
VERSION = "1.0.0"
-
--mcu.setXTAL(true, true, 1248) --高速时钟使用外部时钟,低速32K使用外部晶振, delay1248
-
mcu.setXTAL(true, false, 1248) --高速时钟使用外部时钟,低速32K使用, delay1248
-
local tick_str, tick_per = mcu.tick64()
-
print("ticks64", tick_str,"ticks_per_us", tick_per)
-
local tick = mcu.hz()
-
print("mcu-tick.hz", tick)
-
local tick = mcu.ticks()
-
print("ticks", tick)
-
log.info("tick64-type", type(tick_str))
-
local mhz = mcu.getClk()
-
print("getClk", mcu.getClk())--打印主频
-
log.info("getClk-Boom", mhz)
-
-- 一定要添加sys.lua !!!!
-
local sys = require "sys"
-
-
-
log.info("main", PROJECT, VERSION)
-
log.info("t_per_us", tick_per,"len",tick_str:len())
-
-
-
--添加硬狗防止程序卡死
-
--wdt.init(15000)--初始化watchdog设置为15s
-
--sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
-
-
-
-
--下面的GPIO引脚编号,请根据实际需要进行更改!
-
-- Air101开发板的3个LED分别为 PB08/PB09/PB10
-
-- Air103开发板的3个LED分别为 PB24/PB25/PB26
-
-- Air105开发板的3个LED分别为 PD14/PD15/PC3
-
-
-- 若下载到设备后提示pin库不存在,请升级固件到V0006或以上
-
-
-
--【HaoSir2022】于2022年4月21日增加
-
function pinx()--根据不同开发板,给LED赋值不同的gpio引脚编号
-
-
if rtos.bsp()=="air101" then--Air101开发板LED引脚编号
-
local A= pin.PB08
-
local B= pin.PB09
-
local C= pin.PB10
-
return A,B,C
-
-
elseif rtos.bsp() == "air103" then--Air103开发板LED引脚编号
-
local A= pin.PB26
-
local B= pin.PB25
-
local C= pin.PB24
-
return A,B,C
-
-
elseif rtos.bsp() == "air105" then--Air105开发板LED引脚编号
-
print(_VERSION)
-
log.info( "air105")
-
local A= pin.PD14--b
-
local B= pin.PD15--g
-
local C= pin.PC3--r
-
return A,B,C
-
end
-
end
-
--LED引脚判断赋值结束
-
-
local P1,P2,P3=pinx()--赋值开发板LED引脚编号
-
local LEDA= gpio.setup(P1, 0, gpio.PULLUP)
-
local LEDB= gpio.setup(P2, 0, gpio.PULLUP)
-
local LEDC= gpio.setup(P3, 0, gpio.PULLUP)
-
-
-
--[[
-
sys.wait(200) --点亮时间
-
-
-
-
sys.wait(200) --点亮时间
-
--mcu.setXTAL(true) --高速时钟使用外部时钟,
-
--
-
sys.wait(2000) --点亮时间
-
local tick_str, tick_per = mcu.tick64()
-
print("ticks64", tick_str,"ticks_per_us", tick_per)
-
local tick = mcu.hz()
-
print("mcu.hz", tick)
-
local tick = mcu.ticks()
-
print("ticks", tick)
-
local mhz = mcu.getClk()
-
-print("getClk-Boom", mhz)
-
mcu.setClk(192)
-
sys.wait(2000) --点亮时间
-
local tick_str, tick_per = mcu.tick64()
-
print("ticks64", tick_str,"ticks_per_us", tick_per)
-
local tick = mcu.hz()
-
print("mcu.hz", tick)
-
local tick = mcu.ticks()
-
print("ticks", tick)
-
local mhz = mcu.getClk()
-
--print("getClk-Boom", mhz)
-
]]
-
log.info("pm", "last power reson", pm.lastReson())
-
local t = rtc.get()
-
if t["year"] == 2022 then--
-
log.debug("time no set", os.date())--打印时间
-
-
else
-
log.debug("time set", os.date())--打印时间
-
rtc.set({year=2022,mon=8,day=31,hour=17,min=8,sec=43})--rtc时间设置
-
end
-
-
-
log.info("os.date()", os.date())--打印时间
-
-
sys.taskInit(function()
-
--开始流水灯
-
local count = 0
-
while 1 do
-
--流水灯程序
-
-
-
-- 轮流点灯
-
LEDA(count % 3 == 0 and 1 or 0)
-
LEDB(count % 3 == 1 and 1 or 0)
-
LEDC(count % 3 == 2 and 1 or 0)
-
-
log.info("GPIO", "Go Go Go", count)
-
-- log.info("LuatOS:", "https://wiki.luatos.com")
-
-- log.info(count % 3, count % 3 == 0, count % 3 == 0 and 1 or 0, "LEDA")
-
-
-- log.info(count % 3, count % 3 == 1, count % 3 == 1 and 1 or 0, "LEDb")
-
-- log.info(count % 3, count % 3 == 2, count % 3 == 2 and 1 or 0, "LEDc")
-
count = count + 1
-
sys.wait(3000) --点亮时间
-
end
-
end)
-
--第二个任务
-
sys.taskInit(function()
-
while true do
-
-
-
adc.open(0) -- 模块上的ADC0脚-PA1, 0~2.4v,不要超过范围使用!!!
-
-
sys.wait(500) --点亮时间
-
log.debug("adc", "adc0", adc.read(0))
-
-
-
-- 使用完毕后关闭,可以使得休眠电流更低.
-
adc.close(0)
-
sys.wait(15000) --时间
-
-- local t = rtc.get()
-
-- log.info("rtc", json.encode(t))
-
log.info("os.date()", os.date())--打印时间
-
end
-
end)
-
--第3个任务
-
sys.taskInit(function()
-
local count = 0
-
-
while true do
-
-
log.info("ticks", count)
-
local tick_str, tick_per1 = mcu.tick64()
-
rtos.nop()--1854=3nop.,887=nop.nop~=483~=10us.
-
-
local tick_str1, tick_per = mcu.tick64()--44s,89s,90s(32bit 0.5,~1,》1)
-
tick_per1=tick_str:sub(1,4)
-
tick_per=tick_str:sub(5,8)
-
sys.wait(500) --点亮时间
-
-
log.info("ticks32-1", tick_per1,"ticks32-2", tick_per) --string.format("%d" , tick_per1)
-
tick_per=0
-
for i=4,1,-1 do
-
-
-
log.info("ticks32-N", tick_per1:byte(i))
-
tick_per=tick_per*256+tick_per1:byte(i)
-
-
end
-
log.info("ticks32add", tick_per)
-
for i=1,8 do
-
-
log.info("ticks64-N", tick_str:byte(i),tick_str1:byte(i))
-
end
-
-
count = count + 1
-
sys.wait(5000) --时间
-
end
-
end)
-
-
-- API文档 https://wiki.luatos.com/api/gpio.html
-
-
-- 用户代码已结束---------------------------------------------
-
-- 结尾总是这一句
-
sys.run()
-
-- sys.run()之后后面不要加任何语句!!!!!
-
复制代码
. 双击 Luatools_v2.exe 启动程序并更新
. LuaTools 各个文件夹功能:
1. _temp : 临时文件。2. config : 对Luatools_V2 进行的一些配置会存放到这个文件夹。3. log : 这个文件夹和我们关系紧密,当你向合宙 FAE 寻求技术支持的时候,需要提交这个目录下的文件。4. resource : 合宙模块相关的AT固件,LuaTask 开发的Core 底层固件,Lib库 和demo5. project : 使用项目管理后会自动生成这个目录,用来管理下载项目的
. 下载固件入口
LuatOS-SoC@Air105 V0007正式固件位置并下载
. 项目管理入口
选择"创建",输入项目名字,选择确认,选择填入lua文件的位置(我的是H:合宙Air105
esource105_lua_lodcore_V0007democoremark下的main.lua)
选择底层core选择刚才下载 LuatOS-SoC@Air105 V0007正式固件位置
就可以只下载lua文件了。
log:
[2022-06-13 09:40:18.266] X8yZRemote_Upgrade 468:no ota info
-
[2022-06-13 09:40:18.266] main 659:bootloader build release May 7 2022 19:23:19!
-
[2022-06-13 09:40:18.266] Jump_AppRun 76:jump to 0x01010400 !
-
[2022-06-13 09:40:18.266] main 176:APP Build release May 7 2022 19:22:45!
-
[2022-06-13 09:40:18.266] I/main LuatOS@air105 core V0007 bsp V0007
-
[2022-06-13 09:40:18.266] I/main ROM Build: May 7 2022 19:22:58
-
[2022-06-13 09:40:18.266] D/main loadlibs luavm 204792 14656 14912
-
[2022-06-13 09:40:18.266] D/main loadlibs sys 361544 18512 19176
-
-
[2022-06-13 09:40:18.281] ticks64 k ticks_per_us 48
-
[2022-06-13 09:40:18.281] mcu-tick.hz 1000
-
[2022-06-13 09:40:18.281] ticks 13
-
[2022-06-13 09:40:18.281] I/user.tick64-type string
-
[2022-06-13 09:40:18.281] getClk 192
-
[2022-06-13 09:40:18.281] I/user.getClk-Boom 192
-
[2022-06-13 09:40:18.281] I/user.main coremark 1.0.0
-
[2022-06-13 09:40:18.281] I/user.t_per_us 48 len 8
-
[2022-06-13 09:40:18.281] Lua 5.3
-
[2022-06-13 09:40:18.281] I/user.air105
-
[2022-06-13 09:40:18.281] I/user.pm last power reson 0 0
-
[2022-06-13 09:40:18.281] I/user.os.date() Wed Aug 31 17:08:43 2022
-
[2022-06-13 09:40:18.281] I/user.GPIO Go Go Go 0I/user.ticks 0
-
-
[2022-06-13 09:40:18.796] D/user.adc adc0 3266 3987
-
[2022-06-13 09:40:18.796] I/user.ticks32-1 5 ticks32-2
-
[2022-06-13 09:40:18.796] I/user.ticks32-N 0
-
[2022-06-13 09:40:18.796] I/user.ticks32-N 14
-
[2022-06-13 09:40:18.796] I/user.ticks32-N 218
-
[2022-06-13 09:40:18.796] I/user.ticks32-N 53
-
[2022-06-13 09:40:18.796] I/user.ticks32add 973365
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 53 97
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 218 225
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 14 14
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:18.796] I/user.ticks64-N 0 0
-
-
[2022-06-13 09:40:21.296] I/user.GPIO Go Go Go 1
-
[2022-06-13 09:40:23.793] I/user.ticks 1
-
[2022-06-13 09:40:24.293] I/user.GPIO Go Go Go 2
-
[2022-06-13 09:40:24.293] I/user.ticks32-1 ticks32-2
-
[2022-06-13 09:40:24.293] I/user.ticks32-N 15
-
[2022-06-13 09:40:24.293] I/user.ticks32-N 204
-
[2022-06-13 09:40:24.293] I/user.ticks32-N 166
-
[2022-06-13 09:40:24.293] I/user.ticks32-N 240
-
[2022-06-13 09:40:24.293] I/user.ticks32add 265070320
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 240 29
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 166 171
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 204 204
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 15 15
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 0 0
-
[2022-06-13 09:40:24.293] I/user.ticks64-N 0 0
-
-
[2022-06-13 09:40:27.306] I/user.GPIO Go Go Go 3
-
复制代码
环境搭建
完成。
出现问题:
1。mcu.reg(address, value, mask)读不出2。mcu.tick64()只有32位3。RTC (Real-Time Clock)实时时钟使用mcu.setXTAL(source_main, source_32k),低速32K使用外部晶振不工作。lua语法了解:
Lua快速入门教程 –
https://www.bilibili.com/video/BV1vf4y1L7Rb
Lua教程-进阶部分 –
https://www.bilibili.com/video/BV1WR4y1E7ud
luatos在线模拟器 –
https://wiki.luatos.com/_static/luatos-emulator/lua.html
语法参考手册 –
https://www.runoob.com/manual/lua53doc/contents.html
Lua 5.3 欢迎你 –
https://www.runoob.com/manual/lua53doc/
语法 –
https://www.runoob.com/lua/lua-tutorial.html
文档 –
https://wiki.luatos.com/
文档2 –
https://wiki.openluat.com/
打开APP阅读更多精彩内容