一、ADC值与电压的转换关系
24bit ADC,1 LSB对应的电压值是:4.096V*2/16777216=0.000000488V=0.488uV=488nV
得到2DCC73对应的电压值为:2863085*2*4.096V/16777216=1.3979907V,计算值精确到0.5uV(非实际测量精度)。
二、通信协议分析
采样20个点的数据如下,用逻辑分析仪抓到的通信波形为21次。第1次为写ADC寄存器,第2~21次为读取ADC采样数据。
第1次通信内容如下:
Setup Write to [0x00]+ACK //General call address(通用广播地址是用来包括软件复位的几个功能)
0x06+ACK //复位并通过硬件写从机地址的可编程部分
0x00+NACK //
0x00+NACK //
Setup Write to [0x90]+ACK //Write to Config Register:First byte: 0b10010000
0x01+ACK //Second byte: 0b00000001 (points to Config register)
0xC2+ACK //Third byte: 0b11000010 (MSB of the Config register to be written)
0xE3+ACK //Fourth byte: 0b11100011 (LSB of the Config register to be written)
Setup Write to [0x90]+ACK //Write to Pointer Register:First byte: 0b10010000(first 7-bit I2C address followed by
//a low read/write bit)
0x00+ACK //Second byte: 0b00000000 (points to Conversion register)
Setup Read to[0x91]+ACK //Read Conversion Register:First byte: 0b10010001(first 7-bit I2C address followed //by a high read/write bit)
0x00+ACK //Second byte: the SGM58200 response with the MSB of the Conversion register
0x00+ACK //Third byte: the SGM58200 response with the second byte of the Conversion register
0x00+NACK //Fourth byte: the SGM58200 response with the LSB of the Conversion register
第一次通信是复位寄存器,读取到的ADC数据为000000(hex),即读到的数据是零。
通用广播地址说明:
通用广播地址是用来同时寻址所有连接到I2C总线上的设备.如果一个设备在广播地址时不需要数据,它可以不产生应答来忽略.如果一个设备从通用广播地址请求数据,它可以应答并当作一个从-接收器.当一个或多个设备响应时主机并不知道有多少个设备应答了.每一个可以处理这个数据的从-接收器可以响应第二个字节.从机不处理这些字节的话,可以响应NA.如果一个或多个从机响应,主机就无法看到NA.通用广播地址的含义一般在第二个字节中指明.
有两种情况需要考虑:
1.最低有效位B是0
2.最低有效位B是1
当B是0,第二个字节有如下的定义:
1.0000 0110(06h):复位并通过硬件写从机地址的可编程部分.在接收到这样的2个字节时,所有可以响应这个广播地址的设备将复位并进入地址的可编程部分.要采取预防措施来确保设备不会在加上电源电压后将SDA或SCL拉低,因为这些低电平会阻塞总线.
2.0000 0100(04h):通过硬件写从机地址的可编程部分.行为同上,但设备不复位
3.0000 0000(00h):这个不应该作为第二个字节使用
编程过程的顺序参考相应设备的Datasheet
软件复位说明:
在通用广播(0000 0000)之后发送0000 0110(06h)作为第二个字节会引起软件复位.这个特性是可选的,不是所有的设备都会响应这个命令.在接收到这样的2个字节时,所有可以响应这个广播地址的设备将复位并进入地址的可编程部分.要采取预防措施来确保设备不会在加上电源电压后将SDA或SCL拉低,因为这些低电平会阻塞总线.
第2次通信内容如下:
Setup Write to [0x90]+ACK
0x00+ACK
Setup Read to[0x91]+ACK
0x2B+ACK
0xAF+ACK
0xED+NACK
读取内容为第1个采样的ADC数据2BAFED,对应电压值为1.3979907V
第3次通信内容如下:
Setup Write to [0x90]+ACK
0x00+ACK
Setup Read to[0x91]+ACK
0x2B+ACK
0xB0+ACK
0x48+NACK
读取内容为第2个采样的ADC数据2BB048,对应电压值为1.3980352V
以此类推,第4~21次通信内容为第3~20个采样数据。
以上的图文Word格式文档51黑下载地址:
SGM58200 ADC模块 I2C通讯协议分析.docx
(631.72 KB, 下载次数: 38)
菜鸟机器 发表于 2022-4-19 14:40
官网未查询到有SGM58200芯片资料,请问楼主有没有SGM58031案例程序?
qq329769206 发表于 2022-5-6 16:43
用我们的ADC吧,应该比SGM58200成熟
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |