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.

[参考译文] LAUNCHXL-F28027F:F28027F I2C 不工作

Guru**** 2605855 points
Other Parts Discussed in Thread: DRV8301, MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/681140/launchxl-f28027f-f28027f-i2c-not-working

器件型号:LAUNCHXL-F28027F
主题中讨论的其他器件:DRV8301MOTORWARE

你(们)好

我修改了一个使用 launchpad F28069M 显示在 OLED 屏幕上的程序、将其改为 F28027F launchpad

// 90MHz/(((8+1)(10+5 + 5+5))= 400kHz

// 60MHz/((5+1)(10+5 + 5+5))= 400kHz

I2caRegs.I2CPSC.all = 5; //预分频器-模块时需要7-12MHz 的时钟

I2caRegs.I2CCLKL = 10; //注:必须为非零

I2caRegs.I2CCLKH=5; //注:必须为非零

但在 F28027F 的 I2C EEPROM 示例中、他们说我们必须放置

I2caRegs.I2CPSC.all = 6; 

这不会提供400kHz 的频率?

此外、I2C 上完全没有信号

尽管我已经配置了 I2C 引脚并将 JP9和 JP11短接

//在 GPIO32/33 LB 04/2018 F28027F 上使用的 I2C
//将输出器 JP9和 JP11
// I2C 数据
GPIO_setMode (obj->gpioHandle、GPIO_Number_32、GPIO_32_Mode_SDAA);
// I2C Clock_setMode
(obj->gpioHandle、GPIO_set33、GPIO_pullup




)、GPIO_sup (gpule_pule_pulot_32);gio_pullup、GPIO_sup、GPIO_sup)、GPIO_pul_pul_pullup (gio32);gio_pul_pul_pul_pul_se_pullup、GPIO_se_pullup、GPIO_sup (gio_pullup)、GPIO_sup、GPIO_sup、GPIO_sup)、GPIO_sup (gio_pul_pul_pul_pul_pul_s32)、GPIO_pul_pul_pul_s32)、GPIO_sul_pul_pul_pul

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

    根据示例的时序、正确的做法是未将其设置为以400kHz 的频率进行通信。 我将提交一个 TT 以更新示例、但无法保证何时修复。 这些示例只是一个起点。 I2C 协议设置为处理高达400kHz 的时钟。 只要 I2C 预分频时钟处于7-12MHz 范围内、该模块就将保证能够满足时序要求。 您可以调整 I2CCLKH 和 I2CCLKL 寄存器、以便在每个区域中提供额外的宽度。 或者、只需将 I2CPSC 更改为5、您将得到恰好为400kHz 的频率。

    请检查 I2C 外设时钟是否已启用。

    请告诉我您是否对 LP 进行了任何其他修改。 您在 JP9和 JP11上短接的焊盘实际上已经通过焊盘下方的迹线短接。 您可以在原理图中看到这一点。 您是否已将任何设备连接到 J2.6和 J2.7? 如果是、您是否切断了 JP5和 JP7之间的线迹?

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

    您好、Marks:

    我在焊盘之间看不到任何迹线、只是焊盘上的0603 R0进行了少量焊接。

    是否确定有链接? 我如何剪切它们

    我希望(尚未完成)连接 EVM8301、因此它将在 J2.6和7上使用 SPI、因此我需要焊接 JP4和 JP6 (尚未完成)

    J2.6 SDI JP4-On

    J2.7 SDO JP6-ON

    并使用 I2C ON 连接 OLED  

    J6.7 GPIO32 SDA_OLED JP9-ON

    J6.8 GPIO33 SCL_OLED JP11-ON

    我焊接了 JP9和 JP11

    我的计划剂量不起作用... 尽管它在69M 上工作、但它确实是配置/硬件

    --------------------------------------------

    我导入 了 example_2802xI2C_EEPROM.c (在修改 GPIO 之后)  

    GpioCtrlRegs.GPBMUX1.bit.GPIO32=1;//为 SDAA 配置 GPIO32
    GpioCtrlRegs.GPBMUX1.bit.GPIO33=1;//为 SCLA 配置 GPIO33

    示例 Example_2802xI2C_EEPROM.c 有效! 我从中获取信号

    I2C J6.7 J6.8

    那么、我的程序有什么问题

    如何选中"Please check that the I2C peripheral clock is enabled."?

    是的,解决方案就在那里!

    默认情况下  

    void HAL_setupPeripheralClks (HAL_Handle handle)

    有的

    clk_disableI2cClock (obj->clkHandle);

    而对于 F28069M、它支持 I2C!

    但我的 prog 仍然不起作用

     在等待 .I2CSTR.bit.XRDY 时、它仍然卡住

    (i=0;<wsize; i++)

    I2caRegs.I2CDXR =*(wdata+I);
    while (!I2cRegs.I2CSTR.bit.XRDY);

    有什么想法吗?

    谢谢

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

    Lotfi、

    焊盘之间有迹线。 它被埋葬了。 您可以通过测量焊盘之间的电阻或使用 DMM 检查导通性来判断这一点。 您可以用一把德士古刀切割痕迹。 它被埋入的正下方是焊层、因此您无需进行非常深的切片。 这是在最终确定完整生态系统规范之前很早就开始使用的 LaunchPad、也是使用低引脚数封装的 LaunchPad、因此需要进行一些权衡、以尽可能多地获取逻辑上可行的引脚。

    对于您的硬件配置、请按如下方式设置跳线

    BP 引脚 信号 连接 剪切
    J2.6 GPIO - SDI JP4 JP5
    J2.7 GPIO - SDO JP6 JP7.
    J6.7 GPIO32 - SDA JP9. JP8.
    J6.8 GPIO33 - SCL JP11. JP10.

    现在、您的硬件应设置为接受两个电路板而不争用。

    我对您使用的程序有点困惑。 您已声明您正在修改为 F2806x 编写的 OLED 驱动器代码(在 此处链接 https://github.com/blotfi/c2000_OLED_SSD1306)、并且您正在尝试添加 DRV8301 BoosterPack。 您现在是否正在进行以下实验之一: C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_ocs\src? 如果是、代码会禁用 I2C 模块、这可能会降低功耗、也是因为程序示例中没有必要这样做。

    您是否更改了行  

    [引用 user="Lotfi]clk_disableI2cClock (obj->clkHandle);[/quot]

    更改为  

    clk_enableI2cClock ()?

    -Mark

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

    非常感谢 Mark

    是的、我 已在我修改的 HAL.c 文件中启用 I2C clk CLK_enableI2cClock

    但当您向我解释这些痕迹被埋没时、您的最后一篇文章最终解决了这个问题!

    在测试所有连接时是的!

    无法用标头切割它们,我用我的 Dremel 0.8毫米来做;-)工作正常

    现在、我的 PB 已经解决了:PWM 及其8301 over SPI 和 OLED 屏幕 I2C 工作

    (是 的、https://github.com/blotfi/c2000_OLED_SSD1306 是我的69M 代码、现在也适用于27F)

    您的表格 应打印在 Launchpad 27F 原理图或用户指南中

    BP 引脚信号所需连接切断

    J2.6 GPIO - SDI JP4 JP5

    J2.7 GPIO - SDO JP6 JP7

    J6.7 GPIO32 - SDA JP9 JP8

    J6.8 GPIO33 - SCL JP11 JP10

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

    我很高兴连接是问题所在。 我将提交一个 TT、以获取用户指南中记录的表格。

    -Mark

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

    您好、Mark

    是的、这是一个"地下跳线"问题。

    现在、我要处理一个 ADC ISR、该 ISR 过长、会切断通过 I2C 发送信息并显示在 OLED 上的主循环(后台任务)

    遗憾的是、I2C TX 只有4级 FIFO。

    具有大量存储器存取的 DMA 会更好。

    我正在尝试找到一种解决方案、可能会被小字符部分削减、或者进入 I2C TX ISR、但这是另一个故事。

    祝你一切顺利

    Lotfi