主题中讨论的其他部件:DRV8711,
TI社区您好,
我正在尝试使用TMS320F2.8035万 (主) 通过SPI与DRV8711 (从机)通信。 SPI通信为16位。 CS高时,我可以将数据推送到缓冲区,但我无法读取数据,因为我的miso总是很高。
数据格式应该没有问题,我发送MSB作为0/1进行写入/读取,位12-14作为地址,其余的是DRV8711寄存器的12位。
我在SPIRXBUF上收到完全相同的数据。 数据未写入DRV8711寄存器,这意味着我的SPI初始化可能会被打乱。
您能否根据自己的经验查看以下代码??
gpioCtrlRegs.GPAPUD.bit.GPIO16 = 0;//在GPIO16上启用上拉(SPISIMOA)
GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0;//在GPIO17上启用上拉(SPISOMIA)
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;//在GPIO18上启用上拉(SPICLKA)
gpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3;//异步输入GPIO16 (SPISIMOA)
gpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3;//异步输入GPIO17 (SPISOMIA)
gpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3;//异步输入GPIO18 (SPICLKA)
gpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1;//将GPIO16配置为SPISIMOA
gpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1;//将GPIO17配置为SPISOMIA
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1;//将GPIO18配置为SPICLKA
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0;
gpioCtrlRegs.GPADIR.bit.GPIO19 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO19 = 1;
我使用GPIO19作为I/O,而不是SPISTEA,因为DRV8711在读取/写入时需要CS高。 因此,GPIO19在发送16位数据之前将会很高,然后会变得很低。
=====================================================================================================================
SPI初始化
SpiaRegs.SPIFFTX.All=0xE040;
SpiaRegs.SPIFFRX.all=0xE040;
SpiaRegs.SPIFFCT.All=0x0000;
SpiaRegs.SPICCR.ALL =0x00BF;
SpiaRegs.SPICTL.ALL =0x0006;
SpiaRegs.SPISTS.all=0x0000;
SpiaRegs.SPIBRR =0x007F;
SpiaRegs.SPIPRI.All = 0x0011;
=====================================================================================================================
SPI写入
SPI_Write (UINT16 dataHi)
{
GpioDataRegs.GPASET.bit.GPIO19 = 1;
SpiaRegs.SPITXBUF=dataHi;
while (SpiaRegs.SPIFFRX.bit.RXFFST !=1){}
ReadData ||(SpiaRegs.SPIRXBUF);
GpioDataRegs.GPACLEAR.bit.GPIO19 = 1;
}