纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 7364|回复: 0

利用USB-I2C实现从机I2C收发数据

[复制链接]
发表于 2014-5-13 10:32:42 | 显示全部楼层 |阅读模式
Ginkgo USB-I2C适配器固件从V2.8.17版本开始支持I2C从机功能,下面就针对这个功能的使用做简单介绍。
实现目的:
1、I2C从机接收数据,也就是接收I2C主机的数据并显示出来;
2、I2C从机发送数据,也就是把数据传输到适配器里面后,主机能将这些数据读出来;
上位机测试软件用Ginkgo_USB-I2C_Classic_Setup_v2.9.1.exe软件,大家可以到我们官方网站下载。
从机接收数据工作流程:
初始化设备为从机模式(需设置从机地址)->自动接收数据->调用VII_SlaveReadBytes()函数返回数据;
现在我们用两个USB-I2C适配器对接,一个当主机,一个当从机,由于适配器内部I2C总线上没上拉电阻,所以需要在SDA和SCL两根信号线上分别接一个4.7K的上拉电阻到3.3V,然后运行USB-I2C Classic软件,由于我们要配置适配器工作在从机模式下,所以在选择设备类型为从机之前需要先设置好相关参数,因为在选择从机模式后会根据界面设置相关参数自动初始化适配器为从机,其设置从机相关参数如下:
SLAVE1.jpg
注意:Device Addr(Hex)这里就是设置从机地址的参数,主机在读写数据的时候都需要设置从机地址为这个数据,否则读写数据会出错,然后设置好发送周期(根据主机发送数据频率设置,由于我们这里主机是手动发送数据,所以可以把周期设置长一点),点击自动发送,这样软件就会周期性的调用VII_SlaveReadBytes()函数来获取适配器接收到的数据,如果没接收到数据,这个函数会返回0字节数据。
这些都做好后,从机就等待主机发送数据了,如果接收到数据后就在PC调用VII_SlaveReadBytes()函数的时候将数据返回,现在主机做如下设置并点击发送,从机界面就能显示接收到的数据:
SLAVE2.jpg
从机发送数据工作流程:
从机发送数据需要先将数据写入适配器内部缓冲区中,然后主机产生时钟信号后,从机就会自动把数据发送出去,所以在从机设置设置好相关参数后,设置好要发送的数据,然后点击发送,数据就发送到适配器内部缓冲区了,然后主机就可以将数据从从机读回来。
从机发送数据:
SLAVE3.jpg
主机读取数据:
SLAVE4.jpg

后记:
从机模式在协助主机程序开发时有很大的用处,在不确定主机控制对象是否正常工作或者主机控制程序是否正常工作的时候可以利用从机来验证主机控制程序,这样可以加速定位问题所在。
I2C通信的时候,在同一个总线上可以挂多个设备,主机和从机之间的数据传输都是通过地址来寻址的,所以在调试的时候一定要注意主机和从机的地址必须匹配,否则会出现无法正常通信的问题。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-22 10:34 , Processed in 0.083460 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表