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.

[参考译文] TPS65313-Q1:用于 SPI 通信的 TPS65313 参考代码

Guru**** 2560200 points
Other Parts Discussed in Thread: TPS65381A-Q1, TIDA-01527, USB2ANY

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1557273/tps65313-q1-tps65313-reference-code-for-spi-communication

器件型号:TPS65313-Q1
Thread 中讨论的其他器件:TPS65381A-Q1TIDA-01527USB2ANY

工具/软件:

您好 TI 专家
我目前正在开发一个使用 TPS65313 为汽车应用供电的系统。 我们正面临某些问题的 PMIC ,所以我想读取 PMIC 寄存器使用 SPI . 您是否具备与 TPS65313 连接的 C2000 控制器的任何参考代码。 如果 C2000 控制器不提供该功能、则任何参考代码都会提供该功能。
提前感谢您
Ashwin Bhaskar A.

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

    尊敬的 Ashwin:

    我不知道采用 C2000 的 TSP65313 的参考代码、但是有一个采用 C2000 的 TPS65381A-Q1 参考设计:  关于 TPS65313-Q1:TPS65313 参考设计 

    对于 TPS65313 -Q1 代码、您需要使用器件数据表中的 SPI 信息。  

    此致、

    Katie

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

    尊敬的 Katie:
    感谢您的答复
    我尝试创建自己的 SPI 库来连接 PMIC 与 F28P65x、但无法一致地读取值、我希望获得参考代码来验证软件端。 如果在 C2000 中不可用、任何连接 TPS65313 的微控制器库都可以。 如果没有可用的引用、您可以关闭该主题。


    此致
    Ashwin Bhaskar  

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

    尊敬的 Ashwin:

    很遗憾、我不知道示例代码。 我分享的参考设计有一些适用于另一个 PMIC 器件型号的示例代码 — 因为许多 PMIC 共享通用的 SPI 格式、这可能仍然是您的参考。  https://dr-download.ti.com/secure/software-development/code-example-or-demo/MD-YIeomGUBt5/01.00.00.00/tidcel0.zip 

    此致、

    Katie

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

    尊敬的 Katie:

    我无法在此参考设计中找到任何基于 SPI 的 PMIC 的参考示例, PMIC 也未在原理图中看到。 您能不能告诉我此参考设计中 PMIC 相关代码的具体位置。

    即使在 HAL 中,SPI 也没有初始化,所以我假设它没有在任何地方使用,我在这里缺少什么?

    此致

    Ashwin Bhaskar A.

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

    尊敬的 Ashwin:  

    道歉、我之前提到的帖子提到了 TIDA-01507、但似乎该链接现在会重定向到更新的参考设计 TIDA-01527、该设计不包含此内容。 很遗憾、我不知道示例代码、您必须遵循数据表。  

    此致、

    Katie

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

    尊敬的 Katie:  

    感谢您的答复,

    我 根据数据表建立了 SPI 与 PMIC 连接的初步代码库,但我无法读取寄存器或对其进行可靠的配置。 如果我与你共享代码库,你可以看看它,并验证它,如果可能. 我很难按时间,这是一个关键的组件,我们去现场之前,因为我们面临 PMIC 相关的问题, PMIC 在电流尖峰期间关闭,尽管它在其额定限值内.  

    提前感谢您  

    Ashwin Bhaskar A.

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

    尊敬的 Ashwin:

    如果您可以发送 SPI 通信的示波器截图(所有 4 个 SPI 通道带有标签并且足够清晰,我们可以看到单独的时钟周期)、则调试速度会更快。 您是否已确保 PMIC 的硬件连接以及 MCU 与 PMIC 之间的硬件连接正确? 您是否可以通过其他方式测试与 PMIC 的通信(例如外部调试器或类似工具)?

    此致、

    Niko

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

    您好、Niko、

    我们有一个带有 PMIC 和控制器的定制电路板和电线似乎是正确的,我不知道您是什么意思的外部调试器的 PMIC ,如果您的意思是如果我有办法调试系统那么是的,我有一个 xds110 模块的 f28p65x,我试图读取 rev id 和其中一个配置寄存器,其默认值是已知的。 向您发送示波器捕获是有点困难,因为我目前没有物理访问板,所有我有远程访问系统连接到板. 我只是想澄清两件事,根据我的理解, SPI 模式是 SPI 模式 1,并且我们不能有连续的 SPI 操作没有 NCS 引脚上升到高值 788ns。 我发布了一段 SPI 事务逻辑,如果我对此的任何理解有缺陷,请告诉我。

    uint16_t spi_transmit_seq_function(uint16_t tx_data) {
        pmic_cs_low();
    
        SPI_writeDataBlockingNonFIFO(PMIC_SPI_BASE, tx_data);
        
        uint16_t rx_data = SPI_readDataBlockingNonFIFO(PMIC_SPI_BASE);
        
        pmic_cs_high();
        
        DEVICE_DELAY_US(1);
        
        return rx_data;
    }
    
    tps_status_t tps_read_register(uint8_t read_cmd_code, uint8_t* data)
    {
        if (platform_spi_transfer == NULL) {
            return TPS_ERROR_SPI_FAIL;
        }
        if (data == NULL) {
            return TPS_ERROR_NULL_POINTER;
        }
    
        uint16_t tx_frame = (uint16_t)read_cmd_code << 8;
        uint16_t rx_frame = spi_transmit_seq_function(tx_frame);
    
        *data = (uint8_t)(rx_frame & 0x00FF);
    
        uint8_t status_byte = (uint8_t)((rx_frame >> 8) & 0xFF);
        if (status_byte & 0x01) { 
            return TPS_ERROR_SPI_FAIL;
        }
    
        return TPS_OK;
    }

    此致

    Ashwin

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

    尊敬的 Ashwin:

    我指的是 USB2ANY 等一些器件、它们可用于与 PMIC 通信(绕过板载 MCU)、只是为了让您能够与一些现有解决方案进行通信。  

    SPI 模式为 1、因此在下降沿对接收到的数据进行采样、并在上升沿发送数据。 SCK 待机状态为低电平。 nCS 引脚必须在两次运行之间保持高电平至少 788ns。  

    很抱歉、由于我不是软件工程师、我真的不明白您的代码是如何工作的。 是否确定您没有尝试在传输中写入 SPI CRC、因为 SPI_CRC 默认情况下处于禁用状态。  

    此致、

    Niko

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

    您好、Niko、

    很抱歉、我在休假时回复太晚了、

    我指的是 USB2ANY 等器件、它可用于与 PMIC 通信(绕过板载 MCU)、只是为了让您能够与某个现有解决方案进行通信。

    我无法通过 USB 访问 PMIC、因为我们仅使用 IC、而不使用 PMIC 的 EVK。 我假设您想针对 TPS65313 通过 TI GUI 测试 PMIC、但这是不可能的、因为我没有 EVK 模块、并且我相信该 GUI 无法在 TI 网站上下载。
    感谢您确认 SPI 模式、我使用 16 位 SPI 传输、所以我不使用 24 位传输的 CRC。

    此致、

    Ashwin

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

    尊敬的 Ashwin:

    我知道您提到您没有实际访问电路板的权限、但您是否知道有人可以帮助您获取捕获? 我们确实需要查看 SPI 线路上发生的情况、而不仅仅是代码、从而帮助进一步进行故障排除。  

    -凯蒂

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

    尊敬的 Katie:

    获取捕获结果可能需要一些时间。 收到捕获后、我将在此线程中进行更新

    此致

    Ashwin

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

    尊敬的 Ashwin:

    感谢您、我们正在等待捕获。

    此致、

    Niko

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

    你好 Niko 和 Katie ,

    我收到了在逻辑分析仪上捕获的 SPI 通信数据。 控制器正在发送命令 0x1、用于读取 PMIC 的 DEV REV ID、下面连接了响应以及 CLK 和 nCS 引脚。 如果您需要任何其他信息、请告诉我。

    SPI 读取的值是 0x88、它是较低的 8 位、但根据数据表、该值必须是 0x21、我相信。 因此、我假设这里的 SPI 通信工作方式存在缺陷。 请让我知道您对此的推论。
    此致
    Ashwin

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

    你好、Niko 和 Katie、
    我想问一个后续问题的 PMIC ,目前我们面临的问题,当我们的系统要求高电流 PMIC 是完全复位和控制器是关闭. 是否有办法在过载事件期间禁用升压和降压转换器的 PMIC 关断功能、而不仅仅是产生中断? 。 我知道这在严重短路事件中不可能发生,但我的控制器及其外设在某些操作期间需要突然爆发电流,并且 PMIC 不允许这种额外的电源要求。
    根据我对 PMIC 数据表的解释,所有开关模式调节器都在过载、过流状态下被禁用。 是否有任何方法 PMIC 不禁用这些稳压器,而只是生成中断.

    此致

    Ashwin

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

    尊敬的 Ashwin:

    感谢您提供波形。 对我来说、CS/ENABLE 似乎会在最后一个时钟下降沿之后尽快变为高电平、但在这里、它可能会同时变为高电平。 此外、状态位(SDO 通道的前 8 位)显示一些错误。

    我必须了解禁用这些安全功能的情况、明天会回复您。

    此致、

    Niko

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

    尊敬的 Ashwin:

    如需配置发生 UVOV 时的状态转换、请参阅数据表表 11-1、因为它列出了影响器件行为的寄存器。

    此致、

    Niko

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

    您好、Niko、  

    感谢您的答复  

    我将看看表,看看它是否可能禁用任何的保护功能,但为了做到这一点,SPI 通信需要是可靠的,从你之前的答复,我无法在代码中继续前进,因为我无法理解为什么波形是这样的,我正在做一个简单的读取命令操作,它不能按预期发挥作用. 你正在谈论的延迟已经是代码的一部分,它仍然没有发送似乎有任何效果. 我假设 SPI 通信在我的原始命令之后需要一个虚拟数据命令,它会发送实际响应。 即使在那时,通信似乎有缺陷。


    此致
    Ashwin  

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

    尊敬的 Ashwin:

    您是否在其他工程中使用过相同的 SPI 代码、并测试了 SPI 实现是否正常工作? 我想排除 SPI 处理实现错误的可能性、在这种情况下不会出现 PMIC 问题。  

    是否可以在启动后捕获两个最初的 SPI 操作? 我更希望将其作为 Saleae/Logic 软件的原始数据、因为您似乎也在使用这些数据。  

    此致、

    Niko  

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

    您好、Niko、

    很抱歉延迟回复、

    我正在努力获取这些 SPI 捕获、但可能需要一些时间、因为探测时意外短路、我们之前使用的定制电路板不再起作用。 获得 SPI 捕获结果后、我将在此处发布一个有趣的观察结果、即电路板发生故障之前、我尝试将 SPI 模式从模式 1 更改为模式 0、我能够正确读取修订 ID 0x021、还可以根据数据表中提到的初始值正确读取一些其他 RD 寄存器。 我不确定这是否是巧合,因为根据您确认的内容和我在数据表上阅读的内容,SPI 模式肯定是模式 1。 你能解释为什么模式 0 似乎现在工作?
     

    您是否在其他项目中使用过相同的 SPI 代码并测试了 SPI 实现是否正常工作? 我想排除 SPI 处理实现错误的可能性、在这种情况下不会出现 PMIC 问题

    我在环回模式下测试了代码,似乎工作正常,我为 DRV8343S 做了类似的 SPI 驱动程序,这也是基于 SPI 的,我遵循类似的程序来使它。 我不认为它现在是一个实施问题,但我可以进行更多的测试来确定。

    正如我说过的、可能需要一些时间才能捕获这些数据。 我会尽快发布。

    此致

    Ashwin

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

    尊敬的 Ashwin:

    感谢您提供的信息。 我不确定为什么选择 SPI 模式 0 似乎有效、但我在使用 TPS65313 EVM 并与 GUI 进行通信时获取了示例捕获。 请参阅下图、了解使用此设置时的外观。 我已经读取了寄存器 0x1、读取值为 0x21。 现在查看您的传输数据、似乎出现了问题、因为您发送的命令不是 0x1。 PMIC 正在时钟的下降沿对此命令进行采样、但在您的事务中、似乎代码是以预期在上升沿进行采样的方式实现的。 时钟的上升沿位于 MOSI 位的中间。 另外、我不知道如何得到 0x88 作为读取值、因为在我看来它应该是 0x10、因为 MCU 采样应该发生在时钟的下降沿。  

    整个事务

    放大事务的前半部分(显示 MOSI 中的 CMD)

    放大事务的后一半(显示 MISO 上的读取值)

    此致、

    Niko

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

    您好、Niko、

    这些捕获是伟大的帮助. 非常感谢  
    给我一些时间来看看它的司机,看看我是否错过了什么。 看着这些捕获我知道该期待什么,所以我会相应地尝试. 我会尽快回到你,我有一个答案.

    此致

    Ashwin

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

    尊敬的 Ashwin:

    好的、我正在等待您的结果。

    此致、

    Niko