打印
[DSP编程]

DSP28335通过SPI口配置AD9747问题

[复制链接]
2657|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现在将DSP28335的McBSP口配置成SPI模式,通过SPI配置AD9747,一直有问题。很不解。
void init_mcbsp_spi()
{
    // McBSP-A register settings
    McbspaRegs.SPCR2.all=0x0000;   // Reset FS generator, sample rate generator & transmitter
    McbspaRegs.SPCR1.all=0x0000;   // Reset Receiver, Right justify word, Digital loopback dis.
    McbspaRegs.PCR.all=0x0F08;           //(CLKXM=CLKRM=FSXM=FSRM= 1, FSXP = 1)
    //McbspaRegs.SPCR1.bit.DLB = 1;      //数字循环模式,自收自发

    McbspaRegs.SPCR1.bit.CLKSTP = 2;     //Clock stop mode, without clock delay
    McbspaRegs.PCR.bit.CLKXP = 0;           //0: Transmit data is sampled on the rising edge of CLKX.
    McbspaRegs.PCR.bit.CLKRP = 0;          //0: Receive data is sampled on the falling edge of MCLKR.
    McbspaRegs.RCR2.bit.RDATDLY=01;   // FSX setup time 1 in master mode. 0 for slave mode (Receive)
    McbspaRegs.XCR2.bit.XDATDLY=01;   // FSX setup time 1 in master mode. 0 for slave mode (Transmit)
    McbspaRegs.XCR1.bit.XFRLEN1=1;
    McbspaRegs.XCR2.bit.XPHASE=0;
    McbspaRegs.RCR1.bit.RFRLEN1=0;
    McbspaRegs.RCR2.bit.RPHASE=0;
    //McbspaRegs.XCR2.bit.XFRLEN2=0;
    //McbspaRegs.XCR2.bit.XWDLEN2=0;

   McbspaRegs.RCR1.bit.RWDLEN1=2;       // 8-bit word
    McbspaRegs.XCR1.bit.XWDLEN1=2;       // 8-bit word

// Sample Rate Generator Registers
    McbspaRegs.SRGR2.all=0x2000;     // CLKSM=1, FPER = 1 CLKG periods
    McbspaRegs.SRGR1.all=0x000F;      // Frame Width = 1 CLKG period, CLKGDV=16
    McbspaRegs.SPCR2.bit.GRST=1;         // Enable the sample rate generator
    delay_loop();                        // Wait at least 2 SRG clock cycles
    McbspaRegs.SPCR2.bit.XRST=1;         // Release TX from Reset
    McbspaRegs.SPCR1.bit.RRST=1;         // Release RX from Reset
    McbspaRegs.SPCR2.bit.FRST=1;         // Frame Sync Generator reset

}
配置SPI的每帧数据字节数为2字节,每字节16位,但是发送数据时发现第二个数据发现时钟并不是16位,McbspaRegs.RCR2.bit.RDATDLY=01设置了一位,但是还有一位不明白是怎么来的,有没有大神指导(黄色是片选信号,红色是数据输出,蓝色时钟,绿色数据输入)

相关帖子

沙发
gyg123| | 2015-11-28 14:44 | 只看该作者
看波形的这个是软件吗?这是什么

使用特权

评论回复
板凳
mohu_jingzi|  楼主 | 2015-11-28 20:27 | 只看该作者
额  我用示波器看的:'(:'(:'(

使用特权

评论回复
地板
玄德| | 2015-11-29 13:23 | 只看该作者

四通道示波器。


使用特权

评论回复
5
玄德| | 2015-11-29 13:26 | 只看该作者

没做过28335。

但我想说题外话:多两个脉冲,也许不影响对芯片的操作。
我曾经用16位SPI操作18位AD,相当于把18位AD当16位用。

使用特权

评论回复
6
mohu_jingzi|  楼主 | 2015-11-29 15:25 | 只看该作者
好吧 我现在每一帧值传输一个数据,先向AD9747某个寄存器写一个数据,再读回,用示波器观察,写数据是没有问题的,可是读回的值总是不对,很多情况下是读回的最后一位数据不对,唉,我该怎么办啊  

使用特权

评论回复
7
mohu_jingzi|  楼主 | 2016-3-25 10:58 | 只看该作者
问题解决了 还是时序的问题 谢谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

28

帖子

2

粉丝