SGM58031的IIC接口调试过程
圣邦微电子推出的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接口调试过程相关推荐
- lkt芯片接口调试建议-iic接口
本文主要介绍使用STM32芯片 IO模拟方式调试IIC接口LKT加密芯片时需要注意的问题点.可能有人会说我之前操作过XXXX IIC接口的芯片,IIC接口没什么好介绍的.其实不然如果IO模拟的IIC程 ...
- 一次 MDIO 配置 switch 的调试过程,88e1512 switch mv88e6xxx
一次 MDIO 配置 switch 的调试过程 1.什么是 MDIO 物理层时序 总线的电平协议类似 IIC 的协议.有两线通讯,一条时钟 MDC,一条数据 MDIO.但是数据的表示和 IIC 有些许 ...
- stm32 iic接口 进入busy_STM32通过IIC接口读取JY61模块MPU6050陀螺仪芯片数据核心程序...
1 简述 最近,想学角度融合算法在网上买一个JY61的模块.他们家的模块用起来还不错.模块分为串口通讯和IIC通讯的.串口读取数据他们家有例程,我就不说了.想分享给大家这个模块的IIC是怎么去读取MP ...
- java接口调试思想
对于接口调试的理解: 最近多次参与接口调试工作,一般情况都是获取对方接口文档,文档中有加密验证方式,根据加密验证方式开发,调用对应的接口. 可以不可以简化这个流程那,至少减少一方的工作量. 1.减少调 ...
- 基于FPGA实现IIC接口(EEPROM)
1 IIC应用领域 在嵌入式系统开发过程中,IIC占据非常重要的地位.IIC通讯接口能到搭载较多的从设备,从而实现与多个从设备进行通讯,在板级通讯中是一种比较常用的通讯接口.笔者通过IIC接口实现FP ...
- 招商银行一网通H5接口调试和测试报告撰写注意事项
最近有朋友需要在微信小程序内使用招商银行一网通支付,目前能支持的支付类型只有H5支付接口,所以记录下整个调试流程和调试过程可能出现的问题,写测试报告时需要注意的事项也记录下,以备以后需要时,可以及时找 ...
- c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析
说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...
- Linux UART接口调试技巧
在嵌入式项目中,UART接口的使用频率很高,多种模块(2G通信模组.蓝牙模块,等等)都会通过UART接口与主控MCU相连.本文将梳理UART接口调试流程,为调试工作提供参考,解决调试过程中可能遇到的问 ...
- JESD204接口调试总结——Xilinx JESD204B IP testbench解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结--Xilinx JESD204B IP testbench解析 IP核配置 testbench工程 部分代 ...
最新文章
- 控件无法安装,windows已经阻止此软件因为无法验证发行者
- LINUX使用tcgetattr函数与tcsetattr函数控制终端二
- centos下 keepalived1.2.8配置文件
- 使用SDL打造游戏世界之入门篇 - 4
- 中英文切换_王者荣耀:模拟战奖励一览,新增中英文切换,李白第二套星元来袭...
- mysql tree_MySQL树形遍历(二)
- 设计模式的C语言应用-适配及系列模式-第六章
- 使用hiredis接口(Synchronous API)编写redis流水线客户端
- Kubernetes之集群环境搭建
- poj 2309 BST 使用树状数组的lowbit
- python安装包后找不到指定模块
- chm 转化为 html 转化为 txt
- 猫哥教你写爬虫 019--debug-作业
- 心愿未了有牵绊。生命不息,折腾未止。
- 现代软件产品团队关键角色及职责简述
- 缓冲区溢出的保护机制
- LINUX shell 脚本
- C++核心准则R.32: 通过​unique_ptr(widget)类型参数表示函数试图获取widget的所有权
- UG编程常用刀路参数功能详解,值得收藏的内容
- HtmlEncode是做什么的?