|
LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。
TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。

功能特性:
1、主机采用硬件SPI实现,最高速度50MHz,TOOL本身是支持100MHz的,但由于带双向IO电平控制,所以最高速设置为50MHz
2、IO电平范围支持1.2V-5.0V。
3、支持波形展示。
LUA函数说明:
1、主机初始化函数
spi_bus("init", 参数1, 参数2, 参数3,参数4)
参数1: 配置SPI速度
0表示速度390.625K
1表示速度781.25K
2表示速度1.5625M
3表示速度3.125M
4表示速度6.25M
5表示速度12.5M
6表示速度25M
7表示速度50M
参数2:配置SPI时钟相位
0表示上升沿采集数据
1表示下降沿采集数据
参数3:时钟极性
0表示空闲时SCK时钟是低电平
1表示空闲时SCK时钟是高电平
参数4:数据bit选择(可选,如果不填写这个选项,默认8bit)
8表示SPI的8bit数据通信
16表示SPI的16bit数据通信
比如配置时钟速度50MHz,上升沿采集,SCK空闲时低电平,8bit数据 ,可以单独LUA调用spi_bus("init", 7, 0, 0)或者spi_bus("init", 7, 0, 0, 8)
也可以使用TOOL上位机操作:
上位机这里调用的函数是SPI_Init(7, 0, 0),这是因为上位机界面为了方便操作对函数spi_bus("init", 参数1, 参数2, 参数3)做了封装,原始定义位于上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中
2、主机读数据函数
返回值 = spi_bus("recive", 参数)
返回值:读取数据
参数 :要读取的数据个数
比如要读取10个数据,就可以rd = spi_bus("recive", 10),可以单独LUA调用
也可以上位机操作
上位机这里调用的函数是SPI_ReadData(0x00, 10, 16),原始定义位于上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中,是对函数spi_bus("recive", 参数)做了封装
3、主机写数据函数
spi_bus("send", 参数)
参数:发送的数据,可以发送字符串比如"12345678", 如果要发送实际数值,可以转移字符比如"\x00\x12\x34\x56"
比如要写10个数据,就可以spi_bus("send", "1234567890") ,可以单独LUA调用
也可以上位机操作
上位机这里调用的函数是SPI_WriteData(0x00, "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99"),原始定义位于上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中,是对函数spi_bus("send", 参数)做了封装
4、主机全双工读写函数
返回值 = spi_bus("sendrecive", 参数1, 参数2)
参数1: 发送的数据,可以发送字符串比如"12345678", 如果要发送实际数值,可以转移字符比如"\x00\x12\x34\x56"
参数2:数据长度,全双工方式,发送和接受数据长度是一样的,注意和参数1的字符数据个数一致。无论是8bit还是16bit个数数据,这个参数的单位是字节
返回值:返回读取的数据。
比如16bit模式,发送数据12个字节数据(每两个字节数据是一个16bit,如果与实际芯片通信,注意这两个字节的顺序,也就是大小端格式):\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC, 从机返回数据:\xdd\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC
[Lua] 纯文本查看 复制代码 spi_bus("init", 5, 0, 0, 16)
rd = spi_bus("sendrecive", "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC", 12)
print_hex(rd)

5、主机卸载函数
spi_bus("uninit")
直接调用函数spi_bus("uninit")即可
硬件接线连接:
SPI主机的引脚定义如下:
D0 : CS0 片选0
D1 : CS1 片选1
D5 : SCK 时钟
D2 : SDO MOSI
D3 : SDI MISO
接目标板的话,接线方式如下,大家可以根据需要选择是否接片选,不接也可以使用。

使用案例举例
1、H7-TOOL的SPI控制器主从机操作说明,20cm杜邦线接线方式,SPI全双工25MHz通信速度(2022-04-10)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=111864
2、H7-TOOL的SPI接口方式脱机烧录操作方法,已经发布(2022-07-27)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114301
3、两个TOOL的SPI控制器做16bit通信,全双工方式
主机添加如下代码:
[Lua] 纯文本查看 复制代码 spi_bus("init", 5, 0, 0, 16)
rd = spi_bus("sendrecive", "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC", 12)
print_hex(rd)
从机添加如下代码,设置超时时间是5秒
[Lua] 纯文本查看 复制代码 spi_bus("initslave", 0, 0, 5000, 16) --phase, polarity, timeout
print("")
print("SPI从机准备就绪")
print("接收")
rd = spi_bus("sendrecive", "\xdd\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC", 12)
print_hex(rd)
print("SPI从机已退出")

测试时,优先执行从机,让从机进入等待通信状态,然后执行主机发起全双工操作即可
|
|