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

DRV8705S-Q1EVM: Drv8705s-q1 模拟spi 读写问题

Part Number:DRV8705S-Q1EVM

HI Cherry 

     我已经测试过上个问题,现在我有一个疑问,当我模拟spi 时,我的读写数据是不是要在同一个周期内完成?具体模拟spi的测试代码如下所示。

而且当前通过回读取drv8705 的寄存器(0x00,0x01,0x2),无任何错误,但是接电机的两端依旧是高电平。现在无任何错误,接电机的两端依旧都是高电平,请问现在我需要如何操作,解决该问题?

模拟spi 的测试代码,如下所示:

通过模拟spi 读取drv8705 寄存器的测试代码:

uint8 SPI_Simulate_DataHandle(uint16 u16outputdata, uint16 *pinputdata)
{
uint8 u8_rtn_val;
uint8 u8writedata;
uint8 u8readdata;
uint16 u16readdata;
u8_rtn_val = 0;
u8writedata = 0;
u8readdata = 0;
u16readdata = 0;
if(NULL_PTR != pinputdata)
{
#if 1
/* set sclk low */
SPI_Simulate_SetSCLK(0);//PTP &= (~0x40);
SPI_Simulate_Delayus(SPI_SIMULATE_DELAY_TIME); /* delay 1.5us */
/* set cs high */
SPI_Simulate_SetCS(1);//PTP |= 0x20;
SPI_Simulate_Delayus(SPI_SIMULATE_DELAY_TIME); /* delay 1.5us */
/* set cs low */
SPI_Simulate_SetCS(0);//PTP &= ~(0x20);
for(uint8 i=0; i<16; i++)
{
/* set sclk high */
SPI_Simulate_SetSCLK(1);//PTP |= (0x40);
u8writedata = (u16outputdata >> (15 – i)) & 0x01;
if(0x01 == u8writedata)
{
PTP_PTP0 = 1;
}
else
{
PTP_PTP0 = 0;
}
//SPI_Simulate_Delayus(2); /* delay 1.5us */
//u8writedata = ((uint8)(u16outputdata << (15 – i))) & 0x01;
//SPI_Simulate_OWHandle(u8writedata);//PTP |= u8writedata;
SPI_Simulate_Delayus(SPI_SIMULATE_DELAY_TIME); /* delay 1.5us */
/* set sclk low */
SPI_Simulate_SetSCLK(0);//PTP |= (~0x40);
SPI_Simulate_ORHandle(&u8readdata);//u16readdata |= PTT >> 7;
u16readdata |= ((uint16)u8readdata) << i;
SPI_Simulate_Delayus(SPI_SIMULATE_DELAY_TIME); /* delay 1.5us */
}
*pinputdata = u16readdata;
/* set cs high */
SPI_Simulate_SetCS(1);//PTP |= 0x20;
#else
SPI_Simulate_WriteData(u16outputdata);
SPI_Simulate_Delayus(SPI_SIMULATE_DELAY_TIME); /* delay 1.5us */
SPI_Simulate_ReadData(pinputdata);
#endif
}
else
{
/* input parameter is null */
u8_rtn_val = 1;
}
return u8_rtn_val;
}

通过示波器回读到的drv8705 寄存器的0x00,0x01,0x02 的值如下:(从示波器上看,无错误)

in1/EN ,电机接线端A,B,如下所示:

Cherry Zhou:

您好,收到了哈,帮您升级到英文论坛寻求帮助,有新的反馈会尽快给到您。谢谢!

,

Cherry Zhou:

您好,您的问题是在 IN1/EN 输入时栅极驱动器不切换。 如果我们理解无误,那么读数 0x00 、 0x01 、 0x02 未确认任何故障。 不过以下有几个点您需要注意下:

DRVOFF 引脚高电平
nSLEEP 引脚为低电平
EN_DRV bit为 0
最好确认 BRG_MODE 配置

再检查下 DVDD 和 PVDD 电源电压以及外部电路 /FET 连接。 您可以参考 TI 评估板原理图。

,

junping zhai:

hi Cherry 

      我的配置为:

       DRVOFF 引脚高电平 (个人从芯片手册P5 Pin Functions 上理解,高电平打开高边侧和低边侧的输出);nSLEEP 引脚为高电平(芯片手册P36, 7.4.3 可知nSLEEP 为高电平进入工作状态);寄存器IC_CTRL Register 的EN_DRV位为1,使能;寄存器BRG_CTRL Register的BRG_MODE 位为0x01 ,选择PH/EN H 桥控制;

以上寄存器的相关位,通过回读的方式已经确认,EN_DRV 位为1,BRG_MODE 位为0x01,使用示波器确认 Pin 脚,DRVOFF 为高电平,nSLEEP  为高电平。

请问以上的pin脚和寄存器为什么电平和值时,才能正常驱动电机? cherry ,再次麻烦您了。

,

Cherry Zhou:

junping zhai 说:DRVOFF 引脚高电平

您好,如果该引脚是高电平的话,电机不会旋转。 请参阅表 7-9:

,

junping zhai:

hi cherry 

非常谢谢您的支持,现在我的问题彻底解决了,通过示波器查看波形,已经正常,这段时间非常谢谢您的支持。

赞(0)
未经允许不得转载:TI中文支持网 » DRV8705S-Q1EVM: Drv8705s-q1 模拟spi 读写问题
分享到: 更多 (0)