大家好、支持者、
TM4C123GH6ZRB 的数据表描述了 I2CSCL 相应的端口引脚不应配置为开漏。 但是、它的缓冲器类型恰好是开漏。
所以、我有点困惑。 您能告诉我描述的含义是什么吗?
此外、说明中还指出该引脚具有有源上拉电阻器。 这是否意味着 I2CSCL 只有内部上拉电阻器、而 I2CSDA 没有内部上拉电阻器?
此致、
S.P. LIN
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.
大家好、支持者、
TM4C123GH6ZRB 的数据表描述了 I2CSCL 相应的端口引脚不应配置为开漏。 但是、它的缓冲器类型恰好是开漏。
所以、我有点困惑。 您能告诉我描述的含义是什么吗?
此外、说明中还指出该引脚具有有源上拉电阻器。 这是否意味着 I2CSCL 只有内部上拉电阻器、而 I2CSDA 没有内部上拉电阻器?
此致、
S.P. LIN
不确定我的出席是否有资格获得头衔、"支持者"-但我发现您的帖子很有趣-如果您接受我基于广受欢迎的 "TM4C123GH6PMI"( MCU 驻留在"4C123 LPAD 上)得出的调查结果、您的困惑可能会减轻。 (有一个希望...)
大多数供应商实施的 Cortex M4在引脚类型和配置方面提供了极大的灵活性。 您(也)注意到的问题:"OD"表明"OD"可能是默认值-但在适应更新的、速度更高的 I2C 模式时- I2CxSCL 引脚可能会被置于一个激活(即推挽)模式。 事实上、供应商的 API 就揭示了这一点! 代码-相当好-解决了您的困惑:
无效
GPIOPinTypeI2CSCL (uint32_t ui32端口、uint8_t ui8引脚)
{
//
//检查参数。
//
assert (_GPIOBaseValid (ui32Port));
//
//使引脚被外设控制。
//
GPIODirModeSet (ui32端口、ui8引脚、GPIO_DIR_MODE_HW);
//
//将焊盘设置为推挽操作。
//
GPIOPadConfigSet (ui32Port、ui8引脚、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);
}
因此-当发出"I2CSCL"引脚的 API 代码时、会强制该引脚进入"推挽"状态。
然而,这个阴谋却变得更浓了! MCU 手册(第16.3节) 指出: "由于内部电路支持 高速运行、SCL 引脚不得配置为开漏信号、尽管 内部电路会使其表现为开漏信号。 SDA 和 SCL 信号都必须 使用上拉电阻器连接到正电源电压。"
我的公司发现、最好始终仅在两个引脚上部署"外部上拉电阻器"(4K7-10K)! (内部 MCU 上拉电阻值太高-引入信号反射和圆角边沿。)
我认为,你们的问题已经得到了处理,而且已经为每一项主张提供了理由。 (这可能是另一种情况、" MCU 手册中未提及 API "会导致/引发混淆。) (希望现在已解决...)