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.

[参考译文] TM4C1230C3PM:无法解锁 P[0]引脚

Guru**** 649970 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1080885/tm4c1230c3pm-unable-to-unlock-the-pf-0-pin

部件号:TM4C1230C3PM
“线程:测试”中讨论的其它部件

您好,

给定部件号 TMC1230C3PM,我无法解锁 PF0引脚以尽可能配置它。

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    while (!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF));

    HWREG(GPIO_PORTF_BASE+GPIO_O_LOCK) = GPIO_LOCK_KEY;
    HWREG(GPIO_PORTF_BASE+GPIO_O_CR) |= GPIO_PIN_0;

    GPIOPinConfigure(GPIO_PF0_CAN0RX);
    GPIOPinConfigure(GPIO_PF3_CAN0TX);

    GPIOPinTypeCAN(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_3);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_CAN0);
    while(!SysCtlPeripheralReady(SYSCTL_PERIPH_CAN0)){}

    CANInit(CAN0_BASE);

    ui32CanBitRate = CANBitRateSet(CAN0_BASE, ui32SysClock, 1000000u);
    CANIntEnable(CAN0_BASE, CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);

    CANEnable(CAN0_BASE);

寄存器的值  

GPIO_PORTF_LOCK_R
是 alwasys 1。

谢谢你,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

     我也看到了同样的东西。 我甚至使用了在 TivaWare 库中使用 GPIO _JTAG 示例在 PortC 上尝试,解锁 LOG_R 后它为1。 我不太确定原因是什么。 但是,该针脚实际上已解锁以用于其他功能。 对于 PortC,默认情况下,它用于 JTAG 引脚。 解锁后,我可以将 PortC 更改为 GPIO,但读取 LOCK_R 寄存器返回1。 您能否检查 CAN0RX 引脚并查看其是否正常工作?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    不幸的是,我没有收到任何关于这一针脚的信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

     我没有配备 CAN 收发器的 EVM 板来测试 CAN 功能中的 PF0。 但是,我解锁并将 timer0 T0CCP0的 PF0配置为 PWM 引脚。 很正常工作。 我可以在 Pf0上看到 PWM 信号。 因此,解锁工作正常。 我有意评论解锁操作,但我在 PM0上看不到任何信号, 我已经捕获了 PortF 寄存器。 参见下文。  你可以告诉你吗? 我想看看您的 portF 寄存器中是否有任何寄存器被写入。 如我所见,GPIO PCTL 更改为0x7,即选择 T0CCP0。 如果选择 CAN0RX,您的系统将为0x3。 我注意到,当我通过一行 HWREG (GPIO_PORTF_BASE + GPI_O_LOCK )= GPI_LOCK_KEY 时, 它将首先更改为0。 但是 ,在执行行 HWREG(GPIO_PORTF_BASE + GPI_O_CR)= 0x01后,它将更改为0x1。 这可能是操作的伪影,因为 CR 寄存器确实会更改为新的设定值。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好查尔斯,

    非常感谢您的支持!

    在阅读您的回复时,我找出了根本原因。 好的,就像几乎所有时候,问题都在椅子和键盘之间! 这是我的软件中的一个错误,因此停止通过 CAN 端口发送数据。

    感谢您的时间和支持,并保持联系!

    此致,