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.

28337D的MCBSP扩展为SPI 接受的数据一直是0xFF

用28377D的MCBSP扩展为SPI和CPLD进行通信,DSP为主机,CPLD为从机(只有一个从机),片选,CLK和发送都没有问题,通过示波器也可以看到CPLD发送给DSP的数据也没有问题,但是在CCS中在线仿真观察DRR1里面总是显示0xFF,

  • 请问DRR1是指的什么?
    接收寄存器里面的数值正确吗?
  • 先通过在线仿真的方式 看看SPI读取的数据对不对 确保读取对了再找转储的数据为ff的原因
    仿真的时候主控读取时启动时钟+片选是对的吗?
  • 只是CCS register窗口显示了不正确的值,还是将DRR1读入变量也会在变量中放入不正确的值?你能确认你DR pin的pin muxing是正确的吗?
  • 我现在是MCBSP转SPI口有问题 为了验证是不是硬件问题 我把这四个口又配置成了SPI 并且观察和CPLD通信收发的数据 配置成SPI的时候收发的数据都是没有问题的 但是要是把这四个口配置为MCBSP扩展的spi口 接受的数据就有问题 DRR1中一直是FF(我用的是16bits 发送)
  • DRR1是McbspbReg寄存器里面的位 主要是用来存放读入的数据 我现在能确定的是我进入DSP的DPIO口的数据电平是对的 但是McbspbReg.DRR1.all = 0xFF,一直都是0xFF(配置得失发送接收16bits ) 似乎是输入的总线一直被拉高了一样 但是进入DSP的GPIO口的电平是对的 不是都是高的 不知道是哪里配置为了问题 ,下面是我的初始化配置:
    McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate// generator & transmitter
    McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word

    McbspaRegs.PCR.bit.all = 0x0F08;
    McbspaRegs.SPCR1.bit.DLB = 0;

    McbspaRegs.SPCR1.bit.CLKSTP = 3;
    McbspaRegs.PCR.bit.CLKXP = 0;
    McbspaRegs.PCR.bit.CLKRP = 1;

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

    McbspaRegs.RCR1.bit.RWDLEN1 = 2; // 16-BIts word
    McbspaRegs.XCR1.bit.xWDLEN1 = 01; // 16-BIts word

    McbspaRegs.SRGR2.bit.all = 0x2000;
    McbspaRegs.SRGR1.bit.all = 19;

    McbspaRegs.SPCR2.GRST=1;
    delay_loop();
    McbspaRegs.SPCR2.XRST=1;
    McbspaRegs.SPCR1.RRST=1;
    McbspaRegs.SPCR2.FRST=1;
  • 看一下技术参考手册中的"Table 21-14. Bits Used to Enable and Configure the Clock Stop Mode" ,主要是描述在时钟停止模式下运行所需的位设置。用于在文档的H版中启用和配置时钟停止模式的位。确保你的设置完全匹配。你共享的代码中能看到大部分设置,但是其他字段看不到,需要你确认一下其他部分设置是否正确。
  • 你好,遇到了和你一样的问题,请问怎么解决的?