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.

[参考译文] TMS320F28379D:故障寄存器0x01和0x02为1056和512

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS320F28379D, DRV8305, C2000WARE, LAUNCHXL-F28379D, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1391035/tms320f28379d-fault-register-0x01-and-0x02-is-1056-and-512

器件型号:TMS320F28379D
主题中讨论的其他器件: DRV8305C2000WARELAUNCHXL-F28379DSysConfig

工具与软件:

您好!

我使用 TMS320F28379D 和 DRV8305、并已将两者集成到定制电路板中。 我将从故障寄存器中获取以下值、并正在读取16位数据:
0x01 = 1056 (B10 =1表示故障、B5=1表示"实时或所有 VDS 过流监控器")

0x02 = 512 (B9 = 1表示"低侧 VDS A 的 MOSFET 过流故障")

1.我已经验证 PVDD 是28伏。 这可能是什么原因造成的? 我如何进行其他调试?

2. 要读取 DRV8305的 SPI、我的 SPI 读取代码是否正确、部分代码如下所示?


#define SPI_CS_PIN 125.
#define SPI_CLK_PIN 124.
#define SPI_MOSI_PIN 122
#define SPI_MISO_PIN 123.

void initSPI (void)

GPIO_setDirectionMode (SPI_CLK_PIN、GPIO_DIR_MODE_OUT);
GPIO_setDirectionMode (SPI_MOSI_PIN、GPIO_DIR_MODE_OUT);
GPIO_setDirectionMode (SPI_MISO_PIN、GPIO_DIR_MODE_IN);
GPIO_setDirectionMode (SPI_CS_PIN、GPIO_DIR_MODE_OUT);

GPIO_setPinConfig (GPIO_124_GPIO124);// SCLK
GPIO_setPinConfig (GPIO_122_GPIO122);// MOSI
GPIO_setPinConfig (GPIO_123_GPIO123);// MISO
GPIO_setPinConfig (GPIO_125_GPIO125);// CS

GPIO_writePin (SPI_CS_PIN、1);//将 CS 置为无效
}

uint16_t spiTransfer (uint16_t DATA)

uint16_t receivedData = 0;
内部 I;

GPIO_writePin (SPI_CS_PIN、0);//将 CS 置为有效
DELAY_US (1);//确保在 nSCS 转换时 SCLK 为低电平(最小50ns、裕度为1us)

对于(I = 0;I < 16;I++)

//写入数据位
GPIO_writePin (SPI_MOSI_PIN、(DATA & 0x8000)? 1:0);
数据<<= 1;

//时钟脉冲
GPIO_writePin (SPI_CLK_PIN、1);//上升沿
DELAY_US (0.1);//小延迟(100ns、为 tCLKH 提供裕度)
receivedData <<= 1;
receivedData |= GPIO_readPin (SPI_MISO_PIN);//在下降沿捕捉
GPIO_writePin (SPI_CLK_PIN、0);//下降沿
DELAY_US (0.1);//小延迟(100ns、为 tCLKL 提供裕度)
}

GPIO_writePin (SPI_CS_PIN、1);//将 CS 置为无效
DELAY_US (1);//确保 nSCS 在帧之间保持高电平的时间至少为500ns (提供超过最小400ns 的裕度)

return receivedData;
}

uint16_t readDRV8305Register (uint16_t 地址)

uint16_t command = 0x8000 |(地址<< 11);//设置 R/W 位以读取和移位地址
return spiTransfer (command);
}

空 checkFaultRegisters (空)

IF (readFaultRegisters =1)

faultStatus1 = readDRV8305Register (0x01);//警告和看门狗复位
faultStatus2 = readDRV8305Register (0x02);//过压 VDS
faultStatus3 = readDRV8305Register (0x03);// IC Fault
faultStatus4 = readDRV8305Register (0x04);// VGS Fault

readFaultRegisters = 0;//复位标志
}
}



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

    您好!

    几个问题:

    1. 总之、以上内容适用于 F2837xD 器件(控制器件)与 DRV8305 (外设)的通信?
    2. 上述代码是否适用于 F2837xD? 如果可以、我能问您为什么要写入 GPIO 而不是使用 SPI 模块/驱动器吗?
    3. 对于 F2837xD、我们在 C2000Ware 中有几个 SPI 通信的软件示例(C:\ti\c2000\C2000Ware_5_02_00_00\driverlib\f2837xd\examples\cpu1\spi 和  C:\ti\c2000\C2000Ware_5_02_00_00\device_support\f2837xd\examples\cpu1)是否已提及这些示例?

    如果我指的是错误的器件、或者我的理解有误、请告知我。

    此致、

    Allison

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

    尊敬的

    我们的回应:

    1.  

    [报价 userid="568270" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1391035/tms320f28379d-fault-register-0x01-and-0x02-is-1056-and-512/5320852 #5320852"]
    • 总之、以上内容适用于 F2837xD 器件(控制器件)与 DRV8305 (外设)的通信?
    [报价]

    2.  

    [报价 userid="568270" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1391035/tms320f28379d-fault-register-0x01-and-0x02-is-1056-and-512/5320852 #5320852"]
    • 上述代码是否适用于 F2837xD? 如果可以、我能问您为什么要写入 GPIO 而不是使用 SPI 模块/驱动器吗?
    [报价]

    您能否澄清一下、我们的理解是否正确、在 syscfg UI 中的"SPI"选项卡下的 Pinmux (外设和引脚配置)中、我只看到列出了某些 GPIO 选项、这是否意味着我们只能将这些 GPIO 引脚用于 SPI 通信?

    我们拥有定制电路板、其中 TMS320F28379D、DRV8305和 DRV8305的 SPI 引脚连接到  TMS320F28379D 的不同 GPIO (与 LAUNCHXL-F28379D 无关)、请查看我们的 SPI 原理图的以下 ss。  

    由于 syscfg 中显示的 GPIO 引脚与我的 SPI 引脚不匹配、我不确定事情是否可以正常工作、因此我不是直接使用 SPI 驱动程序、而是编写上述代码从 DRV8305获取 SPI 数据。


    问题:

    如果您认为代码正确、而我们读取的值正确、我们 将得到

    0x01 = 1056 (B10 =1表示故障、B5=1表示"实时或所有 VDS 过流监控器")

    0x02 = 512 (B9 = 1表示"低侧 VDS A 的 MOSFET 过流故障")
    您能帮助我们解决这个问题吗?

     

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

    您好!

    SysConfig pinmux 将反映器件可用的 GPIO 选项。 在 SPI SysConfig 选项卡中选择 GPIO 将为 SPI 外设配置这些 GPIO。 如果这样做、则需要使用 SPI 外设、而不是对 GPIO 引脚进行写入:

    • 如果 F28379D 是控制器件、为了启动进出 F28379D 的数据传输和接收、需要将数据写入 SPITXBUF 以将其传输出去(同时、您将接收发送到 F28379D 的数据进入 RXBUF -您从中读取数据)。 如前所述、我们有 DriverLib 示例展示了这一点。

    似乎您正在尝试使用 GPIO 122-125、对吗?

    如果要在 SysConfig 中查看这些内容、需要确保.syscfg 文件特定于您使用的器件。 假设您使用的是337ZWT、如果您选择此引脚并查看 SPI 的引脚多路复用、则选项应该在那里

    在调试方面、使用 SPI 模块是一种优秀实践、更易于理解。 此外、您是否已经对4个 SPI 引脚进行了仔细检查、以验证是否看到预期行为?  如果出现某些硬件/软件问题、这是帮助提示的最简单方法。

    此致、

    Allison

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

    您好、Allison、  

    当我们尝试更改器件封装并将 *** 设置为122,123,124和125并保存时、会显示 syscfg 已过时、然而、当我们再次打开 syscfg 时、SPI 中会有一个交叉标记、封装也会再次更改为不同的封装。 如何解决此问题?

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

    您好!

    当您在 SPI 中说"Cross mark"时、您能否发送有关 syscfg 中出现什么内容的快照?  

    当您右键单击 syscfg 文件并在通用文本编辑器中打开该文件时、标题中有哪些信息?

    此致、

    Allison

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

    您好、Allison、  
    在注释部分的文本编辑器中、我可以看到正确的软件包。

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "F2837xD" --package "F2837xD_337ZWT" --part "F2837xD_337ZWT" --context "CPU1" --product "C2000WARE@5.02.00.00"
     * @versions {"tool":"1.20.0+3587"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const epwm  = scripting.addModule("/driverlib/epwm.js", {}, false);
    const epwm1 = epwm.addInstance();
    const epwm2 = epwm.addInstance();
    const epwm3 = epwm.addInstance();
    const epwm4 = epwm.addInstance();
    const epwm5 = epwm.addInstance();
    const epwm6 = epwm.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    epwm1.$name                  = "myEPWM1";
    epwm1.epwm.$assign           = "EPWM1";
    epwm1.epwm.epwm_aPin.$assign = "GPIO0";
    epwm1.epwm.epwm_bPin.$assign = "GPIO1";
    
    epwm2.$name                  = "myEPWM2";
    epwm2.epwm.$assign           = "EPWM2";
    epwm2.epwm.epwm_aPin.$assign = "GPIO2";
    epwm2.epwm.epwm_bPin.$assign = "GPIO3";
    
    epwm3.$name                  = "myEPWM3";
    epwm3.epwm.$assign           = "EPWM3";
    epwm3.epwm.epwm_aPin.$assign = "GPIO4";
    epwm3.epwm.epwm_bPin.$assign = "GPIO5";
    
    epwm4.$name                  = "myEPWM4";
    epwm4.epwm.$assign           = "EPWM4";
    epwm4.epwm.epwm_aPin.$assign = "GPIO6";
    epwm4.epwm.epwm_bPin.$assign = "GPIO7";
    
    epwm5.$name                  = "myEPWM5";
    epwm5.epwm.$assign           = "EPWM5";
    epwm5.epwm.epwm_aPin.$assign = "GPIO8";
    epwm5.epwm.epwm_bPin.$assign = "GPIO9";
    
    epwm6.$name                  = "myEPWM6";
    epwm6.epwm.$assign           = "EPWM6";
    epwm6.epwm.epwm_aPin.$assign = "GPIO10";
    epwm6.epwm.epwm_bPin.$assign = "GPIO11";
    


    更新了:我在.cproject 中进行了修改、提及了正确的软件包、将其设置为只读、然后在新工作区中打开该项目、现在 syscfg 可正确显示软件包。

    我现在将结束该主题帖。

    您是否也可以查看我遇到的这个问题:
    C28xx_CPU1:错误:(错误-1135 @ 0x8B25)- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

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

    很高兴听到您解决了这个问题! 我看到 Luke 正在支持您的其他主题。 我将查看是否需要任何帮助

    此致、

    Allison