[读写时序]

求助:McBSP配置成全双工SPI,时序有误

[复制链接]
2200|4
手机看帖
扫描二维码
随时随地手机跟帖
beyondlovelife|  楼主 | 2013-9-1 00:19 | 显示全部楼层 |阅读模式
本帖最后由 beyondlovelife 于 2013-9-1 00:25 编辑

    McBSP配置成全双工SPI,时鐘停止模式,无延迟。
    DSP:TMS320VC5502,与FPGA通过McBSP通信。将AD採集数据传入DSP,16位,然后再输出。AD输入范围±5V.

    1、FPGA做主,DSP做从。McBSP按照手册配置成从模式,FPGA做时序时,按道理16个时鐘就可以,结果McBSP接收从第一个时鐘开始,而发射从第一个和第二个时鐘一样,相当於延迟了一个时鐘,所以一共用了17个时鐘。最后时序做完后,多次用CCS加载程序,不是每次加载结果都一样:
    (1)有时能同时收发。当AD输入波形范围<5.4Vpp时,波形正确;但是AD输入范围>5.6Vpp时,波形错误,也就是说以输入范围一半為界限(前面有滤波器,会略微地衰减);
    (2)有时错误。无论输出多少,都是错误的。无波形输入时,仍有杂波输出。
    2、DSP做主,FPGA做从。McBSP按照手册配置成主模式,结果当多次CCS加载程序,不是每次加载结果都一样:
    (1)90%是正确的;输入波形幅度多大都没有关系。
    (2)10%有错误,没有输入的时候,仍然有很大的杂波输出,当有输入的时候,在波形上面夹杂著之前的低噪。

       因此,产生疑问:
    1、是不是DSP McBSP不能配置成全双工?只能单收或单发?
    2、如果可以配置成全双工的话,
         (1)McBSP配置SPI从模式和主模式需要注意什么吗?(已经按手册进行配置)
     2)是不是可能FPGA时序有问题?(经多次调整和验证,应该没有问题)
         (3)程序中怎麼实现发送和接收能同时进行?
      
       tempLEFT = temp;//每次读数复制给变量
       While(!MCBSP_rrdy(hMCBSP0));
       temp= MCBSP_read16(hMCBSP0);
       While(!MCBSP_xrdy(hMCBSP0));
       MCBSP_write16(hMCBSP0,tempLEFT);

       这样可以实现收和发同时进行吗?
            求大神赐教!

相关帖子

zhangmangui| | 2013-9-1 22:28 | 显示全部楼层
参考一下下面的文档    应该是可以全双工
Mcbsp设置成SPI.zip (6.33 KB)

使用特权

评论回复
飞鹰嵌入式| | 2013-9-3 08:55 | 显示全部楼层
斑竹就是给力啊,呵呵

使用特权

评论回复
zhangmangui| | 2013-9-3 18:37 | 显示全部楼层
谢谢支持

使用特权

评论回复
lansen0815| | 2014-1-21 12:23 | 显示全部楼层
我也遇到相识的问题  谢谢

使用特权

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

本版积分规则

3

主题

19

帖子

1

粉丝