Part Number:TMS320F28335Other Parts Discussed in Thread:C2000WARE
static void bsp_mcbspa_cfg(void)
{
// McBSP-A register settings
McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter
McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word
McbspaRegs.MFFINT.all=0x0; // Disable all interrupts
McbspaRegs.SPCR1.bit.DLB = 0; // Enable DLB mode. Comment out for non-DLB mode.是否内部连接DX与DR
McbspaRegs.SPCR1.bit.CLKSTP = 2; //使能时钟停止模式
McbspaRegs.RCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Receive)
McbspaRegs.RCR1.all=0x0;
McbspaRegs.XCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Transmit)
McbspaRegs.XCR1.all=0x0;
McbspaRegs.PCR.bit.FSXM = 1; // =0选择外部帧同步,=1选择内部帧同步信号
McbspaRegs.PCR.bit.FSRM = 1; // =0选择外部帧同步,=1选择内部帧同步信号
McbspaRegs.RCR2.bit.RFIG = 1; //=1忽略之后的同步信号
McbspaRegs.XCR2.bit.XFIG = 1; //=1忽略之后的同步信号
McbspaRegs.RCR1.bit.RFRLEN1 = 0; //帧长度=X+1
McbspaRegs.RCR2.bit.RDATDLY=0; //延时接收=0不延时,=1延时一个CLK =2延时2个CLK
McbspaRegs.PCR.bit.CLKXM = 1; //=0输入时钟由外部时钟驱动,
McbspaRegs.PCR.bit.CLKRM = 0; //=0输入时钟由外部时钟驱动,
McbspaRegs.PCR.bit.CLKRP =1; //=0时钟下降沿接收数据。=1时钟上升沿接收数据,
McbspaRegs.PCR.bit.CLKXP =0; //=0时钟上升沿发送数据。=1时钟下降沿发送数据,
McbspaRegs.PCR.bit.FSXP =1; //=1帧同步脉冲FSX为低电平有效。
McbspaRegs.SRGR2.bit.CLKSM = 1; // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK),=1表示MCBSP时钟由CPU提供
McbspaRegs.SRGR1.bit.CLKGDV = 59; // CLKG frequency = LSPCLK/(CLKGDV+1),时钟设置,LSPCLK=37.5MHZ,这个需要与用户沟通进行统一时钟,来确定FPER值
McbspaRegs.SRGR2.bit.FSGM = 0;
InitMcbspa16bit();
McbspaRegs.SPCR2.bit.GRST=1; // 采样率时钟发生器复位停止
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
delay_loop();
McbspaRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset
}
当前我的MCBSP是这么配置的,配置为SPI使用,MDRA管脚的波形也是对的,但是这么读取数据mcbsp_7490_rx[num] = McbspaRegs.DRR1.all;之后,读出来的都是00,寄存器里也是00,请问是为什么
user5197967:
并且,如果我使用TI的例程,内环可以收到数据,不使能内环的话,也一样收不到数据
,
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
user5197967 说:内环可以收到数据,不使能内环的话
您好,您说的内环是 C2000Ware example中的回路吗?
对于 McBSP来说,请务必确保将用作 McBSP 信号 (时钟 /TX/RX) 引脚的限定条件设置为 ASYNC,否则信号会在 McBSP 模块之前同步到系统时钟。 您可以在 GPIOCtrlRegs 空间的 QUALSEL 寄存器中进行控制。
假设您也相应地配置了 pinmux,回送模式不需要任何 pinmux 设置,因为在 McBSP 模块内部他会将 TX 连接到 RX。