查看: 397|回复: 5
收起左侧

[DSP编程] mcbsp SPI模式发送多字节问题

[复制链接]
     

2

主题

17

帖子

53

积分

初级技术员

 楼主| 发表于 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];
}
数据就全部错位了,但如果只发一个字节,则没有问题。
请教各位,是否有遇到这个问题,谢谢!
     

589

主题

2万

帖子

6万

积分

版主

发表于 2017-4-17 22:15 | 显示全部楼层 |返回版面
你应该在连续发送的时候   判断上一个字节是否发送完成
如果发送完成后在赋下一个值
欢迎进入【TI DSP 论坛】 & 【DSP 技术】
          TI忠诚粉丝!
     

342

主题

1万

帖子

4万

积分

版主

---------------------

发表于 2017-4-18 07:11 | 显示全部楼层 |返回版面
这个端口是可以多字节一起发送的, 我估计还是设置问题. 不想去看你的设置代码了, 再对照对照手册吧, 最好拿例程来测试和对照
欢迎进入 TI 模拟技术论坛
     

2

主题

17

帖子

53

积分

初级技术员

 楼主| 发表于 2017-4-18 07:45 | 显示全部楼层 |返回版面
zhangmangui 发表于 2017-4-17 22:15
你应该在连续发送的时候   判断上一个字节是否发送完成
如果发送完成后在赋下一个值 ...

我试过了,还是不成功
     

2

主题

17

帖子

53

积分

初级技术员

 楼主| 发表于 2017-4-18 07:46 | 显示全部楼层 |返回版面
airwill 发表于 2017-4-18 07:11
这个端口是可以多字节一起发送的, 我估计还是设置问题. 不想去看你的设置代码了, 再对照对照手册吧, 最好拿 ...

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

2

主题

17

帖子

51

积分

初级技术员

发表于 2017-4-21 23:37 | 显示全部楼层 |返回版面
我把5509A的mcbsp 配置成主spi,按照例程改的,结果发不出去,调了好几天都不行。于是索性把mcbsp配置程gpio,结果一下就调通了。一个或多个字节发都没问题。所以建议楼主实在不行可以换个思路。
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

关闭

热门推荐上一条 /5 下一条

分享 快速回复 返回顶部 返回列表