微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > drv8711 读寄存值全1

drv8711 读寄存值全1

时间:10-02 整理:3721RD 点击:

TI工程师,您好

      drv8711 SPI读取任意寄存器,读取到的值均为0xFFFF,并且寄存器值无法写入。

      请教一下,确保SPI通信没有问题,可能存在什么问题?

我觉得SPI通信有问题的可能性最大。

 u16 SPI1_ReadWriteByte(u16 TxData)
{   
 u8 retry=0; 
  CS_A_4 = 1;    //片选
 delay_ms(1);
 while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET)    //等待发送区为空
 {  
  retry++;  
  if(retry>200) return 0;   
 }      
 retry=0;
 SPI_I2S_SendData(SPI1, TxData);           
 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)   //等待接收完
 {  
  retry++;  
  if(retry>200) return 0; 
 }   
 CS_A_4 = 0; 
 delay_ms(1);
 return SPI_I2S_ReceiveData(SPI1);    
}

 SPI1_ReadWriteByte(0x0031);      //CTRL    
 SPI1_ReadWriteByte(0x13FF);      //TORQUE
 SPI1_ReadWriteByte(0x200E);       //OFF
 SPI1_ReadWriteByte(0x3032);       //BLANK
 SPI1_ReadWriteByte(0x4306);      //DECAY
 SPI1_ReadWriteByte(0x5040);       //STALL
 SPI1_ReadWriteByte(0x605E);       //DRIVE

 len = SPI1_ReadWriteByte(0x8000);      //CTRL 
 len = SPI1_ReadWriteByte(0x9000);      //TORQUE 
 len = SPI1_ReadWriteByte(0xA000);      //OFF 
 len = SPI1_ReadWriteByte(0xB000);      //BLANK 
 len = SPI1_ReadWriteByte(0xC000);      //DECAY 
 len = SPI1_ReadWriteByte(0xD000);      //STALL 
 len = SPI1_ReadWriteByte(0xE000);      //DRIVE

TI工程师你好,这是我的读取函数,我在做读取SPI flash芯片操作程序正常的。

请问,在读写drv8711的时候,我依据手册上将CS脚拉高,读取完成后拉低,这样的操作正确吗?

该芯片在读取和写入前需要发送那些指令?手册中只提到了指令格式

感谢你的解答!!

TI工程师你好,请教几个问题

1、在读取和发送的时候,我依据手册中将片选CS拉高,读取或写入后再拉低,这样做法正确吗?

2、在读取和发送操作drv8711的时候,需要先发送什么指令(比如唤醒指令)吗?或者需要做那些操作呢?手册中并未提到。

是SPI通信问题,已解决!

我也在学习这科芯片,能共享一下资料么?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top