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.

[参考译文] TLA2528:TLA2528

Guru**** 2379220 points
Other Parts Discussed in Thread: TLA2528
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1366241/tla2528-tla2528

器件型号:TLA2528

工具与软件:

您好!  

   当尝试从 TLA2528读取 ADC 值时、我疯了。  

I2C 单寄存器可进行读取和写入。 我 在寄存器 DATA_CFG 上设置了 FIX_PAT_ENABLE 标志、我希望读取0xA5A、但得到了0xFFA5。

我已将捕获设置为手动模式。 读取状态寄存器返回0x80。

此外、如果我正确理解了7.4.2中的数据表、在一个2字节帧后、接下来的2个字节将提供一个新帧。 在本例中、当我读取4个字节时、我得到0xFFA5FFFF。

在示波器信号中也可以清楚地看到帧上的0xFF。

这是我用于读取通道数据的代码:

uint16_t TLA2528_READ_ONE_CHANNEL_DATA (uint8_t CHANNEL_num)

{

ERR_t ret;

uint16_t 数据区= 0;

uint32_t datareadt = 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*)&datareadt、2、ACK_CHECK_EN);

I2C_MASTER_STOP (cmd);

REt = i2c_master_cmd_BEGIN (I2C_master_NUM、cmd、100 / portTick_period_MS);

I2C_cmd_link_delete (cmd);

 

dataread =(uint16_t) datareadt;

返回数据区;

如果我 禁用  FIX_PAT_ENABLE、我得到了与输入电压相对应的值、但总是保留在一个字节中、而第二个字节是0xFF。

我的代码出了什么问题?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最终我发现了问题。  

    在 I2C 读取函数中、我必须设置仅为最后一个字节读取设置 NAK 的标志。 如果我为每个字节设置 ACK 或 NACK、则读取函数不起作用。 我尚未完全理解这一点(它似乎不符合数据表指令)、但它可以正常工作。