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.

[参考译文] TCAN4550-Q1:CAN 数据的商业 t 传输

Guru**** 2468460 points
Other Parts Discussed in Thread: TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1467816/tcan4550-q1-busrt-transfer-of-can-data

器件型号:TCAN4550-Q1
主题中讨论的其他器件:TCAN4550

工具与软件:

尊敬的团队:

我们将 TCAN4550与 iMX8DXL 处理器配合使用。 正如《软件用户指南》第5.2节中关于数据突发传输的规定、我们想知道驱动程序中需要配置的确切位置。 您能否提供您可能拥有的任何示例代码或补丁?

此致、

Ankita

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

    Ankita、您好!

    TCAN4550 BoosterPack 模块包含可与 TI MPS430 MCU 搭配使用的演示代码。 此演示代码中的 SPI 驱动程序非常基本、应该是在系统中实现突发写入和读取的良好参考。可从下面链接的 BoosterPack 商店页面下载该演示代码:
    https://www.ti.com/tool/BOOSTXL-CANFD-LIN #order-start-development 

    可以在工程的 TCAN4x5x 文件夹中找到 SPI 头文件和.c 文件。 需要更新.c 实现、以便对  iMX8DXL 上的 SPI 硬件地址使用正确的语法。 如果您对此处演示代码中显示的概念有任何疑问、或者这些问题与 TCAN4550文档中所述信息的关系有任何疑问、敬请告知。  

    此致、  
    Eric Schott

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

    Eric、您好!

    感谢您的答复。 我们将演示您已共享的演示代码、同时我们想知道、在《软件用户指南》的第5.2节中、它的内容曾提到过、"TCAN45xx SPI 报头有一个字参数、说明将传输多少个数据字(每个4字节)。" 所以是否可以在默认的5.15 tcan4x5x 驱动程序代码中执行此操作、如果是这样、请告知我们、或者您是否可以提供任何补丁、这将非常好。

    此致、

    Ankita

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

    Eric、您好!

    除了前面的问题、我们还有一个问题:当我们使用 iMX8DXL 双核处理器时、是否有方法或示例可以让与 CAN 相关的任务(如 SPI 传输)在单个内核中工作?

    此致、

    Ankita

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

    Ankita、您好!

    感谢您的耐心等待。

    TCAN4550的演示代码仅包括32位传输的基本读取和写入方法。 需要定义一个新函数、以便在单个事务中发送或接收多个字。 我们可以在这个新方法中使用现有的开始、写入/读取和结束函数来简化操作。 下面是一个向 TCAN4550写入多个字的函数示例:

    /*
     * @brief Dynimc multi-word write
     *
     * @param address A 16-bit address of the destination start register
     * @param data A pointer to array containing data of 32-bit words to write to the destination and subsiquent registers
     * @param words The number of words to write at once, values 0-255
     */
    void
    AHB_WRITE_N_WORDS(uint16_t address, uint32_t * data, uint8_t words)
    {
        uint8_t i = 0;
        AHB_WRITE_BURST_START(address, words);
        while(i < words)
        {
            AHB_WRITE_BURST_WRITE(*(data + i++));
        }
        AHB_WRITE_BURST_END();
    }

    突发读取的相应方法与该写入示例看起来非常相似。 但是、返回读取数据的方式将取决于软件设计人员更喜欢按引用还是按值传递数据。 如果有具体的问题可以解决、请告诉我。

    我不熟悉这里提到的 MCU、而处理多线程处理器有点超出了我的专业知识。 我建议联系该器件的支持团队、以在隔离与单个内核的通信方面获得帮助。  

    此致、  
    Eric Schott