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.

[参考译文] CCS/TMS320F28377S:28377 McBSP 作为 SPI 主器件工作发送问题

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/612378/ccs-tms320f28377s-28377-mcbsp-work-as-spi-master-the-transmit-problem

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

我想使用 McBSP 并将其配置为 SPI、现在、SPI 可以在正确的时序序列中工作、但我无法传输我想要的内容。

这是我需要的:一个帧有6个字、每个字有8位。

我不知道如何传输数据(例如:0x123456789ABC)。 波形应该像图1 ( 我在图中遗漏了一个字)。

但现在,我可以在逻辑分析仪中看到的是:

这是我的发送器件代码:

char x[6]={0x12、0x34、0x56、0x78、0x9a、bb};
for (i=0;i<6;i++)
{
while (McbspbRegs.SPCR2.bit.XRDY = 1)
{McbspbRegs.DXR1.All=x[i];}
DELAY_US (15);
} 

如果我不使用 DELAY_US 函数、则波形为:

它是7个字、但所有字都是相同的。

如果我写一次 Transmit、它将发送6个字、但所有字都是相同的。

我不知道如何传输和配置寄存器、或者我的配置有问题吗?

我的代码如下所示:

McbspbRegs.SPCR2.all=0x0000; //重置 FS 发生器、采样率发生器和发送器
McbspbRegs.SPCR1.all=0x0000; //重置接收器,右对齐字,数字回送中断
McbspbRegs.pcr.all=0x0F08; //(CLKXM=CLKRM=FSXM=FSRM=1、FSXP=1)
McbspbRegs.SPCR1.bit.DLB = 0;
McbspbRegs.SPCR1.bit.CLKSTP= 3; //与 CLKXP/CLKRP 一起确定时钟方案
McbspbRegs.pcr.bit.CLKXP = 0; // CPOL = 0、CPHA = 0上升沿无延迟
McbspbRegs.pcr.bit.CLKRP = 0;
McbspbRegs.RCR2.bit.RDATDLY=0;
McbspbRegs.XCR2.bit.XDATDLY=0;
McbspbRegs.RCR2.bit.RFIG=1;
McbspbRegs.XCR2.bit.XCONFIG=1;

McbspbRegs.RCR1.bit.RWDLEN1=0; // 8位字
McbspbRegs.XCR1.bit.XWDLEN1=0; // 8位字
McbspbRegs.RCR1.bit.RFRLEN1=6; // 6个字
McbspbRegs.XCR1.bit.XFRLEN1=6; // 6个字

McbspbRegs.SRGR2.All=0x2000; // CLKSM=1、FPER = 1个 CLKG 周期
McbspbRegs.SRGR1.All= 0x0063; //帧宽度= 1 CLKG 周期、CLKGDV=

McbspbRegs.SPCR2.bit.GRST=1; //启用采样率发生器
delay_loop(); //等待至少2个 SRG 时钟周期
McbspbRegs.SPCR2.bit.XRST=1; //从复位中释放 TX
McbspbRegs.SPCR1.bit.RRST=1; //从复位中释放 RX
McbspbRegs.SPCR2.bit.frst=1; //帧同步发生器复位 

 是否有人可以给我一些建议或我可以参考的示例代码? 谢谢!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我写信告诉您、C2000团队成员已被分配到此帖子、应该很快回答。

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

    我想确认您在逻辑分析仪上显示的波形的问题。 传输之间的延迟问题是否需要消除? 或者,您是否正在排除为什么看不到 bbb 传输?

    此致、
    Kris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我想查看波形中的 bbb。延迟是一种查看添加延迟和不添加延迟之间有何不同的方法。
    在我看来、我不知道它是否正确、当我添加延迟时、它将启动不同的帧、因此我在第二张图片中看到的是不同的帧、而不是一个帧、并且它不能捕捉我想要的内容。

    PS:当我将帧长度寄存器设置为6时、它是一个帧的7个字、我理解了我在问题中提出的这一点。

    我需要的是一个帧和它中的不同字。我不知道如何配置它。
    我参考一些书籍、它是否与 MCR1和 MCR2相关?它是否应该配置多通道?您能给我一些有关在音频收集中使用 McBSP 的示例代码吗?我可以参考什么?
    我的电子邮件:735760576@QQ.COM
    谢谢!!
    刘伟