圣邦微电子推出的SGM58031是具有16位分辨率的精密模数转换器(ADC),设计具有高精度、低功耗和易于实现的特点,具有片内基准电压源和振荡器,数据通过兼容I2C的串行接口进行传输。

先来看看SGM58031的IIC接口时序图:

话不多说,直奔主题:

调试主要分为两个模块:

一个是控制驱动模块进行读写操作,下文中我们简称为控制模块。一个是IIC时序的驱动模块,通过读写操作写入从机地址,读写命令,配置寄存器地址,配置寄存器值,读取寄存器值,下文中我们简称为驱动模块。

驱动模块是进行读写操作的驱动单元。首先来说写寄存器过程:

在写操作过程中,当写使能信号出现后,模块开始工作,写入高7位从机地址加1位写使能和24bit的寄存器配置值(寄存器地址8bit+寄存器配置值16bit),这里的24bit寄存器配置值将分化为三个8bit的数据依次写入。

简单来说写操作就是写入高7位从机地址+1位写使能+8位配置寄存器地址+高8位寄存器配置值+低8位寄存器配置值

上图为一次完整的写操作过程,从图中可以看出在写使能信号i_wr_reg_valid(单脉冲)信号触发后,I2C_58031_dri模块开始写入数据,首先写入高7位从机地址加1位写使能和24bit的寄存器配置数据,将24bit的寄存器配置数据分化为三个8bit的数(r_wr_reg_addr+r_wr_reg_data1+r_wr_reg_data2),分别代表寄存器地址和配置数据高八位、低八位,依次写入后将完成一次写操作过程。

这次过程中我总共配置了四个寄存器,这里只体现了配置一个寄存器值的全过程,配置另外三个寄存器的过程是一样的。

接下来说说读寄存器配置过程:

在读操作过程中,当读使能信号出现后,模块开始工作,首先写入高7位从机地址加1位写使能,然后写入读地址即转换寄存器地址0X00,再写入高7位从机地址加1位读使能,最后读取转换寄存器0X00的高8bit数据和低8bit数据。

简单来说读操作就是写入高7位从机地址+1位写使能+8位转换寄存器地址+高7位从机地址+1位读使能,然后读高8位寄存器数据+读低8位寄存器数据

上图为一次完整的读操作过程,在图中可以看出,在i_rd_reg_valid(单脉冲)信号触发后,首先写入高7位从机地址加1位写使能,然后写入转换寄存器地址0X00,再写入高7位从机地址加1位读使能,最后读取转换寄存器0X00的高8bit数据和低8bit数据,在读取高八位数据过程中将数据寄存在r_rd_data1中,读取低八位数据时,高八位数据保持不变,低八位数据寄存在r_rd_data2中,当结束读操作时,将高八位和低八位同时输出至16位o_rd_data信号输出端口,同时o_rd_data_valid数据输出有效信号拉高。

至此读写操作完成。

有几个地方是比较值得注意的:

1、读状态我们可以通过判断芯片的ALERT/RDY引脚状态,这里我们通过配置寄存器来配置ALERT/RDY引脚是高电平有效还是低电平有效;

2、写过程中,配置完高8位寄存器数据之后主机应给一个低电平的应答信号,配置完低8位寄存器数据之后,主机再给一个高电平的应答信号,这样一次配置写寄存器过程才算是结束。(关于这一点,我之前在配置完高8位寄存器数据数据之后,就给了一个高电平的应答信号,这导致我读出来的寄存器数据的低8位是FF)。

希望这篇帖子对各位小伙伴调试SGM58031有所帮助。

SGM58031的IIC接口调试过程相关推荐

  1. lkt芯片接口调试建议-iic接口

    本文主要介绍使用STM32芯片 IO模拟方式调试IIC接口LKT加密芯片时需要注意的问题点.可能有人会说我之前操作过XXXX IIC接口的芯片,IIC接口没什么好介绍的.其实不然如果IO模拟的IIC程 ...

  2. 一次 MDIO 配置 switch 的调试过程,88e1512 switch mv88e6xxx

    一次 MDIO 配置 switch 的调试过程 1.什么是 MDIO 物理层时序 总线的电平协议类似 IIC 的协议.有两线通讯,一条时钟 MDC,一条数据 MDIO.但是数据的表示和 IIC 有些许 ...

  3. stm32 iic接口 进入busy_STM32通过IIC接口读取JY61模块MPU6050陀螺仪芯片数据核心程序...

    1 简述 最近,想学角度融合算法在网上买一个JY61的模块.他们家的模块用起来还不错.模块分为串口通讯和IIC通讯的.串口读取数据他们家有例程,我就不说了.想分享给大家这个模块的IIC是怎么去读取MP ...

  4. java接口调试思想

    对于接口调试的理解: 最近多次参与接口调试工作,一般情况都是获取对方接口文档,文档中有加密验证方式,根据加密验证方式开发,调用对应的接口. 可以不可以简化这个流程那,至少减少一方的工作量. 1.减少调 ...

  5. 基于FPGA实现IIC接口(EEPROM)

    1 IIC应用领域 在嵌入式系统开发过程中,IIC占据非常重要的地位.IIC通讯接口能到搭载较多的从设备,从而实现与多个从设备进行通讯,在板级通讯中是一种比较常用的通讯接口.笔者通过IIC接口实现FP ...

  6. 招商银行一网通H5接口调试和测试报告撰写注意事项

    最近有朋友需要在微信小程序内使用招商银行一网通支付,目前能支持的支付类型只有H5支付接口,所以记录下整个调试流程和调试过程可能出现的问题,写测试报告时需要注意的事项也记录下,以备以后需要时,可以及时找 ...

  7. c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析

    说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...

  8. Linux UART接口调试技巧

    在嵌入式项目中,UART接口的使用频率很高,多种模块(2G通信模组.蓝牙模块,等等)都会通过UART接口与主控MCU相连.本文将梳理UART接口调试流程,为调试工作提供参考,解决调试过程中可能遇到的问 ...

  9. JESD204接口调试总结——Xilinx JESD204B IP testbench解析

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结--Xilinx JESD204B IP testbench解析 IP核配置 testbench工程 部分代 ...

最新文章

  1. 控件无法安装,windows已经阻止此软件因为无法验证发行者
  2. LINUX使用tcgetattr函数与tcsetattr函数控制终端二
  3. centos下 keepalived1.2.8配置文件
  4. 使用SDL打造游戏世界之入门篇 - 4
  5. 中英文切换_王者荣耀:模拟战奖励一览,新增中英文切换,李白第二套星元来袭...
  6. mysql tree_MySQL树形遍历(二)
  7. 设计模式的C语言应用-适配及系列模式-第六章
  8. 使用hiredis接口(Synchronous API)编写redis流水线客户端
  9. Kubernetes之集群环境搭建
  10. poj 2309 BST 使用树状数组的lowbit
  11. python安装包后找不到指定模块
  12. chm 转化为 html 转化为 txt
  13. 猫哥教你写爬虫 019--debug-作业
  14. 心愿未了有牵绊。生命不息,折腾未止。
  15. 现代软件产品团队关键角色及职责简述
  16. 缓冲区溢出的保护机制
  17. LINUX shell 脚本
  18. C++核心准则R.32: 通过​unique_ptr(widget)类型参数表示函数试图获取widget的所有权
  19. UG编程常用刀路参数功能详解,值得收藏的内容
  20. HtmlEncode是做什么的?

热门文章

  1. 什么是二极管钳位的作用及原理?
  2. 令人肝肠寸断的100个签名首语
  3. 关于DAO层统计总数的方法
  4. uniapp中web-view的使用
  5. “程序包com.sun.image.codec.jpeg不存在“ 正解
  6. 机器学习练习 2 - 逻辑回归
  7. 一起Oracle回收站过大引发的insert逻辑读过高故障
  8. HTML使用 crypto-js-AES 加密
  9. support information
  10. LeetCode-解数独(C++)