主题中讨论的其他器件: DRV8305、 C2000WARE、 LAUNCHXL-F28379D、 SysConfig
工具与软件:
您好!
我使用 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;//复位标志
}
}



