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.

tms570lc4357管脚上电初始状态问题

Other Parts Discussed in Thread: TMS570LC4357

请教:设计中将tms570lc4357的管脚DCAN2TX(H2)和DCAN3TX(M18)用作普通GPIO,在上电瞬间实测发现DCAN2TX(H2)保持为低,而DCAN3TX(M18)则有一段长约200ms的时间为高,之后变低。

请问,期望的结果是上电过程中DCAN2TX(H2)和DCAN3TX(M18)均保持为低,应该如何处理?
以及,是否不管什么批次,tms570lc4357都有以上特性?其他信号(如DCAN1RX、DCAN1TX、DCAN2RX、DCAN2TX、DCAN3RX、DCAN3TX,或其他的GPIO)上电瞬间又都是什么状态?

谢谢

  • The CAN_RX and CAN_TX pins of each DCAN module can be used as general purpose IO pins, if CAN functionality is not needed. This function is controlled by the CAN TX IO Control register (see Section 27.17.34) and the CAN RX IO Control register (see Section 27.17.35).

    根据datasheet可知 www.ti.com/.../tms570lc4357.pdf

    DCAN2TX/DCAN3TX 默认都是Pullup,不过您可以通过配置 CAN TX IO Control Register (DCAN TIOC) 寄存器来实现Pulldown
  • 感谢您的回复
    根据datasheet,DCAN2TX/DCAN3TX 默认都是Pullup,但实测情况是:DCAN2TX(H2)为低,而DCAN3TX(M18)则有一段长约200ms的时间为高,之后变低。
    因此推测,是否为上电过程中管脚状态不受 CAN TX IO Control register (see Section 27.17.34)的控制?
    我期望的状态为:将DCAN2TX/DCAN3TX 用于输入,并期望上电过程一直保持为低状态,能否告知我该如何做?
  • 抱歉上条描述有误,此此条为准
    感谢您的回复
    根据datasheet,DCAN2TX/DCAN3TX 默认都是Pullup,我将两个信号配置为输出,且为下拉时得到的实测情况是:DCAN2TX(H2)为低,而DCAN3TX(M18)则有一段长约200ms的时间为高,之后变低。
    因此推测,是否为上电过程中管脚状态不受 CAN TX IO Control register (see Section 27.17.34)的控制?
    我期望的状态为:将DCAN2TX/DCAN3TX 用于输出,并期望上电过程一直保持为低状态,能否告知我该如何做?
  • DCAN2TX/DCAN3TX 两者并没有什么差别。我也想不太清楚为何上电时会出现不同的情况。

    关于用于输出,您可以配置

    CAN TX IO Control Register (DCAN TIOC) 的 Dir位
    CAN_TX data direction. This bit controls the direction of the CAN_TX pin when it is configured to be in GIO mode only (TIOC.Func = 0).
    0 The CAN_TX pin is an input.
    1 The CAN_TX pin is an output.
    Forced to 1, if Init bit of CAN control register is reset

    另外请注意给出的Note

    NOTE: The values of the IO Control registers are only writable if Init bit of CAN Control Register is set.

    The OD, Func, Dir, and Out bits of the CAN TX IO Control register are forced to certain values when Init bit of CAN Control Register is reset (see bit descriptions).

    您需要set CAN Control Register 的 Init 位
  • 相关设置如下所示,请帮忙检查是否有误。set CAN Control Register的init位已经设置为1。

  • 看着没有问题。

    另外我记得在can.c内是由相关操作函数的,您可以找一下

    canIoSetDirection()和canIoSetPort(),他们用来设置这两个端口工作在GPIO模式下的输入或输出方向,以及相应的端口值设置。