X-MagicBox-820的luatOS之路连载系列1
只能说是幸运,有机会拿到合宙新推出的热门作品--基于Air820UG模组的开发板,别名X-MagicBox。首先看长相。

还有配套盖板,补充一个彩色液晶和按键。

这个Air829模组核心采用紫光展锐的春藤UIS8910DM。

不容小看,这还是双核500Mhz的A5处理器,优势在于众多网络通信协议的支持,官方列举了不少。有常见的也有压根没听过的。
TCP/UDP/PPP/FTP/HTTP/NITZ/CMUX/NDIS/NTP/HTTPS/PING/FTPS/FILE/TLS,这些老王也不是全都认识。
连接电脑上电后,彩屏就会显示内容了,由于分辨率挺高,展示的信息还不少。并且出厂demo具有丰富的演示功能。

听说Win10系统会识别到NDIS协议的网卡,以至于当作有线连接消耗掉可怜的100M流量。老王紧张的赶紧打开设备管理器,Win11啊,可能比Win10更智能些吧。
果断禁用这个新增的网络连接。

找了下教程,出厂默认使用AT固件。然而现在主推LuatOS,因此需要更新下底层固件。认准RDA8910。这个过程应该难不倒任何攻城狮。
底层下载好了以后,就可以测试用例或者自行编码了。老王自信还差一点,先跑个例程验证下。千挑万选,GPIO被看中了。文档中推荐将main文件和app文件区别开来,gpioSingle的例子便是如此。看了下内容,是对IO的输出、输入和中断进行的测试。说到这里,老王自推一篇之前的总结:Air101之LuatOS的GPIO API
该示例文件的主要代码如下,其实老王对有些语句的行文顺序总是有点强迫症的,也许思想局限了吧
local level = 0
--GPIO18配置为输出,默认输出低电平,可通过setGpio18Fnc(0或者1)设置输出电平
local setGpio18Fnc = pins.setup(pio.P0_18,0)
sys.timerLoopStart(function()
level = level==0 and 1 or 0
setGpio18Fnc(level)
log.info("testGpioSingle.setGpio18Fnc",level)
end,1000)
--GPIO19配置为输入,可通过getGpio19Fnc()获取输入电平
local getGpio19Fnc = pins.setup(pio.P0_19)
sys.timerLoopStart(function()
log.info("testGpioSingle.getGpio19Fnc",getGpio19Fnc())
end,1000)
--pio.pin.setpull(pio.PULLUP,pio.P0_19) --配置为上拉
--pio.pin.setpull(pio.PULLDOWN,pio.P0_19) --配置为下拉
--pio.pin.setpull(pio.NOPULL,pio.P0_19) --不配置上下拉
function gpio13IntFnc(msg)
log.info("testGpioSingle.gpio13IntFnc",msg,getGpio13Fnc())
--上升沿中断
if msg==cpu.INT_GPIO_POSEDGE then
--下降沿中断
else
end
end
--GPIO13配置为中断,可通过getGpio13Fnc()获取输入电平,产生中断时,自动执行gpio13IntFnc函数
getGpio13Fnc = pins.setup(pio.P0_13,gpio13IntFnc)
查找GPIO18对应到了排针的扩展口,并且有电平转换,板卡上看实物,封装很小,是个没用过型号,记下。

在Luatools工具的窗口会有串口输出日志,基本上调试只能通过打印来进行了,或者现在有屏幕了,也可以输出到屏幕上看。再厚着脸皮补充一下:Air101之LuatOS的日志API 。VS Code可以安装LuatIDE插件使用,更新到现在应该可以支持语法检测和一键下载了,瞄一眼这个工具的开发规划。

工具只是工具,初次的认识就到这里。

浙公网安备 33010602011771号