圣邦微电子推出的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)。文章来源:https://www.toymoban.com/news/detail-412902.html
希望这篇帖子对各位小伙伴调试SGM58031有所帮助。文章来源地址https://www.toymoban.com/news/detail-412902.html
到了这里,关于SGM58031的IIC接口调试过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!