打印

DSP5509用SPI配置AD9857求救,求分析问题

[复制链接]
1660|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
 MCBSP_Config Configclockstop8= {
  MCBSP_SPCR1_RMK(
    MCBSP_SPCR1_DLB_OFF,                   /* DLB    = 0 禁止数字回环*/
    MCBSP_SPCR1_RJUST_RZF,                 /* RJUST  = 0 接收数据符号拓展和调整方式*/
    MCBSP_SPCR1_CLKSTP_NODELAY,            /* 重要CLKSTP = 10 时钟停止模式 与CLKXP有关*/
    MCBSP_SPCR1_DXENA_NA,                  /* DXENA  = 0 DX引脚延时使能*/
    MCBSP_SPCR1_ABIS_DISABLE,              /* ABIS   = 0 关闭abis*/
    MCBSP_SPCR1_RINTM_RRDY,                /* RINTM  = 0 接收中断模式*/
    0,                                     /* RSYNCER = 0 接收帧同步错误标志*/
    MCBSP_SPCR1_RRST_DISABLE               /* RRST   = 0 接收器复位*/
  ),
    MCBSP_SPCR2_RMK(
    MCBSP_SPCR2_FREE_NO,                   /* FREE   = 0 */
    MCBSP_SPCR2_SOFT_NO,                   /* SOFT   = 0 */
    MCBSP_SPCR2_FRST_RESET,                /* FRST   = 0 */
    MCBSP_SPCR2_GRST_RESET,                /* GRST   = 0 */
    MCBSP_SPCR2_XINTM_XRDY,                /* XINTM  = 0 */
    0,                                     /* XSYNCER = N/A */
    MCBSP_SPCR2_XRST_DISABLE               /* XRST   = 0 */
   ),
  MCBSP_RCR1_RMK(
  MCBSP_RCR1_RFRLEN1_OF(0),                /* RFRLEN1 = 0 帧长为一字*/
  MCBSP_RCR1_RWDLEN1_16BIT                 /* RWDLEN1 = 0 每字为8bite*/
  ),
MCBSP_RCR2_RMK(   
    MCBSP_RCR2_RPHASE_SINGLE,              /* RPHASE  = 0 模式一:只与RCR1有关*/
    MCBSP_RCR2_RFRLEN2_OF(0),              /* RFRLEN2 = 0 */
    MCBSP_RCR2_RWDLEN2_8BIT,               /* RWDLEN2 = 0 */
    MCBSP_RCR2_RCOMPAND_MSB,               /* RCOMPAND = 0 非压缩模式*/
    MCBSP_RCR2_RFIG_YES,                    /* 重要RFIG    = 0 忽略错误的帧同步信号 */
    MCBSP_RCR2_RDATDLY_1BIT                /* RDATDLY = 1 延时1bit*/
    ),  
   MCBSP_XCR1_RMK(   
    MCBSP_XCR1_XFRLEN1_OF(0),              /* XFRLEN1 = 0 帧长为一字*/
    MCBSP_XCR1_XWDLEN1_16BIT               /* XWDLEN1 = 0 每字8bite*/
   
),   
MCBSP_XCR2_RMK(   
   MCBSP_XCR2_XPHASE_SINGLE,              /* XPHASE  = 0 模式一:帧长只与XCR1有关*/
    MCBSP_XCR2_XFRLEN2_OF(0),              /* XFRLEN2 = 0 */
    MCBSP_XCR2_XWDLEN2_8BIT,               /* XWDLEN2 = 0 */
    MCBSP_XCR2_XCOMPAND_MSB,               /* XCOMPAND = 0 不拓展*/
    MCBSP_XCR2_XFIG_YES,                   /* 重要XFIG    = 0 忽略错误的帧同步信号*/
    MCBSP_XCR2_XDATDLY_1BIT                /* XDATDLY =1 发送数据延时1bit*/
  ),            
MCBSP_SRGR1_RMK(
   MCBSP_SRGR1_FWID_OF(0),                /* 停止模式无效**重要FWID    = 0 帧同步信号的脉宽周期数*/
   MCBSP_SRGR1_CLKGDV_OF(11)               /* 停止模式无效**重要CLKGDV  =9 CLKG时钟频率*/
),   
MCBSP_SRGR2_RMK(  
    0,//MCBSP_SRGR2_GSYNC_FREE,                /* FREE    = 0 内部时钟帧同步 */
    MCBSP_SRGR2_CLKSP_RISING,              /* 重要CLKSP   = 0 CLKS 引脚极性*/
    MCBSP_SRGR2_CLKSM_INTERNAL,            /* 重要CLKSM   = 1 cpu时钟*/
    MCBSP_SRGR2_FSGM_DXR2XSR,              /* FSGM    = 0 发送帧同步模式,如果FXSM=1,当DXR->XSR时,McBSP产生帧同步信号*/
    MCBSP_SRGR2_FPER_OF(15)    /*重要 FPER    = 0 FSG信号帧同步时钟周期数,应该是7*/
),  
MCBSP_MCR1_DEFAULT,
MCBSP_MCR2_DEFAULT,
MCBSP_PCR_RMK(
   MCBSP_PCR_IDLEEN_RESET,                 /* IDLEEN   = 0   省电使能*/
   MCBSP_PCR_XIOEN_SP,                     /* XIOEN    = 0   发送GPIO使能*/
   MCBSP_PCR_RIOEN_SP,                     /* RIOEN    = 0   接收GPIO使能*/
   MCBSP_PCR_FSXM_INTERNAL,                /* 重要FSXM     = 1  发送帧同步模式,0由FSX引脚提供,1由McBSP提供*/
   MCBSP_PCR_FSRM_INTERNAL,                /* 重要FSRM     = 1   接收帧同步模式,0由FSR引脚提供,1由McBSP提供*/
   MCBSP_PCR_CLKXM_OUTPUT,                 /* 关键CLKXM = 1   主从模式*/
   MCBSP_PCR_CLKRM_INPUT,                  /* 关键CLKRM  = 0   主从模式*/
   MCBSP_PCR_SCLKME_NO,                    /* SCLKME   = 0   与CLKSM配合使用,cpu时钟模式*/
   0,                                      /* DXSTAT = N/A   DX引脚上的电平*/
MCBSP_PCR_FSXP_ACTIVELOW,              /* 重要FSXP     = 0   发送帧同步极性,0正极性,1负极性*/
   MCBSP_PCR_FSRP_ACTIVELOW,              /* 重要FSRP     = 0   接收帧同步极性,0正极性,1负极性*/
   MCBSP_PCR_CLKXP_RISING,                 /* 重要CLKXP   = 0   发送时钟极性,0正极性,1负极性*/
   MCBSP_PCR_CLKRP_RISING  //MCBSP_PCR_CLKRP_FALLING                 /* 重要CLKRP   = 0   接收时钟极性,0正极性,CLKR引脚上的上升沿,产生CLKG的上升沿,1负极性*/
),
MCBSP_RCERA_DEFAULT,
MCBSP_RCERB_DEFAULT,
MCBSP_RCERC_DEFAULT,
MCBSP_RCERD_DEFAULT,
MCBSP_RCERE_DEFAULT,
MCBSP_RCERF_DEFAULT,
MCBSP_RCERG_DEFAULT,
MCBSP_RCERH_DEFAULT,
MCBSP_XCERA_DEFAULT,
MCBSP_XCERB_DEFAULT,
MCBSP_XCERC_DEFAULT,
MCBSP_XCERD_DEFAULT,  
MCBSP_XCERE_DEFAULT,
MCBSP_XCERF_DEFAULT,  
MCBSP_XCERG_DEFAULT,
MCBSP_XCERH_DEFAULT
};      
这是我的MCBSP配置为SPI
这是写寄存器语句
  while(!MCBSP_xrdy(mhMcbsp));
        MCBSP_write16(mhMcbsp,0x0610);
现在问题是在示波器里面能观察到一帧16个脉冲上升沿的SCLK时钟,也进去的16bit数据也是跟上升沿脉冲先对应,但是AD9857却没有相应的效果出来
其次,我要读AD9857里的数据读出来一直是零,是不是我时序有问题?或者其他什么问题?求帮帮忙看看
这是AD9857的时序图,
AD9857_b.pdf (592.63 KB)



相关帖子

沙发
zhangmangui| | 2015-1-12 22:31 | 只看该作者
首先用示波器看看CS和SCLK的波形   这两个应该问题不大
但是重要的就是SCLK的周期  这个要看看手册里面最小周期是多少   频率不能高于它   不然没响应
接下来就是你送入的INSTRUCTION    不知是否合适   SDIO是双向口吧    既要输出  还有读入

使用特权

评论回复
板凳
wushaojay|  楼主 | 2015-1-12 23:38 | 只看该作者
zhangmangui 发表于 2015-1-12 22:31
首先用示波器看看CS和SCLK的波形   这两个应该问题不大
但是重要的就是SCLK的周期  这个要看看手册里面最 ...

谢谢版主,MCBSP配置的是单段帧,一帧一个字,是16bit。前八个数据为指令周期,后八个为数据周期,但现在仔细看了,AD9857一个通信周期好像十七个上升沿,指令周期和数据周期直接有一个闲置时钟,这个我该如何配置呢?
还有我现在只会写数据,读寄存器我不会写,他的时序图是先写指令,再读数据,那么请问在一帧的周期里可以去读写同时吗?怎么操作?直接写?真心求教版主 大人帮忙分分析分析

使用特权

评论回复
地板
wushaojay|  楼主 | 2015-1-12 23:44 | 只看该作者
zhangmangui 发表于 2015-1-12 22:31
首先用示波器看看CS和SCLK的波形   这两个应该问题不大
但是重要的就是SCLK的周期  这个要看看手册里面最 ...

SCLK最小时钟周期100ns,这点我是配置了的。
是不是我串行通信频率工作低一点好?比如我设置到5MHZ,时钟周期200ns

使用特权

评论回复
5
zhangmangui| | 2015-1-13 22:25 | 只看该作者
wushaojay 发表于 2015-1-12 23:44
SCLK最小时钟周期100ns,这点我是配置了的。
是不是我串行通信频率工作低一点好?比如我设置到5MHZ,时钟 ...

不要超过手册的值就好   如果对读写速度没有很高要求的话   
低了可能稳定些

使用特权

评论回复
6
zhangmangui| | 2015-1-13 22:29 | 只看该作者
wushaojay 发表于 2015-1-12 23:38
谢谢版主,MCBSP配置的是单段帧,一帧一个字,是16bit。前八个数据为指令周期,后八个为数据周期,但现在 ...

我觉得怎么有些困难啊    你说的空闲时钟  我觉得不影响吧   
连续送  只用上升沿个数够了就行
我想知道SDIO怎么实现

使用特权

评论回复
7
wushaojay|  楼主 | 2015-1-13 22:38 | 只看该作者
zhangmangui 发表于 2015-1-13 22:29
我觉得怎么有些困难啊    你说的空闲时钟  我觉得不影响吧   
连续送  只用上升沿个数够了就行
我想知道 ...

SDIO接到是DX0引脚,SDO接的是DR0引脚。然后FSR0和FSX0引脚接一起,然后接SYNCIO,CLKX0和CLKR0接一起然后接SCLK。我今天发先。我不把FSX0和FSR0接一起,他们都是有帧信号输出,而且两个帧脉冲有延迟。  说明下,AD9857的CS引脚是一直拉低的。SYNCIO是串行通信周期同步引脚。

使用特权

评论回复
8
wushaojay|  楼主 | 2015-1-13 22:40 | 只看该作者
zhangmangui 发表于 2015-1-13 22:29
我觉得怎么有些困难啊    你说的空闲时钟  我觉得不影响吧   
连续送  只用上升沿个数够了就行
我想知道 ...

上面的时序图不全,方便的话可以看下芯片手册

使用特权

评论回复
9
zhangmangui| | 2015-1-13 22:58 | 只看该作者
wushaojay 发表于 2015-1-13 22:40
上面的时序图不全,方便的话可以看下芯片手册

http://www.deyisupport.com/question_answer/dsp_arm/c5000/f/48/t/46860.aspx?pi239031347=1

使用特权

评论回复
10
wushaojay|  楼主 | 2015-1-14 15:58 | 只看该作者

现在可以读出数据了,但是新的问题来了,
   while(!MCBSP_xrdy(mhMcbsp));
        MCBSP_write16(mhMcbsp,0x00a4);
                  while(!MCBSP_xrdy(mhMcbsp));
        MCBSP_write16(mhMcbsp,0x0144);
                        while(!MCBSP_xrdy(mhMcbsp));
        MCBSP_write16(mhMcbsp,0x0540);
while(1)
{

                 while(!MCBSP_xrdy(mhMcbsp));
                MCBSP_write16(mhMcbsp,0x85a2);
                while(!MCBSP_rrdy(mhMcbsp));

                a=MCBSP_read16(mhMcbsp); //读寄存器中的值
                  printf("a=0x%x\n",a);
                 while(!MCBSP_xrdy(mhMcbsp));
                MCBSP_write16(mhMcbsp,0x80a2);
                while(!MCBSP_rrdy(mhMcbsp));
                b=MCBSP_read16(mhMcbsp); //读寄存器中的值
                  printf("b=0x%x\n",b);

}
这是我的程序,我读之前需要先配置寄存器,所以之前因为没有配置,而读不成功的。  但现在虽然可以读,但如果只读一次的话还是0,循环读,才能有输出读出来
这是CCS中的输出,前几个读出来都是零,只有后面才是正确的,这是什么元婴呢


使用特权

评论回复
11
麻烦网站| | 2017-8-4 22:52 | 只看该作者
zhangmangui 发表于 2015-1-13 22:58
http://www.deyisupport.com/question_answer/dsp_arm/c5000/f/48/t/46860.aspx?pi239031347=1

大哥,我想问一下,我现在使用两个McBSP,但是经过测定,示波器显示的只有一个有时钟信号输出,另一个没有,如何才能使他俩都同时工作?

使用特权

评论回复
12
zhangmangui| | 2017-8-7 20:47 | 只看该作者
麻烦网站 发表于 2017-8-4 22:52
大哥,我想问一下,我现在使用两个McBSP,但是经过测定,示波器显示的只有一个有时钟信号输出,另一个没 ...

这两个应该是独立的。你再检查一下配置

使用特权

评论回复
13
麻烦网站| | 2017-8-15 20:10 | 只看该作者
zhangmangui 发表于 2017-8-7 20:47
这两个应该是独立的。你再检查一下配置

我把两个McBSP配置的一样,我只用到发送数据,查了很多资料,说他们不能同时工作,然后我就使用中断,避开这个问题,但是加上中断后,依然只有一个正常工作。这里的正常工作,是用示波器测试引脚输出波形,只有一个输出的波形正确,而另一个只有一个电压信号

使用特权

评论回复
14
麻烦网站| | 2017-8-16 10:39 | 只看该作者
zhangmangui 发表于 2017-8-7 20:47
这两个应该是独立的。你再检查一下配置

如果两个MCBSP同时配置成SPI,在配置寄存器时,有没有需要哪些注意事项??

使用特权

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

本版积分规则

13

主题

69

帖子

2

粉丝