Embedded 示波器的i2c分析

Embedded 示波器的i2c分析,embedded,i2c,Embedded,I2c,我使用的是基于cortex m3的mc。 我用逻辑分析仪观察了我的交流,但我并不真正理解我所看到的。你能帮我吗 我使用10k上拉电阻器 我正在尝试发送数据:0x55。我(想)没有看到数据,只有一个地址 在下面的图片上你可以看到地址,但我认为它不正确或者我弄错了。 没有传感器连接到mc,我更改了地址进行分析 地址0x00,数据0x55: 地址0x55,数据0x55: 地址0xff,数据0x55: 我的代码: SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA

我使用的是基于cortex m3的mc。 我用逻辑分析仪观察了我的交流,但我并不真正理解我所看到的。你能帮我吗

  • 我使用10k上拉电阻器
  • 我正在尝试发送数据:0x55。我(想)没有看到数据,只有一个地址
在下面的图片上你可以看到地址,但我认为它不正确或者我弄错了。 没有传感器连接到mc,我更改了地址进行分析

地址0x00,数据0x55:

地址0x55,数据0x55:

地址0xff,数据0x55:

我的代码:

 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
 SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C7);
 GPIOPinConfigure(0x00001002);
 GPIOPinConfigure(0x00001402);
 GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_5);
 GPIOPinTypeI2CSCL(GPIO_PORTA_BASE, GPIO_PIN_4);
 I2CMasterInitExpClk( I2C7Master_Base, SysCtlClockGet(), false);     
 I2CMasterSlaveAddrSet(I2C7Master_Base, 0xff, false);

 I2CMasterDataPut(I2C7Master_Base, 0x55);
 I2CMasterControl(I2C7Master_Base, I2C_MASTER_CMD_SINGLE_SEND);
 while(I2CMasterBusy(I2C7Master_Base));

有人能解释一下吗?

事实上,你最好在主机和光传感器之间建立一个有线连接。然后,您需要发送一个正确的传感器地址,该地址应由从机确认。当从机确认其地址时,您将在作用域中看到ACK位。接下来,您将根据传感器上的数据报对数据进行操作-任何数据字节也应被确认(最有可能,或某种程度上取决于数据表)。从有线连接开始,因为在没有负载的情况下尝试I2C总线没有太大意义,我们甚至不能在您发布的图表上看到8-9个时钟周期,因为我认为它没有负载连接。希望有帮助。

我不熟悉tm4c1294,很可能处理器中的I2C状态机在总线上看到NACK(由没有接受地址的从设备生成),而没有发送数据。一般来说,I2C主机不应该在地址NACK之后发送数据,尽管这实际上没有什么危害。