当前位置:网站首页>CP2112使用USB转IIC通信教学示例
CP2112使用USB转IIC通信教学示例
2022-06-30 10:09:00 【优信电子】
CP2112使用USB转IIC通信教学示例
原文链接:https://www.yourcee.com/newsinfo/3026578.html
简介
CP2112是一个高度集成的USB至SMBus桥控制器,是一个标准的HID类设备,因此无需定制驱动程序,芯片产商提供windows端配置工具以便我们快速将需要的功能进行调试,并且另外板载有8个GPIO引脚可配置,今天我们主要对USB转IIC通信的功能进行调试并记录,另外也会简单介绍GPIO引脚如何进行配置。
CP2112模块 & IIC器件LM75
我们USB转IIC调试的话显然是需要一个IIC器件才能进行调试的,这里选择LM75因为其内部寄存器简单,无需在调试前花费大量的时间去研究如何驱动这款温度传感器,我们拿到一款LM75模块如下图所示
LM75简介
模块采用IIC通信,并在温度报警端口有上拉LED灯,仅需配置温度报警寄存器输出的极性即可控制上面的LED亮灭,能正常控制板载LED,那么CP2112从USB转换为IIC的数据就是成功的一次写操作示例。
我们在产品详情页以及手册中可以找到我么需要的几大参数
LM75通信8位IIC写地址:0x90
LM75配置寄存器指针地址:0x01
8位配置寄存器中B2位写0和1为控制OS极性,如下图所示
那么下面我们只需控制CP2112将写地址为0x90(因为后面上位机里面需要填8位写地址,所以这里没有放7位地址)的IIC器件配置其0x01寄存器中的数据分别为0x00和0x04,那么上面的指示灯就会出现亮和灭两种现象,OK,思路清晰下面装好CP2112配置工具看到界面进行配置。
接线不必多说,供电口与IIC通信口接上即可。
需要相关资料的可以在私信或留言邮箱,没有CSDN账号可以查看原文之后再留言!
CP2112参数配置
插上CP2112开发板之后看到下方配置

正确插上模块后点击连接,如果连接不上换根能正常通信的数据线,碰到很多人大概率是这个问题导致的
在配置界面配置上图 3 、4 、 5 几个选项,地址可以随便填,只要和正在通信的器件IIC地址不同即可
填完点击6设置,下方会出现 HID_SMBUS_SUCCESS 提示为设置成功。
保险起见点击 第7个选项 获取一下当前设置 看设置是否改变来判断刚才是否设置成功了。
CP2112数据传输配置
写IIC数据
点击 data Transfer 看到第二页,在下方写数据的区域填写LM75地址0x90,接下来需要往0x01寄存器中写入0x03的数据(0x00也可以,B2位为0现象一样是灯灭),此时灯为灭的状态,虽然正常灯本来就是灭的所以我们啥也看不出来

重新往0x01寄存器中写入数据0x04

此时灯亮,再写入0x00时灯灭,下面也会显示为success提示发送成功,现象正常写入操作正常。
读IIC数据
重新按照上面写的流程往0x01寄存器中写入0x04之后再读出数据,对比是否正确
这里需要注意几个点,需要读取的寄存器是8位的地址,里面的数据也是8位,因此我们请求的时候寄存器应该是1个字节,读取到的数据也是1个字节,如果你驱动的是其他传感器可能会是2字节或更多
那么我们开始填写参数,如下所示
需要注意的几个点是这里的顺序必须要按顺序操作,不然会提示超时通信也会失败。
第一步注意一下寄存器本身的字节数和获取出来的数据的字节数匹配上即可。
第二步这个操作比较迷惑不清楚为什么还要获取一下数据,并且里面的字节数是寄存器和寄存器中的数据加起来的字节,手册没找到为什么只看到说明要这样操作,照抄。
后面数据都填好之后的 4→5→6这三个步骤顺序必须是对的,否则会报超时
这个操作比较疑惑的是在4这里获取完了数据还要在5这里再获取一次,然后6这里才能显示到上位机上面,下面是CP2112在4和5进行IIC通信时逻辑分析仪采集的数据,希望有大佬能够解惑这步操作。

虽然不清楚这里为什么,但是似乎不影响正常获取数据到上位机,这个步骤也是官方手册中说明得来的问题不大。
OK,到这里就把IIC的读取和写入搞定的话基本IIC通信就不会有问题了。
GPIO输入输出配置
点击 Pin Configration 来到引脚配置界面,如下图所示可以看到有两大部分,左侧为引脚的模式配置,右侧为引脚的值(也就是高低电平还是开漏)

CP2112板子上稍微看一下LED灯连接的芯片引脚对下芯片手册可以知道两个LED是上拉到GPIO0和GPIO1的,默认状态下引脚处于输入模式,我们点击配置为输出,灰色部分的Open-Drain会亮起,再点击选择为Push-Pull(推挽) ,第二步将模式设置进芯片

这个时候灯仍然不会亮起,因为默认输出的值为高电平,上拉LED需要低电平才会亮起,设置为低电平之后如果灯亮起则设置成功,没有亮说明有问题没有配置好

灯亮起,GPIO操作成功!
总结
本次对CP2112功能调试过程较为顺利,虽然中间碰到一些比较疑惑的问题,相信经过后续的研究努力能够分析出原因。
本期文章希望能给到大家帮助,也希望优信能够一直陪伴大家共同学习共同进步,欢迎一键三连,感谢各位大佬!
边栏推荐
- Migrate full RT thread to gd32f4xx (detailed)
- Test memory read rate
- & and - > priority
- [rust weekly database] num bigint - large integer
- 内存逃逸分析
- 05_ Node JS file management module FS
- JS FAQs
- 【Proteus仿真】Arduino UNO LED模拟交通灯
- The AOV function of R language was used for repeated measures ANOVA (one intra group factor and one inter group factor) and interaction Plot function and boxplot to visualize the interaction
- Pytorch notes: validation, model eval V.S torch. no_ grad
猜你喜欢

无心剑中译狄金森《灵魂择其伴侣》

从0使用keil5软件仿真调试GD32F305
[email protected]+ Alibaba cloud +nbiot+dht11+bh1750+ soil moisture sensor +oled"/>Skill sorting [email protected]+ Alibaba cloud +nbiot+dht11+bh1750+ soil moisture sensor +oled

mysql数据库基础:约束、标识列

Viewing technological changes through Huawei Corps (V): smart Park

透过华为军团看科技之变(五):智慧园区

Go zero micro Service Practice Series (VIII. How to handle tens of thousands of order requests per second)

CSDN blog operation team 2022 H1 summary

The programmer was beaten.
[email protected]语音模块+stm32+nfc"/>技能梳理[email protected]语音模块+stm32+nfc
随机推荐
Pandora IOT development board learning (HAL Library) - Experiment 1 running lantern (RGB) experiment (learning notes)
GD32 RT-Thread DAC驱动函数
马斯克推特粉丝过亿了,但他在线失联已一周
June training (day 30) - topology sorting
微信推出图片大爆炸功能;苹果自研 5G 芯片或已失败;微软解决导致 Edge 停止响应的 bug|极客头条...
内存逃逸分析
今晚19:00知识赋能第2期直播丨OpenHarmony智能家居项目之控制面板界面设计
Qt之实现QQ天气预报窗体翻转效果
[rust weekly database] num bigint - large integer
Collectors.toMap应用
【Rust日报】2021-01-22 首份Rust月刊杂志邀请大家一起参与
[rust daily] several new libraries were released on January 23, 2021
The latest SCI impact factor release: the highest score of domestic journals is 46! Netizen: I understand if
Viewing technological changes through Huawei Corps (V): smart Park
LVGL 8.2图片缩放及旋转
Arm新CPU性能提升22%,最高可组合12核,GPU首配硬件光追,网友:跟苹果的差距越来越大了...
文件共享服务器
LVGL 8.2 Image
Double-DQN笔记
mysql数据库基础:视图、变量

