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.

[参考译文] CCS/TM4C1294NCPDT:TM4C1294上的 i2c 存在问题

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/717442/ccs-tm4c1294ncpdt-problem-with-i2c-on-tm4c1294

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

您好,  

我刚开始使用此卡软件。 我的 i2c 有问题。 我只想确保 i2c 引脚被激活或注意。 我的意思是我的代码是对的还是不对的。 我只需按照 TM4C129x 上使用 I2C 主设备功能集的代码流程进行操作。  

我的目标是控制 i2c 引脚是否正常工作。 这就是为什么我只执行步骤:IO 的配置。 我的问题是引脚未激活。 我只控制 SCL 引脚。 我需要在示波器上获取时钟图。 但我不能。 我的代码如下:

请注意:我只想检查他们正在工作或不工作的2个端口。  

#include 
#include 
#include 
#include "inc/hw_i2c.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_gpio.h"
#include "driverlib/i2c.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"






*#include "drivermap/ina.h"

//启用 GPIO 以配置 I2C 接口引脚
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
//
//等待外设为编程做好准备
//
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB)
||!SysCtlPeripheralReady (SYSCTL_Periph_GPIOL);
//
//为 I2C2主接口配置引脚
//
GPIOPinConfigure (GPIO_PB2_I2C0SCL);
GPIOPinConfigure (GPIO_PB3_I2C0SDA);
GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_3);
GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_2);
//

//
GPIOPinConfigure (GPIO_PL1_I2C2SCL);
GPIOPinConfigure (GPIO_PL0_I2C2SDA);
GPIOPinTypeI2C (GPIO_PORTL_BASE、GPIO_PIN_0);
GPIOPinTypeI2CSCL (GPIO_PORTL_base、GPIO_PIN_1);
返回0;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SDA 和 SCL 上是否有上拉电阻器? 如果没有上拉电阻器、I2C 将无法工作。 此外、在完成模块配置并尝试发送或接收之前、您不会在 I2C 引脚上看到任何活动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,SDA 和 SCL 线路上需要上拉电阻。 如果没有上拉、您将像 SCL 上的波形那样得到锯齿。 通过在 SCL 上拉、可以解决问题。

    此致、
    Digvijay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Bob;
    我是否可以在从属设备方面使用 LED? 我只能发送1和0。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很抱歉。 我不理解你的问题。 也许您可以展示您连接到 I2C2SCL 和 I2C2SDA 线路的原理图。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Digvijay khambe"]如果不上拉、您将在 SCL 上获得类似于波形的锯齿。[/quot]

    真的吗?  正如 I2C 输出所示、"开漏"-什么电压源(那么)启用这样的"锯齿?"        "悬空"I2C 引脚配置经常导致的"类似锯齿波形"的"结论"不正确。   (我们不怀疑"您"观察到这种情况、但(最可能的)锯齿是由(其他元件)在您的电路板或应用中引起的、并且证明不是浮动 I2C 引脚的"通用诊断证明"!)

    [引用 user="Digvijay khambe"]通过对 SCL 问题进行2.2K 的上拉操作,可以解决该问题。

    2k2没有魔法(只有2k2!)   这可能在重载 I2C 总线中很有用-这不是本海报的用例。  (尚未)

    正如对海报代码的审查清楚地显示(并且正如供应商的 Bob 所指出的)、I2C 初始化不完整-并且没有命令进行任何'I2C'传输-因此、他的问题是"超出"缺少上拉电阻器...  另请注意-海报未能告知上拉电阻器是否存在...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我是说如果我在 SDA 和 SCL 线路上使用 LED、它将是从器件? 模块配置完成后,传输到 LED 并从主设备接收数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我可以(也是我部署 LED 以启用(基本)信号线路监控的次数):

    • 阳极连接到信号引脚、阴极连接到 GND 的 LED。 (并包括一个串联电阻器)-如果您的数据速率足够(缓慢)-可以确认是否存在"逻辑高电平"。
    • 反转该 LED 的"连接极性"-同样-可以确认是否存在"逻辑低电平"。
    • LED 证明"无法"发起数据或将数据发送到您的 MCU。   
    • 最小容量、最简单、基于 I2C 的 EEPROM -可(极大地)简化 MCU I2C 端口的测试和验证。   最常从复杂的 I2C 器件开始-会导致"痛苦/沮丧"-您(以及助手 crüe -此处)...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否、使用 LED 来识别 I2C 线路的状态可能不起作用。 信号变化过快。 请改用示波器或逻辑分析仪。