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.

[参考译文] TM4C129ENCPDT:I2C 示例、tmp006、不能用于 TM4C129EXL Launchpad

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/607153/tm4c129encpdt-i2c-example-tmp006-doesn-t-not-work-on-tm4c129exl-launchpad

器件型号:TM4C129ENCPDT
Thread 中讨论的其他器件:EK-TM4C129EXL

您好!

我正在尝试让 I2C 接口首先启动并发送初始主设备写入请求。 此时、仅在 BoosterPack 接头引脚上观察 SCL 和 SDA。 当示例在调试器中运行时、在任一引脚上都没有观察到活动。 这些引脚甚至不会被拉高。

示例工程通过 CCS Resource Explorer 从文件夹 TI-RTOS 中复制到 CCS 版本:7.1.0.00016、用于 TivaC-v:2.16.00.08\Development Tools\EK-TM4C129EXL\DriverExamples\I2C_Examples\I2C_tmp006。

I2C 初始化如下:

void EK_TM4C129EXL_initI2C (void)

   /* I2C7初始化*/
   /*
    *注意:TI-RTOS 示例为 SSI2或 I2C7配置引脚 PD0和 PD1。  因此、
    *在中同时使用 I2C 和 SPI 驱动程序时会发生冲突
    *应用程序。  修改此文件中的引脚多路复用设置并解析
    *运行应用程序前发生冲突。
    *
   /*启用外设*/
   SysCtlPeripheralEnable (SYSCTL_Periph_I2C7);

   /*将相应的引脚配置为 I2C 而不是 GPIO。 *
   GPIOPinConfigure (GPIO_PD0_I2C7SCL);
   GPIOPinConfigure (GPIO_PD1_I2C7SDA);
   GPIOPinTypeI2CSCL (GPIO_PORTD_BASE、GPIO_PIN_0);
   GPIOPinTypeI2C (GPIO_PORTD_base、GPIO_PIN_1);

   /* I2C8初始值*/
   /*启用外设*/
   SysCtlPeripheralEnable (SYSCTL_Periph_I2C8);

   /*将相应的引脚配置为 I2C 而不是 GPIO。 *
   GPIOPinConfigure (GPIO_PA2_I2C8SCL);
   GPIOPinConfigure (GPIO_PA3_I2C8SDA);
   GPIOPinTypeI2CSCL (GPIO_Porta_base、GPIO_PIN_2);
   GPIOPinTypeI2C (GPIO_Porta_base、GPIO_PIN_3);

   I2C_init();

这是通过 i2ctmp006.c 文件中 main 的 Board_initI2C()调用的

在之前的调用中、通过调用 Board_init_gpio 和 Board_initGeneral 来初始化所有 GPIO 端口。

我曾在论坛上作过发言,但没有看到任何以上的迹象是不正确的;事实上,我必须根据我到目前为止所读的内容说,以上内容是正确的。

希望这里有人能问我的正确问题、我所做的工作将会带来解决方案。

提前感谢您。

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

    您是否提供了上拉电阻器? 从数据表的第1402页:

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

    感受到您的痛苦-但其中可能(部分)是"自我折磨?"   (即 、您已使用 MCU 和 RTOS -显示的代码显示两个 I2C 模块(不描述哪个模块发生故障)-并且您报告"在 BoosterPack 接头引脚处探测 I2C 信号"。)   (最好尽可能靠近此类信号源进行探测。)

    虽然(外部)上拉电阻 Rs 的存在肯定会有所帮助(并且始终证明优于 MCU 内部提供的"过高"值)、但它不会被证明是最好的使用方式、 "kiss"-(暂时)中断您(假定的)多板连接-而只关注"行为错误"I2C 端口-没有任何 RTOS 的负担?   原则是"分治和征服"-当前的"一次分治"方法可"掩盖"问题的根源和位置。   (可以是 MCU、RTOS (甚至两者)或(假设)电路板到电路板互连中的情况。)

    通过以这种方式减少"游戏领域"来简化-最好能让您系统地了解组件系统部件(MCU、RTOS、互连)-以及(仅限于)每个部件都是"单独测试/验证"的情况-如果它们是互连的并作为一个团队使用。    

    您面临的"变量和不确定性"越多、您的斗争就越长、也就越痛苦。   "kiss"早已得到充分证明、可帮助您理解、同时带来知识增益、甚至可以证明 "最快、最高效、最简单的"问题解决方案车辆!"

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

    您好!

    哇、感谢您的快速响应。

    TM4C129EXL Launchpad UG 中针对 每个 SCL 信号的以下文本:

    I2C 模块7时钟。 请注意、该信号具有
    有源上拉。 相应的端口引脚
    未配置为开漏。

    我假设、如果 SCL 线路配置正确、至少应将其拉高、我假设示例设计会这样做。 那么、该示例可能不是在 SCL 上配置上拉???

    此 Launchpad UG 末尾的原理图部分为空(无原理图)、因此我无法看到 SCL 或 SDA 的上拉电阻器应放置在何处。 我猜在查看电路板后、没有专门为此提供焊盘。 我想在板边缘(对于连接器 X11)上的相应插头引脚插座旁边的板上插入一个 R 死区。 这有道理吗?

    再次感谢您的回答、祝您愉快。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在四处走动后、在此找到了该 Launchpad 的电路板设计文件:
    www.ti.com/.../getliterature.tsp

    查看原理图、我看不到任何测试点或其他探测点。 我认为 BP 和 X11插头引脚就是这样。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    探测连接到 BP 接头的所有4个 I2C 端口。 所有显示均无活动。 目的是使用映射到 BP1 X9-12和-14的 I2C7 (PD0/1)。

    没有任何器件连接到 I2C;独立运行 Launchpad 板。 只需尝试使第一个 I2C 地址写入正常工作、即可使用 DSO 进行监控。

    在最终跟踪电路板原理图(Launchpad UG 中缺少该原理图)后、除了直接在 uC 引脚处探测这些信号(我几乎无法辨别)之外、我没有看到任何其他地方可用于探测这些信号。 SCL/SDA 路径在 TI 交付的评估板上的布线可能会非常真实(我认为)。

    在阅读 I2C 的 API 文档时、我曾相信这些 API 调用只能在 TIRTOS 中使用。 TI 的这个设计示例就是这样。 我的帖子是关于此设计示例的。 如果有一些寄存器设置未按照写入方式正确配置、我还无法跟踪它。 将不断挖掘。 假设这些设计示例在 TI "交付"之前已经过测试、我是天真的吗?

    在我添加上拉后、如果仍然没有操作、并且对 API 调用进行任何其他查找、将尝试裸机版本。

    感谢您的意见;非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我应该提到应用程序(在调试中运行)完成初始传输(单步执行代码)、然后完成块。 ROV 显示空闲任务正在运行、并且任务 FXN 被阻止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲吻有着"极大"的优点-外科医生总是"戴"""手术区"、这样外部就不会干扰。   您对(MCU)和"希望的"RTOS 的使用会放弃"跳跃"、而让您(仅)"希望"、即一切都将完全正确地协调并正常运行。    (请注意、熟练/训练有素的供应商代理-从您的问题中击败一个退让-这是否会"强化"过于复杂?"的概念?)

    在这里有数百个帖子-在每种情况下-被允许的供应商无法完全预测用户对"个人偏好"的修改和导入。   评估复杂性-在"掌握基本知识/细节"之前-看起来基本上与直觉不一样...

    同样,你对“复杂、多要素、“交钥匙”系统成功”的“希望”没有实现——因此我建议“限制游戏场”——这至少会使你的疑难解答工作要求低得多!   (因此更快、更容易、更出色-成功的可能性大大提高。)

    复杂的系统最常通过采用"通过改进推进"而成功。    您"与"这一方向相反"是"供应商没有进行充分测试?    您的"困难"-回答(令人信服)-回答不是吗?

    减去您的"时间/精力/重点"投资-真正了解组成部分-您的长期成长和成功"被"束缚在"快速/轻松"的欲望(即最小努力-供应商项目)-这既不同意也不反映"正常/习惯"人类学习过程...    “吻”是你的抗御词——即使你抵抗——特别是当你抵抗时……

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 SCL/SDA 信号上添加上拉电阻器是成功的。 START、ADDRESS、WRITE 状态、NACK (因为未连接从器件)和 STOP 序列均符合预期。 感谢您的打盹。 现在谈谈真正的问题...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    I2C 主机到从机地址周期的屏幕截图。