添加I2C设备,并进行I2C接口测试
在youyeetoo X1的官方资料中,提供了Windows驱动开发以及I2C接口的指导,并提供了I2C接口的测试工具。
根据指导,可以进行自己的I2C设备的开发,以及通讯测试。
一、清理系统现有的测试设备
在系统设备管理中,将下面的设备删除,并勾选删除驱动:
清理后,结果如下:
这4个未知设备,2个是NFC使用,1个是SPI使用,还有一个是I2C3使用。
二、添加新的设备和驱动
我后面需要连接SHT30进行测试,其I2C地址为0x44,参考官方资料,进行如下的操作:
1. 生成dsl文件:
- asl.exe /tab=DSDT /c
- iasl.exe -ve .\DSDT0000.bin
- iasl.exe -ve .\DSDT0000.dsl
2. 修改dsl文件,去掉多余的信息,并修改对应的I2C3的配置:
将默认的0x50,修改为0x40
3. 生成aml文件:
- iasl.exe -ve .\DSDT0000.dsl
4. 将设备信息写入注册表:
- asl.exe /loadtable DSDT0000.aml
然后重启电脑,注册表中就会存在对应的设备信息了
5. 修改官方提供的驱动配置:
6. 安装驱动:
安装完成后,重启电脑,再查看设备管理器,就能够看到设备区东正确安装了:
从上图可以看到,0x44的设备,已经成功安装驱动。
三、不挂I2C设备测试
再不挂接I2C设备的情况下,打开I2C测试工具,可以连接I2C端口:
但是读取会失败:
写入也会失败:
需要注意的是,如果挂接了设备,但I2C设备的地址不是0x44,则出现的错误信息,和上面的完全一样。
四、挂接I2C设备测试
1. I2C从设备制作
为了方便测试,我用硬禾的12指神探,做了一个I2C从设备,方便进行I2C通讯的测试。
这个I2C从设备,内部有256个寄存器,地址为0x00~0xFF,设备初始化的时候,所有的寄存器设置为0x00,读取的时候,每次返回的数据宽度为4位8bits数据。
2. 连接I2C从设备到开发板
实际连到开发板上进行测试的时候,还挂接了一个逻辑分析仪,以便分析通讯的数据:
3. 默认读取测试:
默认情况下,从I2C从设备去读数据,返回的为 00 00 00 00
在I2C从设备的调试输出窗口,也能看到当前的I2C请求为从地址为0x00的寄存器读取数据,以及实际返回的数据。
4. 写入数据测试:
点击写入数据,会成功写入:
在I2C从设备的调试输出窗口,也能看到当前的I2C请求向0x00的寄存器写入数据,以及实际写入的数据。
5. 读取写入后的数据:
再次点击读取,就能够读取到前面写入的数据了:
五、逻辑分析仪分析通讯
写入数据的时候,逻辑分析仪抓取到的数据结果如下:
可以看到,操作的I2C设备地址为0x44,向寄存器地址0x00开始写入了12 34 56 78 90 AB CD EF 8位8bits数据。
读取数据的时候,逻辑分析仪抓取到的数据结果如下:
可以看到,操作的I2C设备地址为0x44,先向I2C从设备发送读数据的命令,然后过了一段时间后,I2C从设备开始返回数据
12 34 56 78,一共4位8bits数据。
通过以上的步骤,就能够完成I2C设备的正常通讯了,后续就可以在此基础上,操作I2C通讯,来完成具体传感器设备的数据读取了。
添加I2C设备,并进行I2C接口测试
在youyeetoo X1的官方资料中,提供了Windows驱动开发以及I2C接口的指导,并提供了I2C接口的测试工具。
根据指导,可以进行自己的I2C设备的开发,以及通讯测试。
一、清理系统现有的测试设备
在系统设备管理中,将下面的设备删除,并勾选删除驱动:
清理后,结果如下:
这4个未知设备,2个是NFC使用,1个是SPI使用,还有一个是I2C3使用。
二、添加新的设备和驱动
我后面需要连接SHT30进行测试,其I2C地址为0x44,参考官方资料,进行如下的操作:
1. 生成dsl文件:
- asl.exe /tab=DSDT /c
- iasl.exe -ve .\DSDT0000.bin
- iasl.exe -ve .\DSDT0000.dsl
2. 修改dsl文件,去掉多余的信息,并修改对应的I2C3的配置:
将默认的0x50,修改为0x40
3. 生成aml文件:
- iasl.exe -ve .\DSDT0000.dsl
4. 将设备信息写入注册表:
- asl.exe /loadtable DSDT0000.aml
然后重启电脑,注册表中就会存在对应的设备信息了
5. 修改官方提供的驱动配置:
6. 安装驱动:
安装完成后,重启电脑,再查看设备管理器,就能够看到设备区东正确安装了:
从上图可以看到,0x44的设备,已经成功安装驱动。
三、不挂I2C设备测试
再不挂接I2C设备的情况下,打开I2C测试工具,可以连接I2C端口:
但是读取会失败:
写入也会失败:
需要注意的是,如果挂接了设备,但I2C设备的地址不是0x44,则出现的错误信息,和上面的完全一样。
四、挂接I2C设备测试
1. I2C从设备制作
为了方便测试,我用硬禾的12指神探,做了一个I2C从设备,方便进行I2C通讯的测试。
这个I2C从设备,内部有256个寄存器,地址为0x00~0xFF,设备初始化的时候,所有的寄存器设置为0x00,读取的时候,每次返回的数据宽度为4位8bits数据。
2. 连接I2C从设备到开发板
实际连到开发板上进行测试的时候,还挂接了一个逻辑分析仪,以便分析通讯的数据:
3. 默认读取测试:
默认情况下,从I2C从设备去读数据,返回的为 00 00 00 00
在I2C从设备的调试输出窗口,也能看到当前的I2C请求为从地址为0x00的寄存器读取数据,以及实际返回的数据。
4. 写入数据测试:
点击写入数据,会成功写入:
在I2C从设备的调试输出窗口,也能看到当前的I2C请求向0x00的寄存器写入数据,以及实际写入的数据。
5. 读取写入后的数据:
再次点击读取,就能够读取到前面写入的数据了:
五、逻辑分析仪分析通讯
写入数据的时候,逻辑分析仪抓取到的数据结果如下:
可以看到,操作的I2C设备地址为0x44,向寄存器地址0x00开始写入了12 34 56 78 90 AB CD EF 8位8bits数据。
读取数据的时候,逻辑分析仪抓取到的数据结果如下:
可以看到,操作的I2C设备地址为0x44,先向I2C从设备发送读数据的命令,然后过了一段时间后,I2C从设备开始返回数据
12 34 56 78,一共4位8bits数据。
通过以上的步骤,就能够完成I2C设备的正常通讯了,后续就可以在此基础上,操作I2C通讯,来完成具体传感器设备的数据读取了。
举报