eric2013 发表于 2022-1-12 11:58:44

H7-TOOL的LUA小程序教程第4期:I2C总线主机模式操作说明(2023-12-05)

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

I2C知识点可以结合这个贴下学习:
H7-TOOL示波器捕获I2C波形操作说明(2021-12-05)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109953

static/image/hrline/4.gif
功能特性:

1、主机最高速度800KHz。
2、IO电平范围支持1.2V-5.0V。
3、支持波形展示。

LUA函数说明:

1、I2C主机初始化函数

i2c_bus("init", 参数)

参数:表示I2C速度,单位Hz,最高800KHz

此函数可以单独LUA调用,也可以在I2C控制器界面调用

上位机页面对应的是”扫描总线设备“按钮:



此按钮对调用的函数对i2c_bus("init", 参数)做了封装,原始定义位于上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中

2、I2C主机启动和停止函数

启动信号函数:i2c_bus("start")
停止信号函数:i2c_bus("stop")

这两个函数可以单独LUA调用,也可以在I2C控制器界面调用,不过I2C控制器界面对这两个函数进行了封装,由函数I2C_ReadData和I2C_WriteData调用,这两个函数的实现在上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中

3、I2C主机发送函数

返回值 = i2c_bus("send",参数)
参数:表示要发送的8bit地址,高7bit地址+1bit读写控制位,读写控制位 = 0表示写操作,=1表示读操作
返回值:返回0表示应答,返回1表示无应答。

比如对地址0x20进行写操作,就是i2c_bus("send",0x20|0) , 而读操作的话,就是i2c_bus("send",0x20|1)

发送数据可以直接发送字符串,比如i2c_bus("send",”123456789“),发送实际数值可以使用转移字符i2c_bus("send","\x00\x12\x34\x56")

上位机界面对应实现:



上位机调用的函数I2C_WriteData对函数i2c_bus("start"), i2c_bus("send",参数) 和 i2c_bus("stop")进行了封装,原定义在上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中

4、I2C主机接收函数
返回值 = i2c_bus("recive", 参数)
参数   :表示读取的字节个数。
返回值:返回的数字是字符串方式的,如果要数值方式可以使用LUA函数string.byte转换下(操作案例里面有使用)。

比如读取10个字节数据就可以rd = i2c_bus("recive", 10),rd是返回的数据,

可以单独LUA函数调用,上位机操作对应实现如下:



上位机调用的函数I2C_ReadData对函数i2c_bus("start"),2c_bus("recive", 参数)和 i2c_bus("stop")进行了封装,原定义在上位机软件包路径h7toolPC_release\USBBus里面的usb_bus.lua文件中

硬件接线方式:

I2C控制器引脚定义
D9 : I2C_SCL, 开漏内部集成上拉电阻2K欧
D7 : I2C_SDA, 开漏内部集成上拉电阻2K欧

https://img.alicdn.com/imgextra/i2/299314119/O1CN01Xc6vTh1gIY6q3Xkdc_!!299314119.png

举例说明:

每个案例都有详细说明

H7-TOOL 的 I2C 控制器驱动 I2C 从机实现操作说明
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112463

H7-TOOL 的 I2C 接口方式脱机烧录操作方法,已经发布
https://www.armbbs.cn/forum.php?mod=viewthread&tid=113998

H7-TOOL的I2C控制器驱动18bit分辨率ADC芯片MCP3421操作说明,简单易用(2021-11-20)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109658

H7-TOOL的I2C控制器驱动EEPROM操作说明,支持AT24C02/04/08/16/32/64/128,仅需读写两个函数,随意访问(2021-10-24)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109261

H7-TOOL的I2C控制器驱动光照传感器BH1750操作说明,简单易用(2021-10-24)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109265

H7-TOOL的I2C控制器驱动陀螺仪MPU6050操作说明,简单易用(2021-10-24)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109264

H7-TOOL的I2C控制器驱动气压传感器BM085/BM180操作说明,简单易用(2021-10-24)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109266


eric2013 发表于 2022-1-13 18:30:25

更新完毕。

www2205290064 发表于 2022-1-13 23:07:46

白工,辛苦,期待已久, 教程非常好

eric2013 发表于 2022-1-14 09:30:28

www2205290064 发表于 2022-1-13 23:07
白工,辛苦,期待已久, 教程非常好

{:33:}

missfox 发表于 2022-1-17 16:44:36

这么来看,用法和C没什么区别了。

lw240320 发表于 2023-5-11 18:16:03

我使用的是离线Lua小程序,请问如何配置IIC通信速率?

lw240320 发表于 2023-5-11 18:16:23

我使用的是离线Lua小程序,请问如何配置IIC通信速率?

eric2013 发表于 2023-5-11 18:38:24

lw240320 发表于 2023-5-11 18:16
我使用的是离线Lua小程序,请问如何配置IIC通信速率?
使用的LUA函数I2C_InitSlave,I2C控制器页面对应的原始LUA文件在这个路径下


lw240320 发表于 2023-5-12 08:55:38

eric2013 发表于 2023-5-11 18:38
使用的LUA函数I2C_InitSlave,I2C控制器页面对应的原始LUA文件在这个路径下

谢谢,问题解决了

eric2013 发表于 2023-12-3 09:38:37

此贴更新为I2C主机模式。

eric2013 发表于 2023-12-5 10:37:43

2023-12-05

重新编写了下操作说明,比之前看着更好理解。

lib钱 发表于 2023-12-15 09:04:43

提议增加I2C监测。

eric2013 发表于 2023-12-15 09:11:32

lib钱 发表于 2023-12-15 09:04
提议增加I2C监测。

别把聊天内容贴出来。

我已经开了新帖:

提议增加一个I2C监测多设备通信功能,本质是个低配版I2C从机,不做应答
https://www.armbbs.cn/forum.php?mod=viewthread&tid=122284&fromuid=58
(出处: 硬汉嵌入式论坛)

页: [1]
查看完整版本: H7-TOOL的LUA小程序教程第4期:I2C总线主机模式操作说明(2023-12-05)