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.
您好!
我正在使用 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; }
噢。 如果您将5V 驱动到 RM57L 中、这远远超过了 IO 的绝对最大额定值、即3.3V LVCMOS。
您可能已经损坏了器件、但您肯定可以先尝试降低电压、然后看看它是否会使接口正常工作。
您需要上拉电阻器。
编辑:在 Booster Pack 接头上、我们没有 I2C。 您需要将位 bang 或使用 HET 引脚作为 GIO 仿真 I2C。
该器件确实具有 I2C 模块和引脚、但它们显示在此 Launchpad 上的不同连接器上。
因此、如果您想使用 I2C、那么您应该找到 I2C SCL/SDA 引脚并连接它们。