4943|4

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

以下是McBSP的程序,以实现异步串口 [复制链接]

以下是McBSP的程序,以实现异步串口,主要是调试出DSP(TMS320C5410)发送数据,

但是用示波器或是串口调试助手都看不到数据,请高人指点一二,多谢!

 

 

#include <stdio.h>
#include <stdlib.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_mcbsp.h>

/*----------------------------------------------------------------------------*/ 
//#include <memory.h>
//#include "reg.h"
interrupt void myISP(void);//声明所有用到的函数原型 
//void taskFunc(void);
int x=1,y=0,z=0;
#define N 20     
Uint16 xmt[N];
/*----------------------------------------------------------------------------*/

static MCBSP_Config ConfigLoopBack16= {
   MCBSP_SPCR1_RMK(
     MCBSP_SPCR1_DLB_OFF,                    /* DLB    = 1 */
     MCBSP_SPCR1_RJUST_RZF,                 /* RJUST  = 0 */
     MCBSP_SPCR1_CLKSTP_NODELAY,            /* CLKSTP = 0 */
     MCBSP_SPCR1_DXENA_OFF,                  /* DXENA  = 0 */
     MCBSP_SPCR1_ABIS_DEFAULT,              /* ABIS   = 0 */
     MCBSP_SPCR1_RINTM_RRDY,                /* RINTM  = 0 */
     MCBSP_SPCR1_RRST_DISABLE               /* RRST   = 0 */
   ),
   MCBSP_SPCR2_RMK(
     MCBSP_SPCR2_FREE_YES,                   /* FREE   = 0 */
     MCBSP_SPCR2_SOFT_YES,                   /* SOFT   = 0 */
     MCBSP_SPCR2_FRST_RESET,                 /* FRST   = 1 */
     MCBSP_SPCR2_GRST_RESET,                 /* GRST   = 1 */
     MCBSP_SPCR2_XINTM_XRDY,                /* XINTM  = 0 */
     MCBSP_SPCR2_XRST_ENABLE               /* XRST   = 1 */
   ),
   MCBSP_RCR1_RMK(
    0,                                      /* RFRLEN1 = 0 */
    2                                       /* RWDLEN1 = 5 */
   ),
   MCBSP_RCR2_RMK(   
     MCBSP_RCR2_RPHASE_SINGLE,              /* RPHASE  = 0 */
     MCBSP_RCR2_RFRLEN2_OF(0),              /* RFRLEN2 = 0 */
     MCBSP_RCR2_RWDLEN2_8BIT,              /* RWDLEN2 = 2 */
     MCBSP_RCR2_RCOMPAND_MSB,               /* RCOMPAND = 0 */
     MCBSP_RCR2_RFIG_NO,                   /* RFIG    = 0 */
     MCBSP_RCR2_RDATDLY_0BIT                /* RDATDxmt = (((Uint16)(i+1)<<8) + (i+1));LY = 0 */
   ), 
   MCBSP_XCR1_RMK(
    MCBSP_XCR1_XFRLEN1_OF(20),              /* XFRLEN1 = 0 */
    MCBSP_XCR1_XWDLEN1_8BIT               /* XWDLEN1 = 5 */
   ),  
   MCBSP_XCR2_RMK(  
     MCBSP_XCR2_XPHASE_SINGLE,              /* XPHASE  = 0 */
     MCBSP_XCR2_XFRLEN2_OF(20),              /* XFRLEN2 = 0 */
     MCBSP_XCR2_XWDLEN2_8BIT,              /* XWDLEN2 = 2 */
     MCBSP_XCR2_XCOMPAND_MSB,               /* XCOMPAND = 0 */
     MCBSP_XCR2_XFIG_NO,                   /* XFIG    = 0 */
     MCBSP_XCR2_XDATDLY_1BIT                /* XDATDLY = 0 */
   ),           
   MCBSP_SRGR1_RMK(
     MCBSP_SRGR1_FWID_OF(1),                /* FWID    = 1 */
     MCBSP_SRGR1_CLKGDV_OF(1)               /* CLKGDV  = 1 */
   ),  
  MCBSP_SRGR2_RMK( 
     MCBSP_SRGR2_GSYNC_FREE,                /* FREE    = 0 */
     MCBSP_SRGR2_CLKSP_RISING,              /* CLKSP   = 0 */
     MCBSP_SRGR2_CLKSM_INTERNAL,            /* CLKSM   = 1 */
     MCBSP_SRGR2_FSGM_DXR2XSR,              /* FSGM    = 0 */
     MCBSP_SRGR2_FPER_OF(15)  /*?????*/              /* FPER    = 15 */
  ), 
  MCBSP_MCR1_DEFAULT,
  MCBSP_MCR2_DEFAULT,
  MCBSP_PCR_RMK(
    MCBSP_PCR_XIOEN_SP,                   /* XIOEN    = 0  */
    MCBSP_PCR_RIOEN_SP,                   /* RIOEN    = 0  */
    MCBSP_PCR_FSXM_INTERNAL,              /* FSXM     = 1  */
    MCBSP_PCR_FSRM_INTERNAL,              /* FSRM     = 0  */
    MCBSP_PCR_SCLKME_NO,                  /* SCLKME   = 0  */    
    MCBSP_PCR_CLKXM_OUTPUT,               /* CLKXM    = 1  */
    MCBSP_PCR_CLKRM_INPUT,                /* CLKRM    = 0  */
    MCBSP_PCR_FSXP_ACTIVEHIGH,            /* FSXP     = 0  */
    MCBSP_PCR_FSRP_ACTIVEHIGH,            /* FSRP     = 0  */
    MCBSP_PCR_CLKXP_RISING,               /* CLKXP    = 0  */
    MCBSP_PCR_CLKRP_RISING               /* CLKRP    = 0  */
  ),
  0x0000u,                                /* RCERA */
  0x0000u,                                /* RCERB */
  0x0000u,                                /* RCERC */
  0x0000u,                                /* RCERD */
  0x0000u,                                /* RCERE */
  0x0000u,                                /* RCERF */
  0x0000u,                                /* RCERG */
  0x0000u,                                /* RCERH */
  0x00FFu,                                /* XCERA */
  0x00FFu,                                /* XCERB */
  0x0000u,                                /* XCERC */
  0x0000u,                                /* XCERD */
  0x0000u,                                /* XCERE */
  0x0000u,                                /* XCERF */
  0x0000u,                                /* XCERG */
  0x0000u                                 /* XCERH */
};    


interrupt void myISP()
{
 MCBSP_Handle mhMcbsp;
 //  int xmt[N];
    int i;
 while (!IRQ_test(IRQ_EVT_INT0));

  for(i=0;i<=N-1;i++) {
    xmt = (((Uint16)(i+1)<<8) + (i+1));
  }


  mhMcbsp = MCBSP_open(MCBSP_PORT1, MCBSP_OPEN_RESET);
 
  MCBSP_config(mhMcbsp, &ConfigLoopBack16);
 
  MCBSP_start(mhMcbsp,
    MCBSP_XMIT_START,
    MCBSP_SAMPLE_RATE_DELAY_DEFAULT
  );

  while (!MCBSP_xrdy(mhMcbsp)) ;

  MCBSP_write16(mhMcbsp,xmt[0]);

  MCBSP_start(mhMcbsp,
    MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC,
    MCBSP_SAMPLE_RATE_DELAY_DEFAULT
  );
  
for (i=1; i<=N-1;i++) {
    while (!MCBSP_xrdy(mhMcbsp));      
    MCBSP_write16(mhMcbsp,xmt);      
  }

  MCBSP_close(mhMcbsp);
  puts("<DONE>");
  z=x+y;
  x=x+1;
}


main()

 //   MCBSP_Handle mhMcbsp;
 //  int xmt[N], rcv[N];

    CSL_init(); 
 IRQ_setVecs (0x6000);
    IRQ_plug(IRQ_EVT_INT0,&myISP);
    IRQ_enable(IRQ_EVT_INT0);
 printf("OK\n");

/*

 while (!IRQ_test(IRQ_EVT_INT0));

  for(i=0;i<=N-1;i++) {
    xmt = (((Uint16)(i+1)<<8) + (i+1));
  }


  mhMcbsp = MCBSP_open(MCBSP_PORT1, MCBSP_OPEN_RESET);
 
  MCBSP_config(mhMcbsp, &ConfigLoopBack16);
 
  MCBSP_start(mhMcbsp,
    MCBSP_XMIT_START,
    MCBSP_SAMPLE_RATE_DELAY_DEFAULT
  );

  while (!MCBSP_xrdy(mhMcbsp)) ;

  MCBSP_write16(mhMcbsp,xmt[0]);

  MCBSP_start(mhMcbsp,
    MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC,
    MCBSP_SAMPLE_RATE_DELAY_DEFAULT
  );
  
for (i=1; i<=N-1;i++) {
    while (!MCBSP_xrdy(mhMcbsp));      
    MCBSP_write16(mhMcbsp,xmt);      
  }

  MCBSP_close(mhMcbsp);
 // printf("%s\n",err?"TEST FAILED":"TEST PASSED");
  printf("OK\n");

*/
 IRQ_globalEnable();
//  taskFunc();
}

 

//////////////////////

 

最新回复

楼上的两个都打不开  详情 回复 发表于 2013-12-26 15:29
点赞 关注
 

回复
举报

8

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
问题其实就是怎么用软件方式,实现UART。
请抽空给我提示一下,高人勿潜水啦
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

4
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼上的两个都打不开
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表