drv8711 读寄存值全1

Other Parts Discussed in Thread: DRV8711, DRV8323

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通信问题,已解决!!

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

  • 麻烦问一下您是怎么解决的这个问题?我遇到了相似的问题,drv8323芯片用spi进行寄存器的读写,读到的寄存器总是初始默认值,写入之后没有效果,依然是默认值