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.

[参考译文] TMS320F2.8377万D:在OneShot模式下通过DMA实现McBSP

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/581042/tms320f28377d-mcbsp-through-dma-in-oneshot-mode

部件号:TMS320F2.8377万D
主题中讨论的其他部件:TMS320C6657

你(们)好

我尝试在DMA模式下通过McBSP在TMS320F2.8377万D (Delfino)和TMS320C6657 (C66)之间进行通信。

我无法将McBSP用作SPI,因为C66处理器不支持SPI协议(请参阅文档SPRUHH0—2012年5月第2.10 段)。

因此,我希望C66和Delfino处理器具有相同的配置。

下面,我想 给你们一个我想要的例子(为了简化图表,我用2个8位的单词代替2个16位的单词):

在当前配置下,每个单词之间都有帧同步信号。

您是否对寄存器配置有任何想法,允许在图形中使用操作模式?

提前感谢。

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

    我将查看双相帧配置。 请参阅TRM中的AC97标准与双相框的实施21.3 .4.4 一节,了解如何实现这一功能。 您希望将McBSP配置为每个相位有一个8位字。

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

    您好,Mark。

    抱歉,我似乎不清楚。

    我只想在DMA模式下以一个相位发送x个字,只有一个帧同步脉冲(而不是每个字的一个FSX脉冲)。  

    在我的McBSP当前配置中,我有:

    XCR1->XFRLEN1 = x (帧大小= x+1个单词)

    XCR1->XWDLEN1 = 2 (字=16位)

    XCR2->PHASE =0 (单相帧)

    XCR2->XDATDLY= 0 (0位数据延迟)

    SPCR1->CLKSTP =2

    PCR->CLKXP = 0

    PCR->CLKRP = 0

    PCR->CLKXM = 1

    PCR->SCLKME = 0

    SRGR2 -> CLKSM = 1

    SRGR1->CLKGDV

    PCR->CLKRM = 0

    PCR->FSXM = 1

    SRGR2 -> FSGM = 0

    PCR->FSRM = 0

    PCR->FSXP = 1.

    PCR->FSRP = 1

    在我的DMA配置中,我有:

    burst_size.all = 0
    src_burst_step = 0
    dst_burst_step = 0


    src_transfer_step = 1
    dst_transfer_step = 0

    src_wrap_size = 0xFFFF
    src_wrap_step = 0
    dst_wrap_size = 0xFFFF
    dst_wrap_step = 0

    模式->CHINTE = 1
    MODEEvDATASIZE = 0
    模式->连续= 0
    模式->OneShot = 0
    模式-> PERINTE = 1
    MODE->OVRINTE =0
    模式->CHINTMODE = 1

    是否有任何关于什么配置寄存器是错误的想法?

    提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的进一步澄清。 您似乎正在尝试使用时钟停止模式(SPI模式)。 在此模式下,FSX的行为与标准SPI模块中的芯片选择信号相同。 在时钟停止模式下,FSX始终在连续字词之间切换。 如果您不希望出现这种情况,则可以驱动GPIO,而不是使用FSX。 使用OneShot DMA,您可以将GPIO设置为活动状态,然后在DMA突发结束时,驱动GPIO处于非活动状态。

    您所显示的图像使用基本McBSP模式,可以是双相帧,也可以是单相帧,每个帧包含多个字词,正如我最初建议的那样。 如果您注意到,在数据传输前后,时钟也会不断切换。 您提到C66不支持McBSP的SPI模式,因此您不需要使用C28 McBSP的SPI模式。 将CLKSTP设置为0。