TI工程师,您好
drv8711 SPI读取任意寄存器,读取到的值均为0xFFFF,并且寄存器值无法写入。
请教一下,确保SPI通信没有问题,可能存在什么问题?
chuanjing liu:
回复 Alvin Zheng:
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脚拉高,读取完成后拉低,这样的操作正确吗?
该芯片在读取和写入前需要发送那些指令?手册中只提到了指令格式
感谢你的解答!!
chuanjing liu:
回复 Alvin Zheng:
TI工程师你好,请教几个问题
1、在读取和发送的时候,我依据手册中将片选CS拉高,读取或写入后再拉低,这样做法正确吗??
2、在读取和发送操作drv8711的时候,需要先发送什么指令(比如唤醒指令)吗?或者需要做那些操作呢??手册中并未提到。
chuanjing liu:
回复 chuanjing liu:
是SPI通信问题,已解决!!
jiahui shou:
回复 chuanjing liu:
我也在学习这科芯片,能共享一下资料么?
user5769726:
回复 chuanjing liu:
麻烦问一下您是怎么解决的这个问题?我遇到了相似的问题,drv8323芯片用spi进行寄存器的读写,读到的寄存器总是初始默认值,写入之后没有效果,依然是默认值