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.
spi作为主机,怎么和mcbsp配置为spi从机通信,目前可以实现发送接受数据,但是发送的和接受到的不一致,新人刚学习dsp,求大佬教一下,现在可以实现mcbsp最为主机,spi为从机发送
代码如下;
void Init_Mcbspa(void)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK = 1;
EDIS;
McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter
McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word, Digital loopback dis.
McbspaRegs.PCR.all=0x0008; //(CLKXM=CLKRM=FSXM=FSRM= 1, FSXP = 1)
McbspbRegs.PCR.bit.FSRP = 1;
McbspaRegs.SPCR1.bit.DLB = 0;
McbspaRegs.SPCR1.bit.CLKSTP = 2; // Together with CLKXP/CLKRP determines clocking scheme
McbspaRegs.PCR.bit.CLKXP = 0; //
McbspaRegs.PCR.bit.CLKRP = 0; //
McbspaRegs.RCR2.bit.RDATDLY=0; // FSX setup time 1 in master mode. 0 for slave mode (Receive)
McbspaRegs.XCR2.bit.XDATDLY=0; // FSX setup time 1 in master mode. 0 for slave mode (Transmit)
McbspaRegs.RCR1.bit.RWDLEN1=2; // 16-bit word
McbspaRegs.XCR1.bit.XWDLEN1=2; // 16-bit word
McbspaRegs.SRGR2.all=0x2000; // CLKSM=1, FPER = 1 CLKG periods
McbspaRegs.SRGR1.all= 0x0001; // Frame Width = 1 CLKG period, CLKGDV=16
McbspaRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator
McbspaRegs.SPCR2.bit.XRST=1; // Release TX from Reset
McbspaRegs.SPCR1.bit.RRST=1; // Release RX from Reset
McbspaRegs.SPCR2.bit.FRST=1;
}
void SPIA_Init(void)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; // SPI-A
EDIS;
InitSpiaGpio();
// Initialize SPI FIFO registers
SpiaRegs.SPIFFTX.all=0xA000;
SpiaRegs.SPIFFRX.all=0x0000;
SpiaRegs.SPIFFCT.all=0x0;
SpiaRegs.SPICCR.all =0x000F; // // Reset on, rising edge, 16-bit char bits
SpiaRegs.SPICTL.all =0x0006; //0x0006->0x0002 // Enable master mode, normal phase, // enable talk, and SPI int disabled.
SpiaRegs.SPIBRR =0x007F;
SpiaRegs.SPICCR.bit.SPISWRESET = 1;
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
}