工具/软件:
你(们)好 我们无法从任何输入通道读取 7038、但从最近_CH0_LSB 0xA0 读取的第一个通道除外。
下面简要介绍了将 7038 配置为手动模式和八个模拟输入的启动代码。
U8 REGISTER_BYTE = 0;
/*在完成初始测试之前启用禁用 CRC */
/* REGISTER_BYTE |= ADS_7038_REG_CFG_CRCEN;*/
/*启用已禁用统计模型*/
/* REGISTER_BYTE |= ADS_7038_REG_CFG_STATS;*/
/*启用禁用数字窗口比较器*/
/* REGISTER_BYTE |= ADS_7038_REG_CFG_WINDW;*/
/*将 CONV_MODE 位 5、6 保持为零以选择手动模式*/
/*启用禁用 ADC 校准*/
/* REGISTER_BYTE |= ADS_7038_REG_CFG_CALIB;*/
/*将所有通道设置为模拟输入*/
Register_byte |= ADS_7038_REG_CFG_Analg;
/*使用配置寄存器复位位位位从器件。 */
REGISTER_BYTE |= ADS_7038_REG_CFG_RESET;
ADS_7038_InstancePtr (Reg_Write、ADS_7038_REG_CFG_Addrs、REGISTER_BYTE);
/*将操作模式配置寄存器设置为低速振荡器内部时序。 */
REGISTER_BYTE = ADS_7038_REG_OPM_LOWSP | ADS_7038_CLK_DIV_09;
ADS_7038_InstancePtr (Reg_Write、ADS_7038_OFFSET_OPMODE_CFG、REGISTER_BYTE);
/*将序列配置寄存器中的所有选项设置为零以选择手动模式*/
ADS_7038_InstancePtr (Reg_Write、ADS_7038_OFFSET_SEQUENCE_CFG、0);
/*选择所有要读取的通道(尝试使用和不使用手动模式无效)。 */
ADS_7038_InstancePtr (Reg_Write、ADS_7038_OFFSET_CHAN_SELECT、0xFF);
/*回读通道选择寄存器以进行确认。 */
REGISTER_BYTE = 0;
ADS_7038_InstancePtr (Reg_Read、ADS_7038_OFFSET_CHAN_SELECT、®ISTER_BYTE)> 0);
/*返回 0x00 No channels Selected。 */
读取原始 ADC
以下是从 7038 读取 ADC 的代码部分、
它效果良好、但仅适用于第一个通道零点。
/*选择频道*/
ADS_7038_InstancePtr (Reg_Write、ADS_7038_OFFSET_CHANNEL_SELECT、(u8) INDEX_CHANNEL);
/*回读以确认。 即使在上面选择了第二个通道 1、也始终返回零*/
ADS_7038_InstancePtr (Reg_Read、ADS_7038_OFFSET_CHANNEL_SELECT、&CHAN_CONFIRM);
/*从 7038 中读取 LSB 和 MSB 并进行组合以获得原始 ADC 值*/
U8 register_lsb = 0;
U8 REGISTER_MSB = 0;
S32 STATUS_lsb = ADS_7038_InstancePtr Reg_Read (offset_channel、®ister_lsb);
S32 STATUS_MSB = ADS_7038_InstancePtr Reg_Read (offset_channel + 1、®ISTER_MSB);
REGISTER_MSB =(REGISTER_MSB >> 4) 和 0x0F;
ANALOG_READING =(u32) REGISTER_lsb +((u32) REGISTER_MSB << 8);
电压读数正确、但只有在对第一个引脚通道零施加测试电压时才正确。
如果选择了任何其他通道、它仍然只从通道零读取值。
软件日志输出
读取 ADC 通道 1 选择写入= 0x00000001。
读取 ADC 通道 1 选择 confm = 0x00000000。
读取 ADC 通道索引 1 块= 0x000000A0。
读取 ADC 通道索引 1 offst = 0x000000A2。
读取 ADC 原始= 0x002991A8 电压= 0.000
非常感谢有关如何在手动模式下选择其他模拟输入通道 1-7 的任何建议。
Everett Sellner
















