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.

[参考译文] TMS320F28379D:从 CPU2运行的 McBSP 获取时钟时出现问题

Guru**** 2583445 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1193003/tms320f28379d-problem-getting-a-clock-from-mcbsp-running-from-cpu2

器件型号:TMS320F28379D

我已经能够让 McBSP 从 CPU1工作、但现在我需要将其移至 CPU2。  这样、我就没有时钟了。  我在 SPI 模式下运行。

两个 McBSP 器件均分配给 CPU2 (来自 CPU1):

DevCfgRegs.CPUSEL9.ALL = 0x00000003;

ClkCfgRegs.LOSPP.ALL = 2;

CPU2中的时钟启用:

CpuSysRegs.PCLKCR11.bit.McBSP_A = 1;
CpuSysRegs.PCLKCR11.bit.McBSP_B = 1;

CPU1中的 GPIO 多路复用:

GpioCtrlRegs.GPACSEL1.bit.GPIO1 = 2;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 3;//MFSRB
GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 3;

GpioCtrlRegs.GPACSEL1.bit.GPIO3=2;
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 3;//MCLKRB
GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 3;

GpioCtrlRegs.GPACSEL2.bit.GPIO14=2;
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3;//MCLKXB

GpioCtrlRegs.GPACSEL4.bit.GPIO25 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 3;//MDRB
GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 3;

GpioCtrlRegs.GPACSEL4.bit.GPIO27 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 3;//MFDXB

CPU2中的 Mcbspb 设置:

McbspbRegs.SPCR2.all=0x0000;//重置 FS 发生器、采样率发生器和发送器
McbspbRegs.SPCR1.all=0x0000;//复位接收器、右对齐字、数字回路中断

McbspbRegs.SPCR1.bit.DLB = 0;

McbspbRegs.pcr.all = 0x0F08;//(CLKXM=CLKRM=FSXM=FSRM=1、FSXP=1)
McbspbRegs.SPCR1.bit.CLKSTP= 2;//与 CLKXP/CLKRP 一起
//确定计时方案
McbspbRegs.pcr.bit.CLKXP = 0;// CPOL = 0、CPHA = 0上升沿
//无延迟
McbspbRegs.pcr.bit.CLKRP = 0;

McbspbRegs.pcr.bit.SCLKME = 0;

McbspbRegs.RCR2.bit.RDATDLY = 01;// FSX 设置时间1处于主控模式。
// 0表示从机模式(接收)
McbspbRegs.XCR2.bit.XDATDLY = 01;// FSX 设置时间1在主控模式中。
// 0表示从机模式(发送)

McbspbRegs.RCR1.bit.RWDLEN1 = 2;// 16位字
McbspbRegs.XCR1.bit.XWDLEN1 = 2;// 16位字

McbspbRegs.SRGR2.all = 0x2000;// CLKSM=1、FPER = 1个 CLKG 周期
McbspbRegs.SRGR1.all = 0x000F;//帧宽度= 1 CLKG 周期、
// CLKGDV=16
McbspbRegs.SRGR2.bit.FPER = 15;

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

McBSPb 只用于接收。  有什么不知道为什么我看不到时钟?  既未 设置错误位、RFULL 也未设置 RSYNCERR。

Lee

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

    Lee、

    您能否确认在 CPU2中看到所需设置时是否回读任何 McBSP 控制寄存器、或者它们是否仍然全部为0x0000?

    最棒的

    Matthew

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

    是的、我看到写入 McBSP 寄存器的值。

    Lee

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

    我要把它带回去。  我将一个测试应用程序放在一起、现在我看到 McBSP 寄存器中的所有零。

    Lee

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

    好的、现在我看到了 McBSP 寄存器设置。  我需要设置所有 的 DevCfgRegs 值、无论我是否在使用相应的外设。  不过、仍然没有 McBSP 时钟。

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

    我有一个时钟!  GPIO 设置出现问题。  其工作原理为:

    GPIO_SetupPinMux (1、GPIO_MUX_CPU2、GPIO_MUX_Pins (0、3));
    GPIO_SetupPinOptions (1、GPIO_OUTPUT、0);

    GPIO_SetupPinMux (3、GPIO_MUX_CPU2、GPIO_MUX_Pins (0、3));
    GPIO_SetupPinOptions (3、GPIO_OUTPUT、0);

    GPIO_SetupPinMux (25、GPIO_MUX_CPU2、GPIO_MUX_Pins (0、3));
    GPIO_SetupPinOptions (25、GPIO_INPUT、0);