利用USB2XXX实现对I2C/IIC总线数据传输进行监控分析记录,该方案在进行I2C/IIC总线数据传输调试,需要长时间记录数据时非常有用。
USB2XXX的并口读数据速度最大可高达30MByte/s,这个速度对于I2C总线速度(最大400Kbps)来说已经足够监控它的一举一动,因此我们使用USB2XXX实现了I2C总线Sniffer的功能。I2C监控功能对于针对I2C总线的相关开发是非常有帮助的,我们可以实时监测到I2C总线上收发的数据,因此我们很容易知道当前I2C总线上的数据是否正确。
利用USB2XXX来监控I2C总线上的数据非常简单,但是我还是非常详细的将步骤阐述下。
在开始使用USB2XXX进行I2C总线监控时需要做的一些准备工作,主要是软件安装和硬件连接。
软件下载:https://pan.baidu.com/s/1qWTcU9A
软件安装:上面链接下载的文件为一个可执行文件,双击该文件,一路下一步即可。
因为是I2C监控器,所以需要将I2C总线上的两根信号线SDA和SCL接入USB2XXX的数据采集引脚(并口的D0和D1),当然被测对象和USB2XXX还需要共地,我的被测对象是一个单片机和24C02模块,单片机通过I2C总线对24C02模块进行读写控制,我们的目的就是监控I2C总线上传输的数据。
下面是硬件连接示意图:
详细介绍软件使用时的一些注意事项,以及对软件上常用项目的简单介绍。
点击软件上的“操作”->“启动”按钮即可弹出启动设置界面,如下图所示:
设备号:若当前电脑上只连接了一个USB2XXX设备,该项选择0,若接有多个USB2XXX,则根据实际使用情况选择对应的设备。
通道号:我们使用并口的D0和D1两个引脚接入I2C总线,所以通道号选择为0,若使用了并口的D2和D3,则通道号选择为1,以此类推。
采样率:采样率设置一般大于I2C总线速率的4倍即可,我们选择5MHz,基本上已经可以采集高达1Mbps速度的I2C总线数据了。
设置好之后点击“确定”按钮即可启动I2C监控功能。
启动I2C监控之后,我们并不需要在软件上做什么操作,当I2C总线上有数据之后,在软件界面上会以列表的形式显示监控到的数据,数据缓存是以文件方式缓存,所以能缓存数据的大小仅仅取决于你硬盘的容量,若你硬盘容量够大,你完全不用担心数据缓存的问题。
接收到数据之后如下图所示:
行号:表示当前解析到的I2C数据在缓存文件中对应的行数,可以不用管。
类型:表示当前行数据的类型,I2C总线总共4种类型,起始(START),地址(ADDR),数据(DATA),停止(STOP)。
地址:表示当前行数据对应的设备地址,比如当前行为一个普通的数据,这个数据对应的设备地址即为该列对应的值。
读/写:指示当前数据传输的方向,若是主机向从机传输数据,则为写,若是从机向主机传输数据,则为读。
数据(Hex):具体的数据十六进制,也就是除了设备地址之外的数据,这个数据有可能是寄存器地址,也可能是寄存器对应的值。
数据(ASCII):具体的数据ASCII码,也就是将数据转换为ASCII进行显示,对于不能显示的字符用原点来表示。
响应:当前数据最后一个脉冲读到的SDA信号是高电平还是低电平,若是高电平则显示“NACK”,反之显示“ACK”。
上图其实就是单片机从24C02的0x08地址开始连续读取了8字节数据。
很多时候,为了方便阅读,我们希望数据自动转换为我们预先定义好的字符串,而不是冷冰冰的十六进制数据,这对于I2C总线协议的分析会有很大的帮助,比如解析SMBus或者PMBus协议,目前该软件需要自己添加协议文件,后面我们会提供很多已经配置好的协议解析文件,点击软件的“操作”->“配置协议解析”按钮即可打开协议配置界面,如下图所示:
字符串:这里设置我们解析到相应的数据之后,在主界面需要显示的字符串,这个字符串是方便我们自己阅读数据,所以按照自己对协议的理解写入字符串即可。
类型:指显示字符串时,匹配的数据的数据类型,数据类型有两个可选,ADDR和DATA,若选择了DATA,还需要设置解析对应的具体数值。
数据(HEX):当类型设置为DATA时,需要设置具体的数据值。
显示偏移:也就是数据匹配之后,字符串应该在匹配数据之后的多少行进行显示,比如我们要将24C02的任意子地址显示为“EEPROM子地址”字符串,那么我们匹配的数据就是24C02的设备地址,它之后偏移一行就是子地址,所以该偏移量设置为1。
读/写:指示当前需要解析显示的数据是主机发送的数据还是从机发送的数据,若是主机发送的数据则为WRITE,否则为READ。
地址(HEX):指示当前需要解析显示的数据对应的从机地址,该地址为7bit模式地址。
配置好协议解析列表文件之后,我们就可以以协议解析的模式进行显示数据了,点击软件的“操作”->“开启协议解析”即可开启协议解析功能,当新解析到I2C总线的数据之后,就会根据协议解析配置文件解析显示数据,如下图所示:
在“数据(Hex)”栏目,“[]”内的字符串就是协议解析之后显示的字符串,是不是非常的直观!
有时候数据若比较多,若每一个数据都显示一行,数据会比较分散,这时我们就可以使用合并显示数据模式显示数据,这样类似操作的数据就会合并显示在一行以内,点击软件的“操作”->“合并显示”即可开启合并显示功能,如下图所示:
注意:合并显示模式下不能进行协议解析,当开启合并显示模式之后,合并显示功能会自动关闭。
序号 | 型号 | 品牌 |
---|---|---|
1 | USB2XXX | usbxyz |