主题中讨论的其他器件:TM4C1294NCPDT
工具/软件:Code Composer Studio
您好!
我在 TM4C129X 开发板上工作、我通过 I2C 将电源序列发生器 UCD 连接到该开发板
我的目的是检查接口是否是我尝试读取芯片组的器件 ID 和运行 ID 的接口。 正常情况下、我能够通过 I2C 与 UCD 芯片组通信。
当我从 I2C 上断开芯片连接时、我面临两个问题
这是我处理的代码
/********* /
I2CMasterSlaveAddrSet (I2C1_base、UCD_I2Cadr、false);// 写入 ucd addr
I2CMasterDataPut (I2C1_base、ui8Command);//将命令放置到 I2C1
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START);//发送
while (!I2CMasterBusy (I2C1_base));
while (I2CMasterBusy (I2C1_base)); //检查 I2C 主设备是否占线、因此等待
if (I2CMasterErr (I2C1_base)!= I2C_MASTER_ERR_NONE)
{
返回 false;
}
/******* /
问题1:当 I2C 引脚悬空时、例如没有上拉电阻
我观察到代码在语句中挂起
"while (I2CMasterBusy (I2C1_base)); //检查 I2C 主设备是否忙、因此等待"'
该怎么办?
问题2:当 I2C 从 UCD 断开但具有上拉电阻时
I2CMasterErr (I2C1_base) 不会导致错误!!
但是
"I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START);//发送"
在示波器上、我只能观察到9个时钟周期、实际情况是应该有18个周期(ADDR &&命令")
这种情况下如何确定接口中是否有错误?
这样做的正确方法应该是什么??