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:LINREG2 TX/RX 引脚未上拉

Guru**** 2465890 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/658989/tms570lc4357-linreg2-tx-rx-pins-not-pulled-up

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

您好!

我尝试将 LIN2 TX/RX 引脚(T5/P4)用作从节点引脚。 但是、当我连接示波器时、我看到尽管在 HALCoGen 中选中了上拉复选框、但这些引脚并未上拉。 以下是 LIN.c 文件中的相关行:

   /**-从重置中释放*/
   linREG2->GCR0 = 1U;

   /**-启动 LIN 配置
   *    -保持状态机处于软件复位状态
   *
   linREG2->GCR1 = 0U;

   /**  -启用 LIN 模式*/
   linREG2->GCR1 = 0x40U;
   
   /**-设置控制寄存器1
   *    -启用发送器
   *    -启用接收器
   *    -进入调试模式时停止
   *    -禁用环回模式
   *    -禁用/启用 HGENCTRL (使用 ID 字节进行屏蔽滤波)
   *    -使用增强校验和
   *    -启用多缓冲模式
   *    -禁用自动波特率调整
   *    -禁用睡眠模式
   *    -将 LIN 模块设置为主模块
   *    -启用/禁用奇偶校验
   *    -在 ID4和 ID5中禁用数据长度控制
   *
   linREG2->GCR1 |= 0x03000C60U
                |(uint32)((uint32) 1U <<12U)
                |(uint32)((uint32) 0U << 2U);
               
   /**-设置最大波特率预分频器*/
   linREG2->MBRSR =(uint32) 5155U;

   /**-设置波特率预分频器*/
   linREG2->BRS=(uint32) 357U;

   /**-设置 RX 和 TX 接收屏蔽*/
   linREG2->MASK =((uint32)((uint32) 0xFFU <<16U)|(uint32) 0xFFU);

   /**-设置比较
   *    -同步定界符
   *    -同步间隔扩展
   *
   linREG2->COMP =((uint32)((uint32)(1U - 1U)<<8U)|((uint32) 13U - 13U));

   /**-设置响应长度*/
   linREG2->format =((linREG2->format & 0xFFF8FFFFU)|(uint32)(((uint32) 8U - 1U)<< 16U);

   /**-设置 LIN 引脚功能模式
   *    - TX
   *    - RX
   *    - CLK
   *
   linREG2->PIO0 =((uint32) 4U |(uint32) 2U |(uint32) 0U);

   /**-设置 LIN 引脚默认输出值
   *    - TX
   *    - RX
   *    - CLK
   *
   linREG2->PIO3=((uint32) 0U |(uint32) 0U |(uint32) 0U);

   /**-设置 LIN 引脚输出方向
   *    - TX
   *    - RX
   *    - CLK
   *
   linREG2->PIO1 =((uint32) 0U |(uint32) 0U |(uint32) 0U);

   /**-设置 LIN 引脚开漏使能
   *    - TX
   *    - RX
   *    - CLK
   *
   linREG2->PIO6 =((uint32) 0U |(uint32) 0U |(uint32) 0U);

   /**-设置 LIN 引脚上拉/下拉使能
   *    - TX
   *    - RX
   *    - CLK
   *
   linREG2->PIO7=((uint32) 0U |(uint32) 0U |(uint32) 0U);

   /**-设置 LIN 引脚上拉/下拉选择
   *    - TX
   *    - RX
   *    - CLK
   *
   linREG2->PIO8=((uint32) 4U |(uint32) 2U |(uint32) 1U);

   /**-设置中断级别
   *    -位错误级别
   *    -物理总线错误级别
   *    -校验和错误级别
   *    -不一致的同步字段错误级别
   *    -无响应错误级别
   *    -帧错误级别
   *    -溢出错误级别
   *    -奇偶校验错误级别
   *    -标识符级别
   *    - RX 电平
   *    - TX 级别
   *    - 3个唤醒信号电平后超时
   *    -唤醒信号电平后超时
   *    -超时级别
   *    -唤醒电平
   *    -中断检测级别
   *
   linREG2->SETINTLVL =((uint32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U
                      |(UINT32) 0x00000000U);

   /**-设置中断使能
   *    -启用/禁用位错误
   *    -启用/禁用物理总线错误级别
   *    -启用/禁用校验和错误级别
   *    -启用/禁用不一致的同步字段错误级别
   *    -启用/禁用无响应错误级别
   *    -启用/禁用组帧错误级别
   *    -启用/禁用溢出错误级别
   *    -启用/禁用奇偶校验错误级别
   *    -启用/禁用标识符级别
   *    -启用/禁用 RX 电平
   *    -启用/禁用 TX 级别
   *    -启用/禁用3个唤醒信号电平后的超时
   *    -启用/禁用唤醒信号电平后的超时
   *    -启用/禁用超时级别
   *    -启用/禁用唤醒电平
   *    -启用/禁用中断检测级别
   *
   linREG2->SETINT =((UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000200U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U
                   |(UINT32) 0x00000000U);

   /**-最终启动 LIN */
   linREG2->GCR1 |= 0x00000080U;
   

/*用户代码开始(3)*/
/*用户代码结束*/

是否正确设置? 如果是、为什么不上拉?

谢谢、

SA

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

    LIN2 RX 和 TX 引脚在某些 NHET 功能引脚后面进行多路复用、您是否检查以确保您已配置 PINMUX 选项卡、以便将这些功能引入引脚而不是默认的 NHET 功能? 此外、在功能模式下进行配置时、将默认配置上拉电阻器、因此无需使用 PIO 寄存器重新配置上拉电阻器。 实际上、一旦配置为功能模式、我相信 PIO 寄存器会被忽略。

    如果您想让我看一下您的设置、请发布您的 HCG 项目文件、我可以将其导入以验证配置设置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 我在 PINMUX 选项卡上找到它们。 但是、您知道哪些文件发生了变化吗? 我有一个较旧的项目是使用另一个版本的 HALCoGen 生成的、我只想将这些更改导入该版本(即复制/粘贴)。

    谢谢、

    SA

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

    我应答太快、我检查了项目、并在 PINMUX 中启用了它们。 为什么不进行脉冲总结?

    我是否也应该在 HET2标签中为 HET19和 HET20选择上拉? (我不确定 HET 和 NHET 是否相同?)

    我已经访问了.hcg 和.dil files.e2e.ti.com/.../0882.pr.tar

    谢谢

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

    您好、SA、

    很抱歉、您的帖子延迟。 我看了一下您的 HCG 设置、尽管2个引脚存在冲突、但我认为这些不会影响 LIN2TX 和 LIN2RX 引脚功能的选择。

    您能否查看 hL_pinmux.c 文件并了解如何写入 pinmux 寄存器适用的 pinmux 寄存器是 PINMUX[36]。 应如下所示:

    PinMuxReg->PINMUX[36]= PINMUX_BLE_P4_LIN2RX | PINMUX_BLE_T5_LIN2TX | PINMUX_BLE_T4_MII_RXCLK | PINMUX_BLE_U7_MII_TX_CLK; 


    如您所见、PINMUX_BLE_P4_LIN2RX 和 PINMUX_BLE_T5_LIN2TX 的#defines 设置了相应的位以在关联的焊球上选择这些输出。 您的代码应该相同。 如果不是、则表示它们未正确初始化。

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

    您好!

    我检查了 hl_pinmux.c 和 pinMuxReg [36]、就像您在这里所写的那样。 因此这不可能成为问题。 我的同事建议这些 LIN 引脚不从 TMS570LC4357连接到开发板的引脚 P4和 T5。 因此、即使它们的名称相同、也没有真正的连接。

    最棒的

    SA