TI中文支持网
TI专业的中文技术问题搜集分享网站

DRV8860没有输出的问题(很急)

在公司的项目中,我们使用了TI的DRV8860驱动芯片。

我们软件的设计思路是:将芯片的ENABLE一直拉高。在发送数据前先将LATCH脚和CLK脚拉低。接着就是利用DIN脚进行8位数据的串行传输(CLK上升把数据clock到寄存器)。再把LATCH脚拉高。

我们在实验时,全部传输1(即0xff),理想输出是output输出全部低电平。可是不管我们怎么去传输,output始终没反应。也就是高阻状态。

另外,fault脚,是不是在输出有错误时,会变低

#define _SCL_H         GPIO_SetBits(GPIOC, GPIO_Pin_10)    ///  CLK
#define _SCL_L         GPIO_ResetBits(GPIOC, GPIO_Pin_10)    ///

#define _DIN_H         GPIO_SetBits(GPIOC, GPIO_Pin_11)    /// DIN
#define _DIN_L         GPIO_ResetBits(GPIOC, GPIO_Pin_11)    ///

#define _EN_H             GPIO_SetBits(GPIOC, GPIO_Pin_8)/// ENABLE
#define _EN_L             GPIO_ResetBits(GPIOC, GPIO_Pin_8)///

#define _LATCH_H         GPIO_SetBits(GPIOC, GPIO_Pin_9)    /// LATCH
#define _LATCH_L         GPIO_ResetBits(GPIOC, GPIO_Pin_9)     ///

void Gpio_DO_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9 |GPIO_Pin_10 | GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_Out_PP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    _EN_H;
}      

void Send_DATA8(unsigned char Data){
 unsigned char i;
 _SCL_L;
 for (i = 8; i != 0; i–) {
  (Data & 0x80) ? _DIN_H : _DIN_L;
  Delay(1);
  _SCL_H;
  Data = (Data << 1);
  Delay(1);
  if (i > 1)
   _SCL_L;  // left CLK HIGH at after the last data transfered     
 }
}

void Write_data(unsigned char Data)
{
 unsigned char data;
 data = Data;
 _LATCH_H;
 Delay(1);
 _LATCH_L;
 _SCL_L;
 Delay(2);
 Send_DATA8(data);                          
 Delay(1);
 _LATCH_H;
// Delay(1);
}

另附原理图

Wilson Zuo:

已经看过TI的相关EVM和参考设计了吧: http://www.ti.com/product/DRV8860/toolssoftware 里面有很多相关的SPI范例和波形。 这里先问一个事情,你的SPI通信速率是多少?

DRV8860有输入抗噪滤波,所以支持到的最大通信速率在300k左右。如果是上M的通信速率,则会被当做噪声滤除。

cd cd:

回复 Wilson Zuo:

请问,通信速率最小是多少。我们现在大概400K左右

cd cd:

回复 Wilson Zuo:

控制寄存器一定要写吗?我们现在只要output输出即可

Wilson Zuo:

回复 cd cd:

控制寄存器如果之前没有改写,应该是可以直接按照100%输出的。

通信速率还是先多降下来一些(200k)测试看看问题是否在这。CLK和DATA都最好接近方波占空比

cd cd:

回复 Wilson Zuo:

我们已经测试了,将通信速率降到了100K、200K、250K都行不通。另外,我们把fault管脚接了一个发光二极管,在低电平时导通。我们发现二极管总是导通的,即fault总是低电平。除非把enable管脚拉低,禁止输出,才不会导通。您能在帮我们分析下吗,

Wilson Zuo:

回复 cd cd:

如果是这样应该问题不是出在SPI速率上。

DRV8860有输出开路检测功能,在输出关断的情况下会从外部拉入30uA的电流用于开路检测。所以不把8路负载全部接上,nFAULT会有输出。

我觉得现在第一步要确定DRV8860是否已经可以控制负载。可以接上继电器等大电流负载看看是不是可以正常开通和关断。

能否贴出一帧通信波形和输出波形?

cd cd:

回复 Wilson Zuo:

问题ok了,谢谢你的帮助。我们把输出脚接有大电容,所以使得在上电后,会有大电流,过流保护

bin xu4:

回复 Wilson Zuo:

我的开路标志位OL位一直不能清零,这是什么原因呢?(对应的通道已经关闭,OCP位测试是正常的,通道上接继电器,24V的电源),急待解决!

赞(0)
未经允许不得转载:TI中文支持网 » DRV8860没有输出的问题(很急)
分享到: 更多 (0)