drv8711 读寄存值全1
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通信问题,已解决!
我也在学习这科芯片,能共享一下资料么?