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.

[参考译文] TMS570LS3137:I2C 问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1069732/tms570ls3137-i2c-issue

部件号:TMS570LS3137
“线程:HALCOGEN”中讨论的其它部件

您好,

我使用 I2C 时遇到问题。 我正在尝试将 TMS570 (主模式)中的数据发送到 STS-35,从动数字温度传感器。 但是,MCU 不发送数据。 我用 HALCOGen 的例子来使用它。

代码如下:

   //STS35测量

   UINT8_t TPU = 0;

   对于(i = 0;i <255;I++)
       对于(TPU = 0;TPU<5;TPU++);

   /*配置从属设备的地址以与*/通话
   i2cSetSlaveAdd(i2cREG1, STS35_Address);
   sciSend (scilinREG,22,(无符号字符*)“I2C 从配置\r\n”);

   /*将方向设为发射器*/
   /*注:可选-在 Init 中完成*/
   i2cSetDirection (i2cREG1,I2C_TRANSMENT);
   sciSend (scilinREG,41,(无符号字符*)“已配置发送器的 I2C 方向\r\n”);

   /*配置数据计数*/
   /*数据计数(字词地址)*/
   i2cSetCount (i2cREG1,STS35_BSIZE);
   sciSend (scilinREG,27,(无符号字符*)“I2C 数据计数已配置\r\n”);

   /*将模式设置为主模式*/
   i2cSetMode (i2cREG1,I2C_MASTER);
   sciSend (scilinREG,28,(无符号字符*)“I2C 主模式已配置\r\n”);

   /*设置预设计数后的停止*/
   i2cSetStop(i2cREG1);
   sciSend (scilinREG,25,(无符号字符*)“I2C 停止位已配置\r\n”);

   /*发射开始条件*/
   i2cSetStart(i2cREG1);
   sciSend (scilinREG,26,(无符号字符*)“I2C 起始位已配置\r\n”);

   /*在轮询模式下传输数据计数*
   i2cSend (i2cREG1,STS35_BSIZE,TX_Pack);
   sciSend (scilinREG,16,(无符号字符*)“I2C 发送字节\r\n”);

   /*等待总线忙线被清除*/
   while (i2cIsBusBusy (i2cREG1)== true);
   sciSend (scilinREG,22,(无符号字符*)“I2C 总线正忙已清除\r\n”);

   /*等待检测到停止*/
   i2cIsStopDetected (i2cREG1)== 0);
   sciSend (scilinREG,19,(无符号字符*)“检测到 I2C 停止\r\n”);

   /*清除停止条件*/
   i2cClearSCD (i2cREG1);
   sciSend (scilinREG,18,(无符号字符*)“I2C 停止已清除\r\n”);

   /*启动下一个区块前的简单代尔莱*/
   /*取决于从属设备准备就绪的速度*/
   对于(i = 0;i <255;I++)
       (TPU = 0;TPU<40;TPU++);

程序将保持在/*中,等待检测到停止*/等待停止位。 我尝试用 OSC 测量帧,但在 SDA 或 SCLK 上未检测到任何位。

非常感谢。

此致,

莱安德罗

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

    您好,

    SCL 和 SDA 线路 都是漏极开路,这意味 着 I2C 模块 可以驱动低输出 ,但不能驱动高输出。  要使 I2C 线路能够达到较高的水平,您必须通过电阻器将 SCL 和 SDA 拉至 VCCIO (3.3V)。 请仔细检查您的主板上是否有 SCL 和 SDA 线路上的拉线。

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

    QJ 您好,

    感谢您的回复。 我设置了拉电阻器,并使用 HALCOGen 配置它。 我给你发送了一份有关它的捕获。 但是,我可以在从属设备附近添加上拉电阻器。 你认为可能有必要这样做吗? 谢谢!

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

    内部上拉太弱。 请分别向 SCL 和 SDA 线路添加一个上拉电阻器。

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

    QJ 您好,

    谢谢! 我添加了4K7外部上拉,我可以获得信号。 但是,我只获得了两个帧,使用了六个帧(我更改了它以了解它的工作原理)。 它可能与从属反应有关吗?

    此致,

    莱安德罗