请问,我现在想用McBSP来读取ADS8556转化后的数据,应该怎么配置McBSP?
ADS8556以串行的方式发送数据给McBSP,8556应该配置为软件模式还是硬件模式?
McBSP的CLKXA,FSXA,MDXA和MDRA分别连接8556的SCLK,FS,SDI和SDO_A,但是读到的数据全部为0.
下面是我对McBSP的配置:
void mcbsp_init_dlb()
{ McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter
McbspaRegs.SPCR1.all=0x1000; // 时钟停止模式
// McbspaRegs.SPCR1.bit.DLB = 1; // Enable DLB mode. Comment out for non-DLB mode.
McbspaRegs.MFFINT.all=0x0; // Disable all interrupts
McbspaRegs.RCR2.all=0x0001; // Single-phase frame, 1 word/frame, No companding (Receive)
McbspaRegs.RCR1.all=0x0;
McbspaRegs.XCR2.all=0x0001; // Single-phase frame, 1 word/frame, No companding (Transmit)
McbspaRegs.XCR1.all=0x0;
McbspaRegs.SRGR2.bit.CLKSM = 1; // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK)
McbspaRegs.SRGR2.bit.FPER = 15; // FPER = 16 CLKG periods
McbspaRegs.SRGR1.bit.FWID = 0; // Frame Width = 1 CLKG period
McbspaRegs.SRGR1.bit.CLKGDV = 15; // CLKG frequency = LSPCLK/(CLKGDV+1)
McbspaRegs.PCR.bit.FSXM = 1; // FSX generated internally, FSR derived from an external source
McbspaRegs.PCR.bit.FSRM = 1;
McbspaRegs.PCR.bit.CLKXM = 1; // CLKX generated internally, CLKR derived from an external source
McbspaRegs.PCR.bit.CLKRM = 1;
McbspaRegs.PCR.bit.FSXP = 1;
McbspaRegs.PCR.bit.CLKXP = 0;
McbspaRegs.PCR.bit.CLKRP = 1;
//*************** Initialize McBSP Data Length
InitMcbspa16bit();
//************* Enable Sample rate generator
McbspaRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator
delay_loop(); // Wait at least 2 SRG clock cycles
McbspaRegs.SPCR2.bit.XRST=1; // Release TX from Reset
McbspaRegs.SPCR1.bit.RRST=1; // Release RX from Reset
McbspaRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset
}
用示波器观察8556的BUSY/INT管脚,输出波形正确,说明8556一直在转化数据。
请问应该如何操作,才能收到AD的数据?
Van Yang:
你好,关于McBSP的配置问题,请移步到C2000板块,以便快速定位问题得到解决。谢谢。
Dale Li:
“ADS8556以串行的方式发送数据给McBSP,8556应该配置为软件模式还是硬件模式?”串行接口方式下,ADS8556能够被配置为软件模式或者硬件模式,硬件模式是指ADS8556不需要进行软件配置即可正常工作,软件模式是指ADS8556需要通过设置内部寄存器来工作。