马亚丹 4 месяцев назад
Родитель
Сommit
e560627e0c
2 измененных файлов с 136 добавлено и 7 удалено
  1. 14 7
      module/Air8000/demo/pins/pins_test.lua
  2. 122 0
      module/Air8000/demo/pins/readme.md

+ 14 - 7
module/Air8000/demo/pins/pins_test.lua

@@ -5,10 +5,10 @@
 @date    2025.10.15
 @author  马亚丹
 @usage
-本demo演示的功能为:使用Air8000核心板,演示动态修改管脚复用
+本demo演示的功能为:使用Air8000核心板,演示动态修改管脚复用功能
 核心逻辑:
 1.加载自定义的管脚配置文件
-2.修改管脚复用功能,这里演示SPI管脚复用为串口
+2.动态修改管脚复用功能,这里演示SPI管脚pin41脚即SPI1_CS复用为UART2_RX,pin40脚即SPI1_MOSI复用为UART2_TX
 3.演示复用的串口管脚的功能,通过串口工具收发数据。
 
 ]]
@@ -20,11 +20,16 @@
 --如果打开debug后需要关闭debug,在任何需要的地方添加这一行
 --log.info ("打开debug",pins.debug(false))
 
--- 也可以打开下面这行加载配置文件,如果烧录了pins_$model.json文件,就会自动加载,不需要pins.loadjson再设置加载
+--方式1 :打开下面这行加载配置文件,如果烧录了pins_$model.json文件,就会自动加载,不需要pins.loadjson再设置加载
 -- 其中 $model是模组型号, 例如 Air8000, 默认加载的是 luadb/pins_Air8000.json,其他格式的不会自动加载
 --log.info ("加载luatIO生成的配置文件",pins.loadjson("/luadb/pins_Air8000.json"))
 
---自定义配置文件要通过pins.loadjson加载
+
+
+--方式2 :自定义配置文件要通过pins.loadjson加载
+--如果烧录了pins_Air8000.json,在内核固件运行时,已经自动加载pins_Air8000.json,并且按照pins_Air8000.json的配置初始化所有io引脚功能,
+--此处再加载my.json文件,会覆盖pins_Air8000.json中配置的所有io引脚功能,按照my.json的配置再次初始化所有io引脚功能
+--烧录多个.json文件时以最后一个文件的配置初始化所有io引脚功能
 log.info ("加载自定义的配置文件",pins.loadjson("/luadb/my.json"))
 
 --=======配置管脚复用=========--
@@ -46,8 +51,7 @@ uart.setup(
     1--停止位
 )
 
--- 收取数据会触发回调, 这里的 "receive" 是固定值不要修改。
-uart.on(uartid, "receive", function(id, len)
+local function ur_rec(id, len)
     local s = ""
     repeat
         s = uart.read(id, 128)
@@ -59,7 +63,10 @@ uart.on(uartid, "receive", function(id, len)
             log.info("uart", "receive(hex)", id, #s, s:toHex())  
         end
     until s == ""
-end)
+end
+-- 收取数据会触发回调, 这里的 "receive" 是固定值不要修改。
+uart.on(uartid, "receive", ur_rec)
+
 
 --向串口发送数据
 local function uart_test()    

+ 122 - 0
module/Air8000/demo/pins/readme.md

@@ -0,0 +1,122 @@
+## 功能模块介绍:
+
+1、main.lua:主程序入口;
+
+2、pins_test.lua:   功能演示核心脚本,动态修改管脚复用功能,演示复用后的管脚的功能等,在main.lua中加载运行;
+
+3、my.json:自定义管脚配置文件,手动编写容易出错,建议使用合宙LuatIO可视化工具 [LuatIO初始化配置工具 - common@air780epm - 合宙模组资料中心](https://docs.openluat.com/air780epm/common/luatio/)自动生成;
+
+4、pins_Air8000.json:管脚配置文件,使用合宙LuatIO可视化工具自动生成。
+
+## 演示功能概述:
+
+1.加载管脚配置文件,初始化所有io引脚功能;
+
+2.动态修改管脚复用功能,这里演示SPI管脚pin41脚即SPI1_CS复用为UART2_RX,pin40脚即SPI1_MOSI复用为UART2_TX;
+
+3.演示复用的串口管脚的功能,通过串口工具收发数据。
+
+
+
+## 演示硬件环境
+
+![netdrv_multi](https://docs.openluat.com/air8000/product/image/8000核心板.jpg)
+
+
+
+1、Air8000核心板一块+可上网的sim卡一张+4g天线一根+wifi天线一根+网线一根:
+
+* sim卡插入核心板的sim卡槽
+
+* 天线装到开发板上
+
+* 网线一端插入核心板网口,另外一端连接可以上外网的路由器网口
+
+2、TYPE-C USB数据线一根 ,Air8000核心板和数据线的硬件接线方式为:
+
+* Air8000核心板通过TYPE-C USB口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
+
+* TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口。 
+
+3、USB转TTL串口线一根,串口线usb口连接电脑USB口,Air8000核心板和串口线,按以下方式接线:
+
+| Air8000核心板 | 串口线     |
+| ---------- | ------- |
+| SPI1_CS    | uart_tx |
+| SPI1_MOSI  | uart_rx |
+| GND        | GND     |
+
+
+
+## 演示软件环境
+
+1、 Luatools下载调试工具
+
+2、 固件版本:LuatOS-SoC_V2016_Air8000_1,固件地址,如有最新固件请用最新 [https://docs.openluat.com/air8000/luatos/firmware/](https://docs.openluat.com/air8000/luatos/firmware/)
+
+3、 脚本文件:
+    main.lua
+
+
+
+   pins_test.lua
+
+
+
+   my.json
+
+
+
+   pins_Air8000.json
+
+4、 pc 系统 win11(win10 及以上)
+
+5、sscom串口工具
+
+
+
+## 演示核心步骤
+
+1、搭建好硬件环境
+
+2、demo脚本文件pins_test.lua中,设置了方式1和方式2两种加载管脚配置文件的方式,按照自己的需求选择其一,脚本中默认是方式2:加载my.json自定义管脚配置文件。
+
+3、Luatools烧录内核固件和修改后的demo脚本代码
+
+4、烧录成功后,代码会自动运行,查看打印日志,如果正常运行,会打印加载配置文件,配置管脚,以及配置完成后串口交互等信息,如下log显示:其中 I/user.uart receive日志是串口工具向模组发数据,模组收到数据触发打印。
+
+```
+[2025-10-24 15:31:09.491][000000000.385] I/user.main Air8000_pins 001.000.000
+[2025-10-24 15:31:09.496][000000000.407] E/pins _STB不是可配置的外设功能
+[2025-10-24 15:31:09.500][000000000.407] W/pins pins 35 CAN_STB setup failed
+[2025-10-24 15:31:09.503][000000000.410] I/user.加载自定义的配置文件 true 0
+[2025-10-24 15:31:09.508][000000000.411] I/user.配置pin41脚即SPI1_CS为UART2_RX true
+[2025-10-24 15:31:09.514][000000000.411] I/user.配置pin40脚即SPI1_MOSI为UART2_TX true
+[2025-10-24 15:31:09.518][000000000.411] Uart_ChangeBR 1338:uart2, 115200 115203 26000000 3611
+[2025-10-24 15:31:11.167][000000002.412] I/user.这是第0次向串口发数据
+[2025-10-24 15:31:11.736][000000002.955] D/mobile cid1, state0
+[2025-10-24 15:31:11.740][000000002.956] D/mobile bearer act 0, result 0
+[2025-10-24 15:31:11.746][000000002.956] D/mobile NETIF_LINK_ON -> IP_READY
+[2025-10-24 15:31:11.750][000000002.974] D/mobile TIME_SYNC 0
+[2025-10-24 15:31:15.178][000000006.413] I/user.这是第1次向串口发数据
+[2025-10-24 15:31:19.172][000000010.414] I/user.这是第2次向串口发数据
+[2025-10-24 15:31:23.166][000000014.415] I/user.这是第3次向串口发数据
+[2025-10-24 15:31:24.212][000000015.459] I/user.uart receive 2 11 123456789
+
+[2025-10-24 15:31:24.221][000000015.460] I/user.uart receive(hex) 2 11 3132333435363738390D0A 22
+[2025-10-24 15:31:25.945][000000017.183] I/user.uart receive 2 11 123456789
+
+[2025-10-24 15:31:25.954][000000017.183] I/user.uart receive(hex) 2 11 3132333435363738390D0A 22
+[2025-10-24 15:31:27.171][000000018.415] I/user.这是第4次向串口发数据
+[2025-10-24 15:31:31.173][000000022.416] I/user.这是第5次向串口发数据
+[2025-10-24 15:31:35.179][000000026.417] I/user.这是第6次向串口发数据
+[2025-10-24 15:31:39.176][000000030.418] I/user.这是第7次向串口发数据
+[2025-10-24 15:31:43.171][000000034.419] I/user.这是第8次向串口发数据
+[2025-10-24 15:31:47.176][000000038.420] I/user.这是第9次向串口发数据
+
+
+```
+
+
+
+