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.

[参考译文] TMS570LC4357:用于自检的 I2C 环回模式未接收完整的 TX 缓冲器

Guru**** 2474700 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1029790/tms570lc4357-i2c-loopback-mode-for-self-test-is-not-receiving-complete-tx-buffer

器件型号:TMS570LC4357

您好!

我使用 以下代码尝试了回送模式进行自检

/*用户代码开始(2)*/
#define LOAD_ADD 0x75
#define SLV_add 0x5A
#define bsize 8.

uint8 TX_PACK[16]={0x5A、0x5B、0x5C、0x5D、0x5E、0x5F、0x5A、0x5B、0x5C、0x5D、0x5C、0x5F、0x5A、0x5B、0x5E、0x5D};
UINT8 RX_PACK[16]={0};
uint32数据;

void i2cEnableLoopback (i2cBASE-t * i2c);
/*用户代码结束*/

int main (空)

/*用户代码开始(3)*/
uint32 buf_size = bsize、i、errNum;
uint8 * t_buff =&TX_Pack[0];
uint8 * r_buff =&RX_Pack[0];

/* i2c 初始化*/
i2cInit();

/*设置 i2c 自有地址*/
i2cSetOwnAdd (i2cREG1、Own_add);

/*启用内部回送*/
i2cEnableLoopback (i2cREG1);

/*启动传输的启动条件*/
i2cSetStart (i2cREG1);

/*发送数据包*/
while (buf_size--)

i2cSendByte (i2cREG1、* t_buy++);
/*接收数据包*/
*r_buff ++= i2cReceiveByte (i2cREG1);

asm (" nop");//用于断点

errNum = 0;
(i=0;<bsize; i++){
如果(RX_PACK[i]!= RX_PACK[i])
errNum++;

/*清除停止条件检测标志*/
i2cClearSCD (i2cREG1);


while (1){};//在 TX-Rx 完成后永远等待。 *
/*用户代码结束*/

返回0;

在 RX 缓冲区中,只复制第一个字节。

 RX_PACK[16]={0x5A、0x0、0x0、............}

然后代码会在下面的行中被删除

while (((i2c->STR &(UINT32) I2C_RX_INT)== 0U)

}/*等待*/

uint8 i2cReceiveByte (i2cBASE-t * i2c)函数内部。

什么可能是问题?

2) 2)请找到所附的快照  

"停止条件由器件生成"的含义是什么?

它对编码有何影响?

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

    您好!

    I2C 总线驱动器为集电极开路或漏极开路、这意味着它们可以将相应的信号线路拉低、但无法将其驱动为高电平。  为了使 I2C 正常工作、I2C 线路需要外部上拉电阻器。  

    在我的电路板上、回路按预期工作。 请检查电路板上的 I2C 线路是否已上拉。

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

    您好、Qj Wang、

    感谢您的澄清。

    I2C 现在工作。