通用SPI接口 =========== 概述 ---- Air722UH/Air722UG模块提供1个通用SPI接口。 ## SPI接口管脚定义 +-------+---+-----+---+---+-----------------------+----------+------------+ | 管 | 管 | 上 | I | 管 | 电气特性 | 作用 | 备注 | | 脚名 | 脚 | 电 | / | 脚 | | | | | | 号 | 状 | O | 描 | | | | | | | 态 | | 述 | | | | +=======+===+=====+===+===+=======================+==========+============+ | S | 1 | IN | I | S | VILmin=-0.3V | 主设备 | 电压域是V_ | | PI1_D | 9 | PUT | O | P | VILmax=0.6V | 数据输出 | GLOBAL_1V8 | | OUT( | | PUL | | I | VIHmin=1.2V | , | 不用则悬空 | | GPIO | | L_D | | 接 | VIHmax=2.0V VOHmin= | 对应MOSI | | | _11) | | OWN | | 口 | V_GLOBAL_1V8*0.7 | | | | | | | | | VOLmax= | | | | | | | | | V_GLOBAL_1V8*0.3 | | | +-------+---+-----+---+---+-----------------------+----------+------------+ | SPI1_ | 1 | IN | I | S | 同上 | 主设备数 | 同上 | | DIN( | 8 | PUT | O | P | | 据输入, | | | GPIO | | PUL | | I | | 对应MISO | | | _12) | | L_D | | 接 | | | | | | | OWN | | 口 | | | | +-------+---+-----+---+---+-----------------------+----------+------------+ | SPI | 1 | IN | I | S | 同上 | 时钟信 | 同上 | | 1_CLK | 7 | PUT | O | P | | 号,由主 | | | (GPI | | PUL | | I | | 设备发出 | | | O_9) | | L_D | | 接 | | | | | | | OWN | | 口 | | | | +-------+---+-----+---+---+-----------------------+----------+------------+ | SPI1 | 1 | IN | I | S | 同上 | 从设 | 同上 | | _CS( | 6 | PUT | O | P | | 备使能信 | | | GPIO | | PUL | | I | | 号,由主 | | | _10) | | L_D | | 接 | | 设备控制 | | | | | OWN | | 口 | | | | +-------+---+-----+---+---+-----------------------+----------+------------+ SPI接口连接方式 --------------- SPI它以主从方式工作,这种模式通常有一个主设备和一个或多 个从设备,连接方式如下图所示: |image1| 当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。 +-----+ | ## | | spi | | lu | | a接 | | 口 | +-----+ **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表示失败 -------------- .. |image1| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200731173236579_111.png