This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的先生
在我自己的 TMS320F28062设计中、我希望通过 SPI-B 通道 (8位)与 TMC429-LI 通信、但有一些问题。 当我发送数据时、数据将存储 TX 缓冲区、但 SPIDAT 寄存器垃圾值。然后在接收到 RX 缓冲区垃圾中的值后。 SPI 参数和功能如下所示。
空 InitSpibGpio (空)
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;//启用 GPIO12上的上拉电阻器(SPISIMOB)
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;//启用 GPIO13上的上拉电阻器(SPISOMIB)
GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0;//启用 GPIO14上的上拉电阻(SPICLKB)
GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0;//启用 GPIO15上的上拉电阻器(SPISTEB)
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3;//异步输入 GPIO12 (SPISIMOB)
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3;//异步输入 GPIO13 (SPISOMIB)
GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3;//异步输入 GPIO14 (SPICLKB)
GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3;//异步输入 GPIO15 (SPISTEB)
GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 3;//将 GPIO12配置为 SPISIMOB
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3;//将 GPIO13配置为 SPISOMIB
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3;//将 GPIO14配置为 SPICLKB
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 3;//将 GPIO15配置为 SPISTEB
EDIS;
}
void SPI_initB (void)
{
SpibRegs.SPICCR.all =0x0007;
SpibRegs.SPICTL.ALL =0x0006;
SpibRegs.SPIBRR = 0x007F; // SPI 波特率= LSPCLK/(SPIBRR+1)=32/16 =2MHz
SpibRegs.SPICCR.ALL =0x00C7;
SpibRegs.SPIPRI.bit.FREE = 1; //设置断点以避免干扰 xmission
}
void SPI_Fifo_initB()
{
SpibRegs.SPIFFTX.All=0xE040;
SpibRegs.SPIFFRX.All=0x2044;
SpibRegs.SPIFFCT.All=0x0000;
}
空 InitSPI429 (空)
{
InitSpibGpio();
//初始化 SPI FIFO
SPI_Fifo_initB();
//初始化 SPI
SPI_initB();
}
空 Write428Short (UINT8地址、Int32值)
{
uint8 Write[4]、Read[4];
write[0]=地址;
写入[1]=0;
write[2]=值>> 8;
write[3]= value 和0xff;
ReadWrite428 (读、写);
}
int32 Read428Short (uint8地址)
{
UINT8读[4]、写[4];
int32结果;
WRITE[0]=地址|TMC428_READ; TMC428_READ 为1
写入[1]=0;
write[2]= 0;
write[3]= 0;
ReadWrite428 (读、写);
Result =(read[2]<<8)|(read[3]);
if (read[2]& 0x08) result|=0xf000;
返回结果;
}
空 ReadWrite428 (UINT8 *读取、UINT8 *写入)
{
int i;
for (i=0;i<4;i++)
{
SpibRegs.SPITXBUF=((UINT16) Write[I]<<8);
while (SpibRegs.SPIFFRX.bit.RXFFST!=1){}//等待数据被接收
read[i]=(SpibRegs.SPIRXBUF & 0xFFFF);//在 Rx 缓冲器中获取数据
}
}
#include "DSP28x_Project.h"//器件头文件和示例 include 文件
#include "F2806x_Device.h"
#include "TMC429_Register.h"
Int32 Amath;
void main (void)
{
InitSysCtrl();
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
TMC429_Enbl(); // TMC429时钟使能16MHz
InitSPI429 (); // SPI B 初始化
Write428Short (IDX_AMAX|MOTOR0、2047); // IDX_AMAX 12、MOTOR0、value
AMAX=Read428Short (IDX_AMAX); //读取值
}
请提出任何建议。
Divyesh。
尊敬的先生
8位字符长度内的任何 TMS320F28062 SPI-B 通道的使用、如果有任何使用、请获取任何建议。 我在等。
Divyesh。