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.

[参考译文] TMS320F28377D:McBSP 模块问题

Guru**** 2535150 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027603/tms320f28377d-problem-of-mcbsp-module

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

尊敬的团队:

我的一位客户使用 McBSP 模块进行板对板通信。  他希望实现以下功能:

电路板 A 发送数据、电路板 B 接收数据、电路板 B 在接收数据后将数据发送回电路板 A、最后电路板 A 验证接收到的数据是否与其发送的数据一致。

他的项目是指官方的自回送程序。 以下是正式的自环回例程模块初始化程序:

    McbspaRegs.SPCR2.all=0x0000;        // Reset FS generator, sample rate
                                        // generator & transmitter
    McbspaRegs.SPCR1.all=0x0000;        // Reset Receiver, Right justify word
    McbspaRegs.SPCR1.bit.DLB = 1;       // Enable DLB mode. Comment out for
                                        // non-DLB mode.

    McbspaRegs.RCR2.bit.RDATDLY = 1;    // RX data delay is 1 bit
    McbspaRegs.XCR2.bit.XDATDLY = 1;    // TX data delay is 1 bit

    McbspaRegs.SRGR2.bit.GSYNC = 0;     // No clock sync for CLKG
    McbspaRegs.SRGR2.bit.FPER = 320;    // Frame-synchronization period

    McbspaRegs.SRGR2.bit.FSGM = 1;      // Frame-synchronization pulses from
                                        // the sample rate generator

    McbspaRegs.SRGR2.bit.CLKSM = 1;     // Sample rate generator input clock
                                        // is LSPCLK
    McbspaRegs.PCR.bit.SCLKME = 0;

    McbspaRegs.SRGR1.bit.CLKGDV = 1;    // Divide-down value for CLKG
    delay_loop();
    McbspaRegs.SRGR1.bit.FWID = 1;      // Frame-synchronization pulse width

    McbspaRegs.PCR.bit.CLKXM = 1;       // CLKX generated internally, CLKR
                                        // derived from an external source
    McbspaRegs.PCR.bit.FSXM = 1;        // FSX generated internally, FSR
                                        // derived from an external source

    //
    // Initialize McBSP Data Length
    //
    if(data_size == 8)                  // Run a loopback test in 8-bit mode
    {
      InitMcbspa8bit();
    }
    if(data_size == 16)                 // Run a loopback test in 16-bit mode
    {
      InitMcbspa16bit();
    }
    if(data_size == 32)                 // Run a loopback test in 32-bit mode
    {
      InitMcbspa32bit();
    }

    //
    // Enable Sample rate generator and
    // wait at least 2 CLKG clock cycles
    //
    McbspaRegs.SPCR2.bit.GRST = 1;
    delay_loop();

    //
    // Release from reset
    // RX, TX and frame sync generator
    //
    McbspaRegs.SPCR2.bit.XRST = 1;
    McbspaRegs.SPCR1.bit.RRST = 1;
    McbspaRegs.SPCR2.bit.FRST = 1;

他只改变了两个位置:

McbspaRegs.SPCR1.bit.DLB = 0;  

McbspaRegs.SRGR2.bit.FSGM=0;

更改后、发现两个电路板之间传输的数据都是错误的、不规则的。

两个开发板的 McBSP 模块的初始化是相同的。 下面是板 A 中的发送和接收程序:

while(McbspaRegs.SPCR2.bit.XRDY == 0 ) { }

McbspaRegs.DXR1.all=txdata1A;

while(McbspaRegs.SPCR1.bit.RRDY == 0 ) { } // Check for receive

rdata1A= McbspaRegs.DRR1.all;

下面是电路板 B 中的发送和接收程序:

while(McbspbRegs.SPCR1.bit.RRDY == 0 ) { } // Check for receive
rdata1B= McbspbRegs.DRR1.all;

while(McbspbRegs.SPCR2.bit.XRDY == 0 ) { }  

txData1B=rdata1B;

McbspbRegs.DXR1.all=txdata1A;

配置是否有任何问题?

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    绿色环保、

    [引用 userid="306637" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027603/tms320f28377d-problem-of-mcbsp-module "]发现两个主板之间传输的数据都是错误和不规则的。[/引用]

    寄存器中是否标记了任何错误? (请参阅章节:TRM 的 McBSP 异常/错误条件)

    [报价 userid="306637" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027603/tms320f28377d-problem-of-mcbsp-module "]配置是否存在任何问题?[/quot]

    我看不到当前配置的问题。  您是否尝试将 FGM 设置为1?  我建议查看下面的外部回送示例。 它位于 driverlib 中、而不是位字段中、但它将很好地表明通信适用于接收和发送。  

    C:\ti\c2000Ware_3_04_00_00\driverlib\f2837xd\examples\cpu1\McBSP\McBSP_ex6_loopback.c  

    此致、

    Marlyn