通用SPI接口 =========== 作者:许文婷 Air724UG模块提供1个通用SPI接口。 ## SPI接口管脚定义 \| 管脚名 \| 管脚号 \| 上电状态 \| I/O \| 管脚描述 \| 电气特性 \| 作用 \| 备注 \| \| ——————– \| —— \| —————- \| —- \| ——– \| ———————————————————— \| —————————- \| ——————————– \| \| SPI1_DOUT(GPIO_11) \| 55 \| INPUT PULL_DOWN \| IO \| SPI接口 \| VILmin=-0.3V VILmax=0.6V VIHmin=1.2V VIHmax=2.0V VOHmin= V_GLOBAL_1V8*0.7 VOLmax= V_GLOBAL_1V8*0.3 \| 主设备数据输出 ,对应MOSI \| 电压域是V_GLOBAL_1V8 不用则悬空 \| \| SPI1_DIN(GPIO_12) \| 53 \| INPUT PULL_DOWN \| IO \| SPI接口 \| 同上 \| 主设备数据输入,对应MISO \| 同上 \| \| SPI1_CLK(GPIO_9) \| 52 \| INPUT PULL_DOWN \| IO \| SPI接口 \| 同上 \| 时钟信号,由主设备发出 \| 同上 \| \| SPI1_CS(GPIO_10) \| 54 \| INPUT PULL_DOWN \| IO \| SPI接口 \| 同上 \| 从设备使能信号,由主设备控制 \|同上 \| SPI接口连接方式 --------------- SPI它以主从方式工作,这种模式通常有一个主设备和一个或多 个从设备,目前模块只能做主设备,连接方式如下图所示: |image1| 当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。 -------------- spi lua接口 ----------- -------------- **spi.setup** 初始化接口 - 语法 .. code:: lua spi.setup(id,chpa,cpol,dataBits,clock,duplexMode) - 参数 +-----------------------------------+-----------------------------------+ | 参数 | 释义 | +===================================+===================================+ | id | SPI的ID,spi.SPI_1表示SPI1,Ai | | | r720只有SPI1,固定传spi.SPI_1即可 | +-----------------------------------+-----------------------------------+ | chpa | 不支 | | | 持第几个clk的跳变沿传输数据,仅支 | | | 持0和1,0表示第1个,1表示第2个。 | +-----------------------------------+-----------------------------------+ | cpol | 不支持spi_clk | | | idle的状态,仅支 | | | 持0和1,0表示低电平,1表示高电平 | +-----------------------------------+-----------------------------------+ | dataBits | 数据位,仅支持8 | +-----------------------------------+-----------------------------------+ | clock | spi时钟频率,number数 | | | 值,只能为6.5MHZ、13MHZ、26MHZ、5 | | | 2MHZ、3.25MHZ、1.625MHZ、812.5KHZ | +-----------------------------------+-----------------------------------+ | duplex | 不支 | | | 持是否全双工,仅支持0和1,0表示半 | | | 双工(仅支持输出),1表示全双工。 | +-----------------------------------+-----------------------------------+ - 返回值 number类型,1表示成功,0表示失败 -------------- **spi.send()** 写数据接口 - 语法 .. code:: lua spi.send(id,data) - 参数 +------+--------------------------------------------------------------+ | 参数 | 释义 | +======+==============================================================+ | id | SPI的ID,spi.SPI_1表 | | | 示SPI1,Air201、Air202、Air800只有SPI1,固定传spi.SPI_1即可 | +------+--------------------------------------------------------------+ | data | string类型,要发送的数据 | +------+--------------------------------------------------------------+ - 返回值 number类型,写成功的数据长度 -------------- **spi.recv()** 读数据接口 - 语法 .. code:: lua spi.recv(id,length) - 参数 +--------+------------------------------------------------------------+ | 参数 | 释义 | +========+============================================================+ | id | SPI的ID,spi.SPI_1表示 | | | SPI1,Air201、Air202、Air800只有SPI1,固定传spi.SPI_1即可 | +--------+------------------------------------------------------------+ | length | 要读取的数据的长度 | +--------+------------------------------------------------------------+ - 返回值 string类型,读取的数据内容 -------------- **spi.send_recv()** 读写数据接口 - 语法 .. code:: lua spi.send_recv(id,data) - 参数 +------+--------------------------------------------------------------+ | 参数 | 释义 | +======+==============================================================+ | id | SPI的ID,spi.SPI_1表 | | | 示SPI1,Air201、Air202、Air800只有SPI1,固定传spi.SPI_1即可 | +------+--------------------------------------------------------------+ | data | string类型,要发送的数据 | +------+--------------------------------------------------------------+ - 返回值 string类型,读取的数据内容 -------------- **spi.close()** 关闭接口 - 语法 .. code:: lua spi.close(id) - 参数 \|参数\| 释义\| \|iid\| SPI的ID,spi.SPI_1表示SPI1 - 返回值 number类型,1表示成功,0表示失败 -------------- 相关资料以及购买链接 -------------------- 相关开发板购买链接 `Air724UG开发板 `__ `Air724 开发板使用说明 `__ `相关软件资料下载 `__ 常见问题 -------- https://luatdoc.papapoi.com/638/ .. |image1| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200731173236579_111.png