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.

[参考译文] TMS570LS1227:TMS570LS12x Hercules 开发套件(HDK) I2C 无法正常工作

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1301500/tms570ls1227-tms570ls12x-hercules-development-kit-hdk-i2c-not-working

器件型号:TMS570LS1227
主题中讨论的其他器件:HALCOGEN

您好!

我正在尝试使 TMS570LS12x Hercules 开发套件(HDK)(TMS570LS1227ZWT)上的 I2C 正常工作、但无法成功。 SPI/SCI/CAN/etc。 正常工作、但我无法使 I2C 正常工作。

我的硬件设置:
MCP23017 I/O 扩展器连接到 HDK。
J11上的 SCL 连接引脚71 (ZWT 上的引脚 C3)
SDA 连接到 J11上的引脚72 (ZWT 上的引脚 B2)
MCP23017位于试验电路板上并提供3.3V (VDD)! RESET 也连接到3.3V。
GND (MCP23017上的 VSS)连接到试验电路板电源和 HDK (GND)上 J11的引脚80。 有一个公共接地。
SDA 和 SCL 上都有2kB 上拉至3V3。 MCP23017上的地址引脚均连接到 GND、因此从器件地址应为0x20。

我给 SCL 和 SDA 线都连接了一个示波器。

我使用 HALCOGEN 配置了项目、如下所示:

我的代码:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main(void)
{
/* USER CODE BEGIN (3) */
uint16 MCP23017_ADDRESS = 0x20;
uint8 IODIRA = 0x00;
i2cInit();
i2cSetSlaveAdd(i2cREG1, MCP23017_ADDRESS);
i2cSetDirection(i2cREG1, I2C_TRANSMITTER);
i2cSetMode(i2cREG1, I2C_MASTER);
i2cSetStop(i2cREG1);
i2cSetStart(i2cREG1);
i2cSendByte(i2cREG1, IODIRA);
while(i2cIsBusBusy(i2cREG1));
while(!i2cIsStopDetected(i2cREG1));
i2cClearSCD(i2cREG1);
/* USER CODE END */
return 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

代码在 whule i2cIsBusy()上挂起。
程序启动时、SCL 和 SDA 都为高电平。 当我在 i2cSetStart ()之后设置一个断点时,我看到 SCL 和 SDA 都被拉低(0V)(???)。 在 i2cSendByte 期间、我看到 SDA 在短时间内变为高电平(3.3V)、然后返回到低电平。 SCL 保持低电平。 我没有看到任何时钟脉冲。

有什么想法我做错了什么?

非常感谢任何帮助!

谢谢。

文森特

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

    您好、Vincent:

    我觉得您的设置和地址(0x20)看起来是正确的。

    我唯一怀疑的是、您在发送数据字节之前未初始化 i2cCNT 寄存器

    您应该调用以下 API 来执行该操作:

    我还要附加经过测试的 i2c 示例供您参考、请浏览。

    e2e.ti.com/.../3073.I2C_5F00_Master_5F00_RM46L852.zip

    e2e.ti.com/.../5040.I2C_5F00_TEST_5F00_LC43.zip

    --

    谢谢。此致、
    Jagadish。

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

    感谢 Jagadish、

    它确实是未正确设置的 i2cCNT 寄存器。 这周我一直在编写代码、并使用重复的启动条件实现了 I2C。 进行大量的调试、 但现在可以与 MCP23017芯片完美地通信。

    谢谢!

    文森特