请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5994 主题中讨论的其他器件:ADS1115
大家好、我遇到了这些器件的问题、无法使 ADS1115正常工作、
这是出现错误的部分代码。 当我逐步调试时、问题出现在一个名为 writeRegister (uint8_t reg、uint16_t value)的函数中;
void writeRegister (uint8_t reg、uint16_t value){ //在发送模式下设置 EUSCI_B_I2C_setMode (I2C_EUSCI、EUSCI_B_I2C_Transmit _mode); //启用 I2C 模块以启动操作 EUSCI_B_I2C_ENABLE (I2C_EUSCI); // ADS1115数据表第25页 EUSCI_B_I2C_masterSendMultiByteStartWithTimeout (I2C_EUSCI、reg、1000); //--->开始+从器件地址字节+地址指针寄存 器延迟(1); EUSCI_B_I2C_masterSendMultiByteNext (I2C_EUSCI、(uint8_t)(值>> 8)); // -->+数据字节1 延迟(1); EUSCI_B_I2C_masterSendMultiByteFinish (I2C_EUSCI、(uint8_t)(value & 0xFF));//-->+数据字节2 +停止 延迟(1); EUSCI_B_I2C_DIC_DISABLE (I2C_EUSCI); }
具体而言、 在函数中、EUSCI_B_I2C_masterSendMultiByteNext (I2C_EUSCI、(uint8_t)(值>> 8))... 在该函数内、程序位于无限循环上、这是一个被调用的句子
我不知道为什么会发生这种情况..
我跟踪"值"值、这就是它的内容。
uint16_t ADS1115_readadc_SingleEnd (uint8_t 通道){ if (通道> 3)}{ 返回0; } //从默认值 uint16_t config =开始 ADS1015_REG_CONFIG_CQUE_NONE |//禁用比较器(默认值) ADS1015_REG_CONFIG_CLAT_NONLAT |//非锁存(默认值) ADS1015_REG_CONFIG_CPOL_ACTVLOW |//警报/ Rdy 低电平有效(默认值) ADS1015_REG_CONFIG_CMODE_TRAD |//传统比较器(默认值) ADS1015_REG_CONFIG_DR_1600SPS |//每秒1600个样本(默认) ADS1015_REG_CONFIG_MODE_SINGLE;//单次触发模式(默认) //设置 PGA/电压范围 配置|= m_GAIN; //设置单端输入通道 开关(通道){ 情形(0): Config |= ADS1015_REG_CONFIG_MUX_SINGLE_0; 中断; 情况(1): Config |= ADS1015_REG_CONFIG_MUX_SINGLE_1; 中断; 情况(2): Config |= ADS1015_REG_CONFIG_MUX_SINGLE_2; 中断; 情况(3): Config |= ADS1015_REG_CONFIG_MUX_SINGLE_3; break; } //设置'启动单次转换'位 配置|= ADS1015_REG_CONFIG_OS_SINGLE; //将配置寄存器写入 ADC writeRegister (ADS1015_REG_POINTER_CONFIG、CONFIG); //等待转换完成 延迟(m_convisionDelay); //读取转换结果 //移位12位结果>ADS1015 寄存器的 bitrn 4位;针对 ADS1015_readshift 4位(对于 ADS1015) /**获取电流电压读数 *读取电流差并将其乘以 *电流增益的常数。 MV 返回 到*提高电压精度 * / float ADS1115_getMilliVolts (uint8_t channel){ switch (m_gain){ 外壳增益三分之二: 返回(ADS1115_readADC_SingleEnd (通道)* ADS1115_MV_6P144); 中断; 外壳增益_1: 返回(ADS1115_readADC_SingleEnd (通道)* ADS1115_MV_4P096); 中断; 外壳增益_2: 返回(ADS1115_readADC_SingleEnd (通道)* ADS1115_MV_2P048); 中断; 外壳增益_4: 返回(ADS1115_readADC_SingleEnd (通道)* ADS1115_MV_1P024); 中断; 外壳增益_8: 返回(ADS1115_readADC_SingleEnd (通道)* ADS1115_MV_0P512); 中断; 外壳增益_16: 返回(ADS1115_readADC_SingleEnd (通道)* ADS1115_MV_0P256); 中断; }
配置寄存器是否正常?
我使用的是引脚7.0和7.1、因此我配置了#define I2C_EUSCI EUSCI_B2_base
希望您能为我提供帮助、