JI2C
简介
JI2C是一款用于快速读写I2C器件寄存器的PC上位机,配合JTool-I2C模块使用,兼具界面,功能,性能等多方面的优势。
软件多开
- 多个设备可同时使用
- 插拔自动连接/断开
- 具有切换设备功能
界面设计
- 扁平化界面,告别视觉疲劳
- 响应式布局,合理的拖拽/拉伸
- 大容量日志框,不卡顿,不死机
- 参数自动保存
强大功能
- 快速基本读写,无需关心Start,Restart,Stop,ACK等底层协议细节
- 最大单次连续读写1KByte
- 器件分组,快速切换
- 支持中断触发和周期触发,自动运行
- 支持一键读取全部,一键初始化
- 支持生成实时曲线,传感器数据一眼能看见
- 强大的自研曲线控件,多通道数据展示,支持任意拖拽、缩放、截取、显示鼠标所在值
- 支持计算公式,满足单位转换和获取有效位
- 支持FIFO解析
- 支持CRC读写校验
- 日志实时缓存,曲线数据实时缓存
- 真模拟从机功能
安装
JI2C支持在Windows 7及以上的系统运行。
Win8 及以上
无需安装上位机,无需安装USB驱动,下载exe文件即可使用,插入模块自动识别。

Win7
- 需要安装Dot NET Framework4.8框架 进入下载页面
- 手动安装JI2C WinUSB驱动 下载
- 需知:官方已不再维护Win7系统,部分Win7可能会有不兼容问题,请使用更高版本的Windows
使用说明
插入设备
当插入JTool-I2C模块后,上位机会自动识别并连接。当有多个设备插入时,可点击切换设备菜单切换到需要用的模块。在顶部栏可以设置VCC电压,IO电平(即I2C总线电平),I2C速率。

VCC电压、IO电平、I2C速率设置后会保存在模块内部,重新插入保持不变。
扫描从机地址
点击扫描从机按钮,模块将依次检查每个地址(0x00~0xFE)是否有ACK,用来判断总线上有哪些器件,扫描出来的地址以8位地址展示(7位I2C地址+1位读写位),使用写地址,即最后一位为0。(为什么不使用7位地址模式:因为8位更加直观,多数器件手册用的是8位,数据流更容易区分。实际上都是一样的,展现方式不同)

日志框显示选项
日志框侧边6个按钮分别为以下功能:
- 日志框满自动清空:超出日志框显示范围自动清空,长时间运行可节省应用内存
- 显示读数据:选中后,读取到的数据会显示到日志框中
- 显示写数据:选中后,写入的数据会显示到日志框中
- 显示读写地址:选中后,读写的地址会显示到日志框中
- 显示时间:日志框添加蓝色的时间标记
- 显示行号:日志框显示行号
左上角有日志实时缓存至文件的开关,适用于长时间运行保存数据,避免软件崩溃导致数据丢失

简单读写
JTool-I2C模块内部已经封装好I2C的Read/Write函数,我们只需要输入从机地址、寄存器地址、写数据(或读长度)就可以读写了。在应用软件下方的读写区域,设置好相关的参数,点击读或写,日志框会显示相关结果。如果选中了“读完更新”选项,读出的数据会覆盖到读写框。下面是各个设置项的解释。

- 从机地址:8位地址(带读写位0),如果输入的读写位是1,会自动转换为0(即无需填写读地址,如果是读,模块封装的函数会自动置1)
寄存器地址类型:根据器件手册设置,指的是寄存器地址(或命令)的长度
- None:无需寄存器地址,直接读写
- Reg8bit:1字节的寄存器地址或命令
- Reg16bit:2字节的寄存器地址或命令,高字节在前
- Reg24bit:3字节的寄存器地址或命令,高字节在前
- Reg32bit:4字节的寄存器地址或命令,高字节在前
- 寄存器地址:要读写的寄存器,长度由2所设置的项决定,某些器件使用的命令,这里也可以当作命令使用
- 读写框:读,写数据框是一个,读到的数据会更新此文本框
- 读写长度:与4读写框是联动的,二者设置一项即可
- 读完更新:选中后,读出的数据会更新到4读写框,否则不会更新
- 写后读取:选中后,如果是写操作,写完会自动再读一次,用于检验数据是否已经正确写入寄存器
- 读/写按钮:读写按钮分开,更加方便
器件分组批量读写
通常一个I2C器件里包含多个寄存器,有的用于配置参数,有的用于存储传感器数据。如果每次都单独的修改地址,再去读写,重复的工作量太大,所以JI2C提供一个扩展页面,用于归纳每个器件的信息描述和操作方法。软件退出时会自动保存已添加的器件,以便下次使用,快速打开。

图中各个区域的解释如下:
- 添加/删除/选择器件,备注名称
- 每个器件都有4种批量操作的方式,可切换选择
- 当前所选器件的从机地址、寄存器地址类型、中断类型。此处的配置将用于所选器件下面的所有批量列表
- 列表显示区域
- 批量操作按钮(4种批量操作各不一样)
- 批量列表中的添加项、删除项、移动项等操作
寄存器表
寄存器表的目的是能最快速的查看器件内部的所有寄存器,了解当前状态,具有一键读取全部功能。每个寄存器最大可设置为8个字节,覆盖从UInt8到Double的所有类型。可以为每个寄存器编辑描述,随时查看,描述框聚焦展开,失焦折叠。另外,在寄存器值文本框内输入数据,回车可以直接写入,方便快速的修改其中某个寄存器。

初始化
初始化表的目的是在器件插入电脑后,能最快速的配置为我们预先设定的参数,一键初始化,让器件运行起来。每条初始化指令后面具有单独写入按钮,右键该按钮可以修改备注。取消勾选可以暂时不初始化该指令。

如果有多种不同的参数配置怎么办?这里有两种方法:
1. 使用前面的选框来选择不同的初始化
2. 在分组里面添加一个该器件的副本周期触发
周期触发表可以按顺序定时周期执行表里面的读写指令,每条指令可配置延时,配置读/写选择。如果是读指令,可以配置读数据的曲线格式解析,一键生成实时曲线。

中断触发
对于大部分传感器来说,数据采集完成后,都是通过中断来通知主机进行读取,所以JTool-I2C模块带有一个中断引脚,当检测到产生中断后,会触发中断列表里的读写指令,实现自动读写。中断触发也可以配置生成曲线。中断类型可配置为:
- 无
- 上升沿
- 下降沿
- 双边沿
- 高电平
- 低电平
电平中断会在保持该电平时一直触发,电平中断目前最快10ms触发一次
CRC校验与读延时
可以给每一个器件分组配置CRC校验选项和读延时选项

CRC校验
部分器件读写带有CRC校验,并且写入时需要校验正确才接受数据,所以JI2C提供了一个字节的CRC校验选项,更加便捷

- 使能校验
- 选择校验区间:仅读写内容/全部(包含地址)
选择校验类型,支持如下校验类型
- SUM:累加
- XOR:异或
- CRC8
- CRC8-ITU
- CRC8-ROHC
- CRC8-MAXIM
- CRC8-自定义
- 当选择CRC8-自定义时,配置所需自定义参数
- 校验测试:设置好校验类型后,可以测试一下是否符合预期
校验测试功能,输入16进制字节数组,点击计算,即可得出校验结果

使能校验之后,当前器件的读写操作均会执行校验,须注意:设置的读写长度请不要包含校验字节,软件会自动+1

读取时,会多读一个字节,并将校验结果显示到日志框
写入时,会自动计算出校验字节,添加到写入数据的末尾,一并写入
读延时
部分器件在读取时,写完寄存器地址(或指令)后,需要等待一段时间,让从机完成数据采集,再继续传输,所以JI2C提供一个读延时功能

- 使能读延时
- 设置Sr前延时时间,最大100ms
- 设置读地址后延时时间,最大100ms
生成实时曲线
在周期触发和中断触发中,读数据可以查看实时曲线。
首先,曲线是基于读指令的,就是说每一条读指令都可以生成曲线,可以打开多个曲线窗口。选中曲线复选框后即可弹出曲线窗口,取消选中可关闭曲线(也可以直接在曲线窗口中关闭)。
其次,在打开曲线窗口之前,需要编辑曲线格式,告诉应用程序该如何解析此条数据
编辑曲线格式


曲线格式编辑步骤如下:
- 输入通道数,回车,或者点击右上角添加按钮(每一条读指令可以包含多个字节的,可一次连续读取含多个通道)
- 给通道命名,会在曲线窗口中显示,便于区分
- 选择该通道的数据类型,此选项用于判断通道占用的字节数,并且正确解析为需要的数据
- 选择高字节在前还是低字节在前
- 选择是否使用时间作为横坐标index,如果不使用,横坐标为数据点的序号
- 如需该通道的数据进行计算后绘图,请输入公式(例如需要单位转换、需要屏蔽高位、需要取固定小数位等等)
- 支持FIFO读取,即每个通道含有多个数据,此时需要考虑通道优先还是索引优先(如果只有一个通道,或者每个通道只有一个数,可以忽略此项)
注意:曲线生成支持多通道,支持FIFO多数据,但是(数据类型、通道数、FIFO数)计算出来的字节数长度必须与该读指令的读取长度保持匹配(相等或为它的整数倍),否则会报错,并且清空列表。
计算公式
点击提示按钮,可查看支持的运算符

用[x]表示该通道的自变量,公式中的数必须以十进制表示,不支持十六进制
小技巧:
- 如需单位转换,可使用 * /
- 如需偏移,可使用 + -
- 如需屏蔽高位,可使用按位与 &
- 如需取固定小数位,可使用Round
- 某些通道不是数据,用不上,可直接*0
注意:计算公式必须保持语法的正确性,否则会报错!
曲线窗口
自研高性能曲线控件,曲线窗口的功能非常简单直观
暂停/开始:暂停后,数据不再输入到曲线窗口,此时可缩放,拖拽,截取
鼠标左键按住拖拽
鼠标右键按住截取到新窗口
鼠标滚轮纵向缩放
Ctrl + 鼠标滚轮横向缩放
Ctrl + A 可缩放整个曲线到适应窗口大小
自适应:具有X、Y轴自适应的选项功能,开启后将在对应轴上缩放至可视范围内
缓存:这里的缓存指的是控件内部缓存的数据量,数据到达设置值之后会清空数据,用来节省内存

曲线数据实时缓存至文件功能,适用于长时间运行保存数据,避免软件崩溃导致数据丢失

静态数据生成曲线
当我们保存了曲线数据之后,如果想再通过这个数据看曲线,推荐使用JCurve,支持复制粘贴/打开文件的方式生成静态数据曲线

模拟从机
作为从机,需要预先填入数据,供主机随时读写。JTool-I2C模块内部可模拟为从机,最大支持400K的速率,具有最大1KByte的缓存,默认全为0xFF。点击菜单栏模拟从机按钮,进入从机界面

- 配置从机地址(8位模式),可选择响应所有地址
- 配置寄存器地址类型,此项也可作为指令类型
配置内存映射,给指定的地址填充需要的数据
- 可添加多条映射
- 映射之间地址可间隔,未填充的地址数据为0xFF
- 映射之间地址不可重叠
- 映射地址超过1024后,将从0继续排列
- 主机读取时,会读取到此列表的数据
- 主机写入时,此列表的数据会被实时更新
- 点击开始模拟,即可进入从机模式
进入从机模式后,日志框会实时显示来自主机的读写数据

- S:Start条件
- Sr:Repeated Start条件
- P:Stop条件
固件升级
JTool-I2C模块支持固件升级,服务器上传最新固件后,会提示下载并升级,点击帮助->关于菜单,先下载最新固件,随后点击进入升级按钮,模块会模拟出一个U盘,将下载的固件bin文件拖入U盘内即可升级完成

常见问题
上位机无法运行?
请检查系统是否包含.Net Framework4.8框架杀毒软件或微软自带Defender报病毒?
请关闭杀毒软件、Defender,或者添加信任模块插入不识别?
1. 如果是Win7系统,需手动安装Winusb驱动
2. 更换其他电脑试试扫描不到从机地址?
1. 如果器件已经接上别的主机,请先断开,或将其他主机IO口置为输入,避免冲突
2. 检查器件是否有引脚需要接固定电平才能使能I2C接口
3. 检查配置的I2C速率是否超过器件最大能接受的I2C速率
4. 如果使用外部电源供电,检查是否已经共地批量读写时提示I2C未收到ACK?
检查扩展页面的从机地址有没有配置好为什么扫描到几十个或一百多个从机地址?
一般接一个器件扫描出一个是正常的,部分EEPROM由于需要分区,最多有8个地址。
如果一下子扫描出很多地址,说明I2C总线异常:
1.线接错了
2.器件未正常运行
3.器件的I2C接口未使能
4.I2C速率过高需不需要外接上拉电阻?
模块内部自带10K上拉电阻,无需再接上拉。