用28377D的MCBSP扩展为SPI和CPLD进行通信,DSP为主机,CPLD为从机(只有一个从机),片选,CLK和发送都没有问题,通过示波器也可以看到CPLD发送给DSP的数据也没有问题,但是在CCS中在线仿真观察DRR1里面总是显示0xFF,
Green Deng:
请问DRR1是指的什么?
接收寄存器里面的数值正确吗?
mangui zhang:
先通过在线仿真的方式看看SPI读取的数据对不对确保读取对了再找转储的数据为ff的原因
仿真的时候主控读取时启动时钟+片选是对的吗?
Green Deng:
只是CCS register窗口显示了不正确的值,还是将DRR1读入变量也会在变量中放入不正确的值?你能确认你DR pin的pin muxing是正确的吗?
user4558283:
回复 mangui zhang:
我现在是MCBSP转SPI口有问题为了验证是不是硬件问题我把这四个口又配置成了SPI并且观察和CPLD通信收发的数据配置成SPI的时候收发的数据都是没有问题的但是要是把这四个口配置为MCBSP扩展的spi口接受的数据就有问题 DRR1中一直是FF(我用的是16bits 发送)
user4558283:
回复 Green Deng:
DRR1是McbspbReg寄存器里面的位主要是用来存放读入的数据我现在能确定的是我进入DSP的DPIO口的数据电平是对的但是McbspbReg.DRR1.all = 0xFF,一直都是0xFF(配置得失发送接收16bits )似乎是输入的总线一直被拉高了一样但是进入DSP的GPIO口的电平是对的 不是都是高的 不知道是哪里配置为了问题 ,下面是我的初始化配置:McbspaRegs.SPCR2.all=0x0000;// Reset FS generator, sample rate// generator & transmitterMcbspaRegs.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 bitMcbspaRegs.XCR2.bit.XDATDLY = 01;// TX data delay is 1 bit
McbspaRegs.RCR1.bit.RWDLEN1 = 2;// 16-BIts wordMcbspaRegs.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;
Green Deng:
回复 user4558283:
看一下技术参考手册中的"Table 21-14. Bits Used to Enable and Configure the Clock Stop Mode" ,主要是描述在时钟停止模式下运行所需的位设置。用于在文档的H版中启用和配置时钟停止模式的位。确保你的设置完全匹配。你共享的代码中能看到大部分设置,但是其他字段看不到,需要你确认一下其他部分设置是否正确。
user4558283:
回复 Green Deng:
好 谢谢!
user6223461:
回复 user4558283:
你好,遇到了和你一样的问题,请问怎么解决的?