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.

[参考译文] LAUNCHXL2-RM57L:通过 I2C 从 Arduino 获取数据

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/573096/launchxl2-rm57l-get-data-from-arduino-via-i2c

器件型号:LAUNCHXL2-RM57L

您好!

我正在使用 Arduino (从站)和 Launchpad Rm57L (主站)构建项目、以从 Arduino 获取数据并将其发送到 HTTP 服务器。

我无法从 I2C.I 没有分析仪、因为我为 i2c 监听器构建了 Arduino、i2c 线路上没有数据。

我将 RM57的示例代码和 i2c 线路的2个4.7K 上拉电阻连接到 J1接头9和10端口。i2c 线路。

这个 github.com/.../i2c-sniffer-100kBaud-Arduino-Mega for Arduino.Rm57代码卡在其中

      while (i2cIsBusy (i2cREG1)=true);


无限循环。

int main (void)
{
/*用户代码开始(3)*/

int repeat = 0;int delay =0;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 主机传输功能 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*根据 GUI 进行 I2C 初始
化*模式=主器件-发送
器*波特率= 100KHz
*计数= 10
*位计数= 8位
*/
i2cInit();

//配置从器件与之通信的地址*/
i2cSetSlaveADD (i2cREG1、Slave_Address);

//*设置发送器方向*/
*注意: 可选-在 Init 中完成*/
i2cSetDirection (i2cREG1、I2C_transmitter);


for (Repeat = 0;Repeat < 2;Repe++)
{
//配置数据计数*/
//*注意:可选-在 Init 中完成,除非用户想要更改*/
i2cSetCount (i2cREG1、data_master


、i2cI2C);*设置为 SetCount

/*设置已编程计数后的停止*/
i2cSetStop (i2cREG1);

/*发送开始条件*/
i2cSetStart (i2cREG1);

/*发送 DATA_COUNT 数据的轮询模式数*/
i2cSend (i2cREG1、DATA_COUNT、TX_Data_Master);

/*等待直到


检测到 i2cBus0 (i2cBus1);/i2cBus= 0 (i2cBus0)(i2cBus= i2cBus0)*(iCbus= 0)(i2cBusy)(i2cBus/iCbus= 0)(i2cBus (i2cBus/iCbus= 0)


/*清除停止条件*/
i2cClearSCD(i2cREG1);

/*在开始下一个块之前,简单的 Dealya */
*取决于从器件准备就绪的速度*/
for (delay=0;delay<1000000;delay++);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//
// 主机接收功能 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/*配置从机的地址以与*/
i2cSetSlaveAdd (i2cREG1、Slave_Address)通信;

//将方向设置为接收器*/
i2cSetDirection (i2cREG1、I2C_receiver);

for (Repe= 0;Repeat < 2;Repe++)
{
//
//* Configure Data count:////*注意:i2cSetCount:可选、i2cIncount、i2cData (不希望在用户设置
)中更改)

/*将模式设置为主设备*/
i2cSetMode (i2cREG1、I2C_MASTER);

//设置已编程计数后的停止*/
i2cSetStop (i2cREG1);

//发送开始条件*/
i2cSetStart (i2cREG1);

// Transmit data_count 轮询模式中的数据数*/ i2cRX_bus_try



(i2cBus_try);* i2cBus/i2r1 (i2cRX_bus_try)=忙等待(i2cbus_try);// i2cbus_try (i2crefs (i2cr1)*(i2c

/*等待直到检测到停止*/
while (i2cIsStopDetected (i2cREG1)=0);

/*清除停止条件*/
i2cClearSCD (i2cREG1);

/*在启动下一个块之前简单的 Dealya





*/*取决于从器件准备的速度*/ for (delay=0;
nop);nasm (nop);nasm ("100op)"


;/asm (nop);nop (nasm)"(nop (nop);/nop)");

/*用户代码结束*/

返回0;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我的好朋友、我很想为您提供帮助、我还有 RM57版本、我在 I2C 上工作了一段时间、所以我打电话给一些朋友、加入我们的派对。



    此致
    Martin Valencia
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    听起来 SCL 线路可能很低。 您是否检查了 SDA/SCL 线路以查看它们的外观?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 我没有示波器、但使用外部上拉电阻器时、SDA 和 SCL 线路为高电平。 我还使用电压表进行了检查。

    Arduino IO 引脚为5V。是否存在任何问题? 或者与 I2C 的以太网是否有任何冲突?

    此致...

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

    噢。  如果您将5V 驱动到 RM57L 中、这远远超过了 IO 的绝对最大额定值、即3.3V LVCMOS。

    您可能已经损坏了器件、但您肯定可以先尝试降低电压、然后看看它是否会使接口正常工作。

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

    没有器件未损坏。我尝试了具有3.3V 5V 电平转换器的全新电路板。一切都好。 但 rm57滞留在 i2csend()的无限循环中。

    我已根据快速入门指南检查了连接到 rm57 launchpad 的 i2c 引脚。 J1接头上的 I2C 引脚为9和10。

    但基于 RM57L launchpad 原理图 pdf 文件、接头上没有 I2C 引脚。为什么? 我是否需要额外配置才能使用 I2C?

    感谢你的帮助。

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

    您需要上拉电阻器。

    编辑:在 Booster Pack 接头上、我们没有 I2C。  您需要将位 bang 或使用 HET 引脚作为 GIO 仿真 I2C。

    该器件确实具有 I2C 模块和引脚、但它们显示在此 Launchpad 上的不同连接器上。
    因此、如果您想使用 I2C、那么您应该找到 I2C SCL/SDA 引脚并连接它们。