Other Parts Discussed in Thread: TM4C123GH6ZRB
大家好、支持者、
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.
Other Parts Discussed in Thread: TM4C123GH6ZRB
大家好、支持者、
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 "会导致/引发混淆。) (希望现在已解决...)