Просмотр исходного кода

add: 添加spi从机库的雏形

Wendal Chen 1 год назад
Родитель
Сommit
602bd1ea75

+ 53 - 0
components/device/spi_slave/binding/luat_lib_spislave.c

@@ -0,0 +1,53 @@
+/*
+@module spislave
+@summary SPI从机(开发中)
+@version 1.0
+@date    2024.3.27
+@demo spislave
+@tag LUAT_USE_SPI_SLAVE
+@usage
+-- 请查阅demo
+ */
+#include "luat_base.h"
+#include "rotable2.h"
+#include "luat_zbuff.h"
+
+#define LUAT_LOG_TAG "spislave"
+#include "luat_log.h"
+
+/*
+初始化SPI从机
+@api spislave.setup(id, opts)
+@int 从机SPI的编号,注意与SPI主机的编号的差异,这个与具体设备相关
+@table opts 扩展配置参数,当前无参数
+@return boolean true表示成功,其他失败
+@usage
+-- 当前仅XT804系列支持, 例如 Air101/Air103/Air601/Air690
+-- Air101为例, 初始化SPI从机, 编号为2, SPI模式
+spislave.setup(2)
+-- Air101为例, 初始化SPI从机, 编号为3, SDIO模式
+spislavve.setup(3)
+*/
+static int l_spi_slave_setup(lua_State *L) {
+    return 0;
+}
+
+/*
+是否可写
+@api spislave.ready()
+@return boolean true表示可写,其他不可写
+*/
+static int l_spi_slave_ready(lua_State *L) {
+}
+
+static const rotable_Reg_t reg_spi_slave[] = {
+    { "setup",              ROREG_FUNC(l_spi_slave_setup)},
+    { "ready",              ROREG_FUNC(l_spi_slave_ready)},
+    { NULL,                 ROREG_INT(0)}
+};
+
+LUAMOD_API int luaopen_spislave(lua_State *L)
+{
+    luat_newlib2(L, reg_spi_slave);
+    return 1;
+}

+ 13 - 0
components/device/spi_slave/include/luat_spi_slave.h

@@ -0,0 +1,13 @@
+#ifndef LUAT_SPI_SLAVE_H
+#define LUAT_SPI_SLAVE_H
+
+typedef struct luat_spi_slave_conf {
+    uint8_t id;
+}luat_spi_slave_conf_t;
+
+int luat_spi_slave_open(luat_spi_slave_conf_t *conf);
+int luat_spi_slave_close(luat_spi_slave_conf_t *conf);
+int luat_spi_slave_read(luat_spi_slave_conf_t *conf, uint8_t* buf, size_t len);
+int luat_spi_slave_write(luat_spi_slave_conf_t *conf, uint8_t* buf, size_t len);
+
+#endif

+ 10 - 0
luat/include/luat_libs.h

@@ -164,12 +164,22 @@ LUAMOD_API int luaopen_ws2812( lua_State *L );
 
 LUAMOD_API int luaopen_onewire( lua_State *L );
 
+// 蚂蚁链
 LUAMOD_API int luaopen_antbot( lua_State *L );
 
+// xxtea加解密, 强度其实很低
 LUAMOD_API int luaopen_xxtea( lua_State *L );
 
+// 电话功能
 LUAMOD_API int luaopen_cc( lua_State *L );
 
+// 用户侧LWIP集成, 用于对接以太网,wifi等第三方网络设备,通常是SPI或者SDIO协议
 LUAMOD_API int luaopen_ulwip( lua_State *L );
 
+// 基于真正的cjson做的json解析库,未完成
+LUAMOD_API int luaopen_json2( lua_State *L );
+
+// SPI 从机
+LUAMOD_API int luaopen_spislave( lua_State *L );
+
 #endif