工具与软件:
您好!
当尝试从 TLA2528读取 ADC 值时、我疯了。
I2C 单寄存器可进行读取和写入。 我在 寄存器 DATA_CFG 上设置了 FIX_PAT_ENABLE 标志。
在本例中、读取2个字节、我得到0xA5A5 (不是0xA5A)、是否正确?
我已将捕获设置为手动模式。 读取状态寄存器返回0x80。
代码将通道编号从0设置为7、然后读取 ADC 值。
当我移除 FIX_PAT_ENABLE 标志时、在第一次读取通道0之后、I2C 电平保持低电平、所以当我尝试写入寄存器0x11来设置下一个通道1时、I2C 总线上有一个错误。
读取 ADC 值后、是否由主器件发送 STOP?
这是我用于读取通道数据的代码:
uint16_t TLA2528_READ_ONE_CHANNEL_DATA (uint8_t CHANNEL_num)
{
ERR_t ret;
uint16_t 数据区= 0;
I2C_cmd_handle_t cmd = i2c_cmd_link_create ();
I2C_MASTER_START (cmd);
I2C_MASTER_WRITE_BYTE (cmd、(m_TLA2528_ADDRESS << 1)| READ_BIT、ACK_CHECK_EN);
I2C_MASTER_READ (cmd、(uint8_t*)&dataread、2、I2C_MASTER_ACK);
I2C_MASTER_STOP (cmd);
REt = i2c_master_cmd_BEGIN (I2C_master_NUM、cmd、100 / portTick_period_MS);
I2C_cmd_link_delete (cmd);
ERROR_CHECK (ret);
if (ret!= OK) looge (TAG,"TLA2528 I2C 读取错误通道%d\n",CHANNEL_num);
返回数据区;
}
我的代码出了什么问题?
谢谢!