一、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)
|