我试图用I2C配置PGA900,我先后配置了
| DIG_IF_CTRL |
| MICRO_NTERFACE_CONTROL |
| TEMP_CTRL |
| ALPWR |
| ADC_CFG_1 |
| TADC_CONFIG |
但是在while中轮询读取
| TADC_DATA1 |
| TADC_DATA2 |
| TADC_DATA3 |
全部是0x00,均没有数据,我用逻辑分析仪查看和i2c读配置的寄存器,都成功配置了,却没有数据
电路是自己做的,仿照pga305 page64
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
这个是ADC_Config验证寄存器是否配置成功,配置成功。
这个是在while中的读取TADC,返回为0x00
Init
aTxBuffer[0] = 0x42;
aTxBuffer[1] = 0x03;
aTxBuffer[2] = 0x00;
aTxBuffer[3] = 0x03;
aTxBuffer[4] = 0x0F;
aTxBuffer[5] = 0x02;
aTxBuffer[6] = 0x30;
aTxBuffer[7] = 0x04;
aTxBuffer[8] = 0x11;
aTxBuffer[9] = 0x14;
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x06, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[0], 1, 10);//Digital Interface Control
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x00) << 1)|WREG, 0x0C, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[1], 1, 10);//MICRO_INTERFACE_CONTROL
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x67, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[7], 1, 10);//AMUX_CTRL
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x48, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[5], 1, 10);//T_GAIN_SELECT
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x4C, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[6], 1, 10);//TEMP_CTRL
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x29, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[8], 1, 10);//ADC_CFG_1
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x50, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[9], 1, 10);//ALPWR
HAL_I2C_Mem_Write(&hi2c1, ((0x20|0x02) << 1)|WREG, 0x27, I2C_MEMADD_SIZE_8BIT, &aTxBuffer[4], 1, 10);//TADC_CONFIG
WHILE
HAL_I2C_Mem_Read(&hi2c1, ((0x20|0x02) << 1)|RREG, 0x24, I2C_MEMADD_SIZE_8BIT, &DATABuffer[0], 1, 10);
HAL_I2C_Mem_Read(&hi2c1, ((0x20|0x02) << 1)|RREG, 0x25, I2C_MEMADD_SIZE_8BIT, &DATABuffer[1], 1, 10);
HAL_I2C_Mem_Read(&hi2c1, ((0x20|0x02) << 1)|RREG, 0x26, I2C_MEMADD_SIZE_8BIT, &DATABuffer[2], 1, 10);
如PGA305 page31 I2C Read operation
S+SLAVE ADDR+W+ACK+REG ADDR+ACK+RS+SLAVE ADDR+R+ACK+DATA+STOP
第一次发的是write,第二次发的是读
我图上的data指的是REG DATA