主题中讨论的其他器件: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 保持低电平。 我没有看到任何时钟脉冲。
有什么想法我做错了什么?
非常感谢任何帮助!
谢谢。
文森特