• 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功能调试过程较为顺利,虽然中间碰到一些比较疑惑的问题,相信经过后续的研究努力能够分析出原因。
    本期文章希望能给到大家帮助,也希望优信能够一直陪伴大家共同学习共同进步,欢迎一键三连,感谢各位大佬!

  • 相关阅读:
    【java】输入输出流
    vue 3.0 常用API 的介绍
    记一次 .NET 某医保平台 CPU 爆高分析
    vue-router(基本使用、路由重定向、多级路由、路由命名、路由的query和params参数、路由的props配置)(十一)
    【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)
    开放原子训练营第一季——铜锁探“密” 圆满落幕!
    比较浮点数时,我被绊倒了
    c++最短路模型(抓住那头牛)
    【Cocos】基础篇-2、3D游戏物体成像的基本原理
    锂离子电池充电的系统抖动问题解决方案
  • 原文地址:https://blog.csdn.net/qq_42250136/article/details/125497508