|
|
@@ -1,3 +1,9 @@
|
|
|
+/*
|
|
|
+@module sfud
|
|
|
+@summary SPI FLASH sfud软件包
|
|
|
+@version 1.0
|
|
|
+@date 2021.09.23
|
|
|
+*/
|
|
|
|
|
|
#include "luat_base.h"
|
|
|
#include "luat_spi.h"
|
|
|
@@ -8,6 +14,16 @@
|
|
|
|
|
|
luat_spi_t sfud_spi_flash;
|
|
|
|
|
|
+/*
|
|
|
+初始化sfud
|
|
|
+@api sfud.init(spi_id, spi_cs, spi_bandrate)
|
|
|
+@int spi_id SPI的ID
|
|
|
+@int spi_cs SPI的片选
|
|
|
+@int spi_bandrate SPI的频率
|
|
|
+@return bool 成功返回true,否则返回false
|
|
|
+@usage
|
|
|
+log.info("sfud.init",sfud.init(0,20,20 * 1000 * 1000))
|
|
|
+*/
|
|
|
static int l_sfud_init(lua_State *L){
|
|
|
|
|
|
sfud_spi_flash.id = luaL_checkinteger(L, 1);
|
|
|
@@ -29,24 +45,54 @@ static int l_sfud_init(lua_State *L){
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+获取flash设备信息表中的设备总数
|
|
|
+@api sfud.get_device_num()
|
|
|
+@return int 返回设备总数
|
|
|
+@usage
|
|
|
+log.info("sfud.get_device_num",sfud.get_device_num())
|
|
|
+*/
|
|
|
static int l_sfud_get_device_num(lua_State *L){
|
|
|
int re = sfud_get_device_num();
|
|
|
lua_pushinteger(L, re);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+通过flash信息表中的索引获取flash设备
|
|
|
+@api sfud.get_device(index)
|
|
|
+@int index flash信息表中的索引
|
|
|
+@return userdata 成功返回一个数据结构,否则返回nil
|
|
|
+@usage
|
|
|
+local sfud_device = sfud.get_device(1)
|
|
|
+*/
|
|
|
static int l_sfud_get_device(lua_State *L){
|
|
|
sfud_flash *flash = sfud_get_device(luaL_checkinteger(L, 1));
|
|
|
lua_pushlightuserdata(L, flash);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+获取flash设备信息表
|
|
|
+@api sfud.get_device_table()
|
|
|
+@return userdata 成功返回一个数据结构,否则返回nil
|
|
|
+@usage
|
|
|
+local sfud_device = sfud.get_device_table()
|
|
|
+*/
|
|
|
static int l_sfud_get_device_table(lua_State *L){
|
|
|
sfud_flash *flash = sfud_get_device_table();
|
|
|
lua_pushlightuserdata(L, flash);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+擦除 Flash 全部数据
|
|
|
+@api sfud.chip_erase(flash)
|
|
|
+@userdata flash Flash 设备对象 sfud.get_device_table()返回的数据结构
|
|
|
+@return int 成功返回0
|
|
|
+@usage
|
|
|
+sfud.chip_erase(flash)
|
|
|
+*/
|
|
|
static int l_sfud_chip_erase(lua_State *L){
|
|
|
const sfud_flash *flash = lua_touserdata(L, 1);
|
|
|
sfud_err re = sfud_chip_erase(flash);
|
|
|
@@ -54,6 +100,14 @@ static int l_sfud_chip_erase(lua_State *L){
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+擦除 Flash 全部数据
|
|
|
+@api sfud.chip_erase(flash)
|
|
|
+@userdata flash Flash 设备对象 sfud.get_device_table()返回的数据结构
|
|
|
+@return int 成功返回0
|
|
|
+@usage
|
|
|
+sfud.chip_erase(flash)
|
|
|
+*/
|
|
|
static int l_sfud_erase(lua_State *L){
|
|
|
const sfud_flash *flash = lua_touserdata(L, 1);
|
|
|
uint32_t addr = luaL_checkinteger(L, 2);
|
|
|
@@ -63,7 +117,16 @@ static int l_sfud_erase(lua_State *L){
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+/*
|
|
|
+读取 Flash 数据
|
|
|
+@api sfud.read(flash, addr, size)
|
|
|
+@userdata flash Flash 设备对象 sfud.get_device_table()返回的数据结构
|
|
|
+@int addr 起始地址
|
|
|
+@int size 从起始地址开始读取数据的总大小
|
|
|
+@return string data 读取到的数据
|
|
|
+@usage
|
|
|
+log.info("sfud.read",sfud.read(sfud_device,1024,4))
|
|
|
+*/
|
|
|
static int l_sfud_read(lua_State *L){
|
|
|
const sfud_flash *flash = lua_touserdata(L, 1);
|
|
|
uint32_t addr = luaL_checkinteger(L, 2);
|
|
|
@@ -79,6 +142,17 @@ static int l_sfud_read(lua_State *L){
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+向 Flash 写数据
|
|
|
+@api sfud.write(flash, addr, size,data)
|
|
|
+@userdata flash Flash 设备对象 sfud.get_device_table()返回的数据结构
|
|
|
+@int addr 起始地址
|
|
|
+@int size 从起始地址开始读取数据的总大小
|
|
|
+@string data 待写入的数据
|
|
|
+@return int 成功返回0
|
|
|
+@usage
|
|
|
+log.info("sfud.write",sfud.write(sfud_device,1024,"sfud"))
|
|
|
+*/
|
|
|
static int l_sfud_write(lua_State *L){
|
|
|
const sfud_flash *flash = lua_touserdata(L, 1);
|
|
|
uint32_t addr = luaL_checkinteger(L, 2);
|
|
|
@@ -89,6 +163,17 @@ static int l_sfud_write(lua_State *L){
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+先擦除再往 Flash 写数据
|
|
|
+@api sfud.erase_write(flash, addr, size,data)
|
|
|
+@userdata flash Flash 设备对象 sfud.get_device_table()返回的数据结构
|
|
|
+@int addr 起始地址
|
|
|
+@int size 从起始地址开始读取数据的总大小
|
|
|
+@string data 待写入的数据
|
|
|
+@return int 成功返回0
|
|
|
+@usage
|
|
|
+log.info("sfud.erase_write",sfud.erase_write(sfud_device,1024,"sfud"))
|
|
|
+*/
|
|
|
static int l_sfud_erase_write(lua_State *L){
|
|
|
const sfud_flash *flash = lua_touserdata(L, 1);
|
|
|
uint32_t addr = luaL_checkinteger(L, 2);
|