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.

[参考译文] PROCESSOR-SDK-J721S2:如何配置 MCU CAN FD 波特率和 IT##39;s 速度?

Guru**** 2482105 points
Other Parts Discussed in Thread: AM68

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1450027/processor-sdk-j721s2-how-to-config-mcu-can-fd-baudrate-and-it-s-speed

器件型号:PROCESSOR-SDK-J721S2
主题中讨论的其他器件:TDA4VLAM68

工具与软件:

尊敬的团队:

我将调试 MCU、使其可以使用此代码正常工作

pdk_j721s2_10_00_00_27\packages\ti\csl\examples\mcan\mcanEvmLoopback\mcan_evm_loopback_app_main_k3.c
我按如下所示更改位时间。
静态 int32_t App_mcanConfig (uint32_t mcanInstAddrbool enableInternalLpbk)
/*初始化位时序
   *将1Mbps 和5Mbps 分别配置为标称比特率和数据比特率*/
BitTime
+ bitTimes.nomRatePrescalar = 0x2U;
+ bitTimes.nomTimeSeg1 = 0x63U;
+ bitTimes.nomTimeSeg2 = 0x16U;
+ bitTimes.nomSynchJumpWidth = 0x16U;
+ bitTimes.dataRatePrescalar = 0x2U;
+ bitTimes.dataTimeSeg1 = 0x15U;
+ bitTimes.dataTimeSeg2 = 0x4U;
+ bitTimes.dataSynchJumpWidth = 0x4U;

}
我将使用 python 接收 CAN FD 消息。
    总线= CAN。 ThreadSafeBus (接口='pcan'通道='PCAN_USBBUS1'can_filters=filters、
    f_clock_MHz=80nom_BRP=2nom_tseg1=63nom_tseg2=16、nom_sjw=16、data_BRP=2、data_tseg1=15、data_tseg2=4data_Sjw=4FD=True)  
MCU UART 日志
1) python 接收 CAN 消息、因为该消息不正确。  "RX recv:timestamp:1733970171.484433     ID:0004  S Rx E        DL: 4  01 00 7f 00"
这看起来像是某种错误消息。 这代表什么?
2)额定比特率 kbits/?   日期比特率 kbit/s?
3)哪个 寄存器地址是 CAN FD 波特配置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请按照常见问题解答来设置比特率 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/920090/faq-tda4vm-can-how-is-bit-rate-calculated-for-can

    CAN 总线上的另一端是什么? 它还应配置为相同的标称和数据比特率。

    此致

    Tarun Mukesh

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

    尊敬的  Tarun:

    我已经检查了   mcan_evm_loopback_app_main_k3.c  位时间、如下所示。

    标称比特率

    数据比特率

    或者说 LPWAN 类型  4、回送—外部发送和接收

    [ 2024年12月12日11:34:35]正在启动应用程序...
    [MCAN 11:34:36]可供使用的2024年12月12日 模块:
    [MCAN 11:34:36] 2024年12月12日 时钟配置成功。
    [MCAN 11:34:36] 2024年12月12日 节点类型:
    [ 2024年12月12日11:34:36] 1. 发射器侧。
    [ 2024年12月12日11:34:36] 2. 接收器侧。
    [ 2024年12月12日11:34:36] 3. 回送-无外部发送/接收
    [ 2024年12月12日11:34:36] 4. 环回-外部发送和接收
    [ 2024年12月12日11:34:36]输入节点的类型:

    物理连接 EVM 板 CAN0 + CAN1 + PCAN-FD。  (PC 配有 python 工具来接收 CAN 消息)

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

    尊敬的   Tarun:

    我正在查找 MCU CAN 相对详细的 硬件寄存器 说明。  在 "技术参考手册 J721S2/TDA4VE/TDA4AL/TDA4VL/AM68处理器芯片版本1.0德州仪器(TI)产品系列"中 仅包含地址、但没有详细的寄存器说明。  

    您能告诉我可以在哪里下载文档吗?

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

    您好!

    当您从 TI.com 下载 TRM 时、将有 ZIP 文件夹。 在同一 ZIP 文件夹中、您可以看到寄存器

    https://www.ti.com/lit/zip/spruj28

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

     "RX recv:timestamp:1733970171.484433     ID:0004  S Rx E        DL: 4  01 00 7f 00"

    Rx 消息指示为错误帧。

    MSG:ID 0004  

    ECC 寄存器 SJA1000 (错误代码捕捉)、位6和位7 (ERRC0、ERRC1)

    4:填充错误

    https://docs.peak-system.com/API/PCAN-Basic.Net/html/d8b8c576-cc90-4757-a914-4a503f9553d1.htm

    你知道如何修复"4:填充错误" 代码吗?

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

    你好

    对于填充错误

    • 节点类型:Rx
    • 说明:一个序列中有超过5个相同极性的位出现在接收报文中、这是接收报文所不允许的。
    • 检查总线上的所有节点是否具有相同的比特率。

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    • 检查总线上的所有节点是否具有相同的比特率。

    您的意思是 PCAN 查看器还是 python CAN FD 设置?

    如何验证 PROC118 001 J721S2XSOMG01EVM (处理器板)+PROC079 001 J721EXCP01EVM (子卡) CAN FD 功能?

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

    您好!

    [quote userid="634598" url="~/support/processors-group/processors/f/processors-forum/1450027/processor-sdk-j721s2-how-to-config-mcu-can-fd-baudrate-and-it-s-speed ">+ bitTimes.nomRatePrescalar = 0x2U;
    + bitTimes.nomTimeSeg1 = 0x63U;
    + bitTimes.nomTimeSeg2 = 0x16U;
    + bitTimes.nomSynchJumpWidth = 0x16U;
    + bitTimes.dataRatePrescalar = 0x2U;
    + bitTimes.dataTimeSeg1 = 0x15U;
    + bitTimes.dataTimeSeg2 = 0x4U;
    + bitTimes.dataSynchJumpWidth = 0x4U;

    我们根据代码中提供的值  https://e2e.ti.com/support/processors-group/processors/f/processors-forum/920090/faq-tda4vm-can-how-is-bit-rate-calculated-for-can 进行计算

    您似乎想要使用500kbps 的标称比特率和2Mbps 的数据比特率、但您配置的值不符合80MHz 时钟。

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    在应用下面的设置适用于 应用。

      bitTimes.nomRatePrescalar = 0x7U
      bitTimes.nomTimeSeg1    = 0x5U
      bitTimes.nomTimeSeg2    = 0x2U
      bitTimes.nomSynchJumpWidth = 0x1U
      bitTimes.dataRatePrescalar = 0x1U
      bitTimes.dataTimeSeg1   = 0x3U
      bitTimes.dataTimeSeg2   = 0x2U
      bitTimes.dataSynchJumpWidth = 0x1U
    4、回送—外部发送和接收
    我可以在 PCAN-View 上看到 CAN 帧、 但 ms id : 004h 不能更改代码设置"Message ID: 0x100000"
    什么是真正的 CAN 消息 ID?
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [报价用户 id="634598" url="~/support/processors-group/processors/f/processors-forum/1450027/processor-sdk-j721s2-how-to-config-mcu-can-fd-baudrate-and-it-s-speed/5571202 #5571202"]
      bitTimes.nomRatePrescalar = 0x7U
      bitTimes.nomTimeSeg1    = 0x5U
      bitTimes.nomTimeSeg2    = 0x2U
      bitTimes.nomSynchJumpWidth = 0x1U
      bitTimes.dataRatePrescalar = 0x1U
      bitTimes.dataTimeSeg1   = 0x3U
      bitTimes.dataTimeSeg2   = 0x2U
      bitTimes.dataSynchJumpWidth = 0x1U
    [报价]

    对于1 Mbps 和5 Mbps、您在 FAQ 中再次使用相同的值。 但你不是在另一端使用500Kbps 和2 Mbps 吗?

    您需要为 CAN 的两端配置相同的标称和比特率、而目前没有配置。

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    这不是 bps 速率问题。 我需要更改的原因是您的默认应用程序位时间不能应用于 PCAN 查看器,所以在我将 nonminal 和数据  SynchJumpWidth 更改为值1U 后,我可以应用于 PCAN 查看器。  

    从 PCAN Viewer 记录、为什么消息 ID "004h "与应用程序"Message ID: 0x100000"设置不匹配?

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

    您好!

    这不是 bps 速率问题。 我需要更改的原因是您的默认应用程序位时间不能应用于 PCAN 查看器,所以在我将 nonminal 和数据  SynchJumpWidth 更改为值1U 后,我可以应用于 PCAN 查看器。  [报价]

    好的、明白。

    TX 消息 ID 在源代码中仅为0x4、标准位帧的消息 ID 不能超过11位。 PCAN 上接收到的任何内容仅是正确的。

    /*初始化 Tx 缓冲区配置参数*/
    stdFiltelem.sfid2 = 0x0U
    stdFiltelem.sfid1 = 0x4U
    而它们使用如下所示、因此显示的是您的 "消息 ID:0x100000"  
     
    此致
    Tarun Mukesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tarun:

    txMsg.id =(uint32_t)((uint32_t)(0x4U)<< 18u);

    1) 1)关于 CAN 消息 ID 分配的问题  

    标准位帧不能超过11位。

    二进制中的0x4U 是:  

    0000 0000 0000 0000
    0000 0000 0000 0000
    0000 0000 0000 0000
    0000 0000 0000 0100

    二进制0x100000:

    0000 0000 0000 0000
    0000 0000 0000 0000
    0000 0000 0001 0000
    0000 0000 0000 0000

    为什么它只是移位18位长?

    2) 如何接收任何种类的 CAN 消息 ID ?

    modify   txMsg.id =(uint32_t)((uint32_t)(0x3A9U)<< 18U);  预期应用程序可以接收 CAN 消息 ID:0x3A9。  

    执行4。 环回-外部发送和接收

    应用程序将按如下所示停止

    仅接收一条消息、然后停止。

    是否有任何过滤器只能接收 CAN 消息 ID" txMsg.id =(uint32_t)((uint32_t)(0x4U)<< 18U);"?

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

    您好!

    1)

    关于 CAN 消息 ID 分配的问题  

    标准位帧不能超过11位。

    二进制中的0x4U 是:  

    0000 0000 0000 0000
    0000 0000 0000 0000
    0000 0000 0000 0000
    0000 0000 0000 0100

    二进制0x100000:

    0000 0000 0000 0000
    0000 0000 0000 0000
    0000 0000 0001 0000
    0000 0000 0000 0000

    为什么它只是移位18位长?

    [报价]

    硬件中的标准标识符从 id[28:18]开始、因此我们需要将标准标识符移位为18。

    2)

    如何接收任何种类的 CAN 消息 ID?

    modify   txMsg.id =(uint32_t)((uint32_t)(0x3A9U)<< 18U);  预期应用程序可以接收 CAN 消息 ID:0x3A9。  

    [报价]

    是的、预期消息 ID 应该为0x3A9、但它必须通过滤波器。 您需要照顾0x3A9的 sfid1、sfid2、sfec、sft 值才能接收。

    在上述默认示例中、我们的滤波器值如下所示、

        /* Initialize Tx Buffer Config params */
        stdFiltelem.sfid2 = 0x0U;
        stdFiltelem.sfid1 = 0x4U;
        stdFiltelem.sfec  = 0x7U;
        stdFiltelem.sft   = 0x0U;

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    如何禁用 stdFiltelem 过滤器或配置以接收任何类型的 CAN 消息?

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

    您好、

    您可以查看 J721S2的寄存器中的标准滤波器元件、或查看 CAN 协议文档以配置以接收任何类型的 CAN 消息。

     https://software-dl.ti.com/simplelink/esd/simplelink_lowpower_f3_sdk/7.40.00.64/exports/docs/drivers/doxygen/html/struct_m_c_a_n___std_msg_i_d_filter_element.html

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

     CAN 协议文档在哪里?

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

    您好!

    我无法将其与 BOSCH 共享的 CAN 协议文档。 您可以参阅 J721S2的 TRM/Regsites 以了解标准滤波器元件的配置。

    此致

    Tarun Mukesh