打印
[DSP编程]

mcbsp SPI模式发送多字节问题

[复制链接]
3148|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
洪剑平|  楼主 | 2017-4-17 17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用例程试了下,发单个字节是没有问题的:
下面是我的配置:
//*************** RESET MCBSP
        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;     // Low inactive state without delay:
        McbspaRegs.PCR.bit.CLKXP = 0;                 // transmits data on the rising edge
        McbspaRegs.PCR.bit.CLKRP = 0;        //receives data on the falling edge of MCLKR.

        McbspaRegs.RCR2.bit.RDATDLY = 1;      // FSX setup time 1 in master mode. 0 for slave mode (Receive)
        McbspaRegs.XCR2.bit.XDATDLY = 1;      // FSX setup time 1 in master mode. 0 for slave mode (Transmit)

        McbspaRegs.XCR2.bit.XPHASE = 0;  //发送使用单相位帧
        McbspaRegs.RCR2.bit.RPHASE = 0;  //接收使用单相位帧

        McbspaRegs.RCR1.bit.RWDLEN1 = 2;     // 16-bit word
        McbspaRegs.RCR1.bit.RFRLEN1 = 15;
        McbspaRegs.XCR1.bit.XWDLEN1 = 2;     // 16-bit word
        McbspaRegs.XCR1.bit.XFRLEN1 = 15;

        McbspaRegs.SRGR2.bit.CLKSM = 1;                // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK)
        McbspaRegs.SRGR1.bit.CLKGDV = 8;        //10 CLKG frequency = LSPCLK/(CLKGDV+1)

        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
        delay_loop();
        McbspaRegs.SPCR2.bit.FRST = 1;         // Frame Sync Generator reset

我定时发数据16个字节数据
for(i=0;i<16;i++)
{
        McbspaRegs.DXR1.all = Send_Dat[i];
}
数据就全部错位了,但如果只发一个字节,则没有问题。
请教各位,是否有遇到这个问题,谢谢!

相关帖子

沙发
zhangmangui| | 2017-4-17 22:15 | 只看该作者
你应该在连续发送的时候   判断上一个字节是否发送完成
如果发送完成后在赋下一个值

使用特权

评论回复
板凳
airwill| | 2017-4-18 07:11 | 只看该作者
这个端口是可以多字节一起发送的, 我估计还是设置问题. 不想去看你的设置代码了, 再对照对照手册吧, 最好拿例程来测试和对照

使用特权

评论回复
地板
洪剑平|  楼主 | 2017-4-18 07:45 | 只看该作者
zhangmangui 发表于 2017-4-17 22:15
你应该在连续发送的时候   判断上一个字节是否发送完成
如果发送完成后在赋下一个值 ...

我试过了,还是不成功

使用特权

评论回复
5
洪剑平|  楼主 | 2017-4-18 07:46 | 只看该作者
airwill 发表于 2017-4-18 07:11
这个端口是可以多字节一起发送的, 我估计还是设置问题. 不想去看你的设置代码了, 再对照对照手册吧, 最好拿 ...

我就是用例程是的,但例程只发送一个字节,这个没有问题。
只有在发送多字节的时候出错。

使用特权

评论回复
6
seahakeway| | 2017-4-21 23:37 | 只看该作者
我把5509A的mcbsp 配置成主spi,按照例程改的,结果发不出去,调了好几天都不行。于是索性把mcbsp配置程gpio,结果一下就调通了。一个或多个字节发都没问题。所以建议楼主实在不行可以换个思路。

使用特权

评论回复
7
andyjian| | 2020-7-13 11:05 | 只看该作者
spi错位后会很槽糕,为何不用McBsp呢?有帧同步

使用特权

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

本版积分规则

2

主题

22

帖子

1

粉丝