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.
大家好!
我想使用计时器引脚来实现总线协议、即在接收数据时测量边沿时间、在发送时控制边沿时间。
0和1由不同的高电平时间实现。
捕获边沿时间当接收很简单时、我希望0和1的发送只能通过使用具有动作的计时器来完成、
传输时、该引脚需为开漏。
当我利用 Tivaware 将该引脚配置为计时器引脚时、该引脚设置为推挽引脚
void
GPIOPinTypeTimer(uint32_t ui32Port, uint8_t ui8Pins)
{
//
// Check the arguments.
//
ASSERT(_GPIOBaseValid(ui32Port));
//
// Make the pin(s) be peripheral controlled.
//
GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_HW);
//
// Set the pad(s) for standard push-pull operation.
//
GPIOPadConfigSet(ui32Port, ui8Pins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
}
是否可以通过执行一个具有漏极开路的
GPIOPinTypeTimer(GPIO_PORTL_BASE, GPIO_PIN_6);
GPIOPadConfigSet(GPIO_PORTL_BASE, GPIO_PIN_6, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_OD)
?
此致、
赖纳
您好、Rainer:
我认为它应该起作用。 我建议你将 gpio.c 文件复制到你的项目目录、进行更改并将它与项目的其余部分一起编译。 您所做的更改将覆盖预编译的 drlverlib.lib。 您也可以更改库本身并重新构建库。
尊敬的 Charles:
感谢您的快速响应。
我对如何管理代码并不感到很困惑、但引脚行为却让我感到困惑。
我只需要为一个引脚使用此引脚、以便我在初始化后添加一行代码。
如果在与计时器一起使用时能够将引脚配置为开漏、我就很好了。
我会在下周报告我的发现。
此致、
赖纳
尊敬的 Charles:
它原则上也许起作用、但是我发现(很难做到) PL6和 PL7不能用在开漏配置中。
手册中的注释对此进行了说明
"端口引脚 PL6和 PL7作为快速 GPIO 焊盘运行、但仅提供4mA 驱动能力。 用于驱动强度、转换率和开漏的 GPIO 寄存器控制对这些引脚没有影响。"
使用此 MCU 多年后、我只是没有查明任何 GPIO 是否存在漏极开路问题。 也许、它要求太多、但在 DRL 代码中变为有效时不可能做到这一点?
总之、在调试该内容期间、我发现这个帖子中报告异常行为的人
e2e.ti.com/.../tm4c1294ncpdt-pl6-and-pl7-misbehaving
完全正确、具有奇怪的观察结果、即引脚的功能与配置为开漏时的功能相反。
也就是说:将 PL6配置为开漏模式下的 GPIO、将其设置为高电平、并且信不信由你、引脚会变为低电平(反之亦然)。
也许,这是有趣的任何人在相同的问题上的绊脚石。
此致、
赖纳
您好、Rainer:
感谢您提出 PL6和 PL7的特殊案例。 我在数据表上自己漏掉了这个时间。 是的、这两个引脚只能在4mA 驱动强度下运行。 开漏配置对这两个引脚没有影响。 我倾向于认为、开漏配置会对引脚产生一些影响、但会产生负面影响、而非无影响。 我将把这篇文章列为书签,以备将来参考,以防其他人遇到同样的看法。
注:端口引脚 PL6和 PL7用作快速 GPIO 焊盘、但仅提供4mA 驱动能力。
用于驱动强度、压摆率和开漏的 GPIO 寄存器控制对这些不起作用
引脚。 没有任何影响的寄存器如下:GPIODR2R、GPIODR4R、
GPIODR8R、GPIODR12R、GPIOSLR 和 GPIOODR。