主题中讨论的其他器件: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 配置了项目、如下所示: 




我的代码:
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;
}
代码在 whule i2cIsBusy()上挂起。
程序启动时、SCL 和 SDA 都为高电平。 当我在 i2cSetStart ()之后设置一个断点时,我看到 SCL 和 SDA 都被拉低(0V)(???)。 在 i2cSendByte 期间、我看到 SDA 在短时间内变为高电平(3.3V)、然后返回到低电平。 SCL 保持低电平。 我没有看到任何时钟脉冲。
有什么想法我做错了什么?
非常感谢任何帮助!
谢谢。
文森特

