Quantcast
Viewing all articles
Browse latest Browse all 25965

Forum Post: SIO_ready function never get true

I use:
Bios_5_42_01_09.
Ccsv6.
Edma3_lld_01_11_03_01.
Pspdrivers_01_30_00_05.
Xdctools_3_30_03_47_core.

Problem in string number 99.

I can get data from codec. I forever wait SIO_ready. It is not work when i use 2 or more buffers. When buffer is one it is all works.

I not use aic31 driver and audio driver, only mcasp.

Part of my code:

#define BUFLEN                  4096 #define BUFALIGN                128 #define NUM_BUFS                2  Uint8 buf[NUM_BUFS][BUFLEN]; extern Int edma3init(); extern EDMA3_DRV_Handle hEdma; extern Mcasp_ChanParams mcasp_chanparam;  Mcasp_HwSetupData mcaspRcvSetup = {         /* .rmask    = */ 0xFFFFFFFF, /* All the data bits are to be used     */         /* .rfmt     = */ 0x000180F0,         /* .afsrctl  = */ 0x00000110, /* burst mode,                                        * Frame sync is one bit                                        * Rising edge is start of frame                                        * externally generated frame sync                                        */         /* .rtdm     = */ 0x00000003, /* slot 1 is active (DSP)               */         /* .rintctl  = */ 0x00000000, /* sync error and overrun error         */         /* .rstat    = */ 0x00000050, /* reset any existing status bits       */         /* .revtctl  = */ 0x00000000, /* DMA request is enabled or disabled   */         {              /* .aclkrctl  = */ 0x00000020,              /* .ahclkrctl = */ 0x00008000,              /* .rclkchk   = */ 0x00FF0000         } } ;  Mcasp_ChanParams  mcasp_chanparam = {         0x0001,                    /* number of serialisers      */         {Mcasp_SerializerNum_12, }, /* serialiser index           */         &mcaspRcvSetup,         TRUE,         Mcasp_OpMode_TDM,          /* Mode (TDM/DIT)             */         Mcasp_WordLength_32,         NULL,         0,         NULL,         NULL,         2,                        /* number of TDM channels      */         Mcasp_BufferFormat_1SER_MULTISLOT_INTERLEAVED,         TRUE,         TRUE };  void audioUserMcaspInit(){   /* power on the Mcasp 1 instance in the PSC  */   Psc_ModuleClkCtrl(Psc_DevId_1, CSL_PSC_MCASP1, TRUE);    Mcasp_init();   mcasp0Params = Mcasp_PARAMS;   mcasp0Params.hwiNumber = 8;   mcasp0Params.enablecache = TRUE;   mcasp0Params.mcaspHwSetup.glb.pfunc = 0x0200E7FF;     mcasp0Params.mcaspHwSetup.glb.pdir = 0x08000800;    mcasp0Params.mcaspHwSetup.glb.ctl = 0x00001F1E;      mcasp0Params.mcaspHwSetup.rx.fmt = 0x000180F0;   mcasp0Params.mcaspHwSetup.rx.frSyncCtl = 0x00000110;   mcasp0Params.mcaspHwSetup.rx.tdm = 0x00000000;   mcasp0Params.mcaspHwSetup.rx.stat = 0x000001ff;   mcasp0Params.mcaspHwSetup.rx.clk.clkSetupClk = 0x00000020;   mcasp0Params.mcaspHwSetup.rx.clk.clkSetupHiClk = 0x00008000;   mcasp0Params.mcaspHwSetup.rx.clk.clkChk = 0x00FF0000;    mcasp0Params.mcaspHwSetup.tx.fmt = 0x000180F0;   mcasp0Params.mcaspHwSetup.tx.frSyncCtl = 0x00000110;   mcasp0Params.mcaspHwSetup.tx.tdm = 0x00000003;   mcasp0Params.mcaspHwSetup.tx.stat = 0x00000050;   mcasp0Params.mcaspHwSetup.tx.clk.clkSetupClk = 0x00000080;   mcasp0Params.mcaspHwSetup.tx.clk.clkSetupHiClk = 0x00008000;   mcasp0Params.mcaspHwSetup.tx.clk.clkChk = 0xEFFF0000;  }  static void createStreams(){   SIO_Attrs sioAttrs;   sioAttrs = SIO_ATTRS;   sioAttrs.nbufs = NUM_BUFS;   sioAttrs.align = BUFALIGN;   sioAttrs.model = SIO_ISSUERECLAIM;   mcasp_chanparam.edmaHandle = hEdma;   inStream = SIO_create("/dioMcaspIN", SIO_INPUT, BUFLEN, &sioAttrs); }  extern LOG_Obj trace; void i2s_test(){   edma3init();   codec_init_aic32(PCM_16,SR_48000);   EnablePinResetCodec();   createStreams();   Int count;   for(count = 0; count < NUM_BUFS; count++)     if(SYS_OK != SIO_issue(inStream, (Ptr) buf[count], BUFLEN, NULL))       LOG_printf(&trace, "Error issue\n");   Ptr rcv;   while(1){    if(SIO_ready(inStream))     if(SYS_OK == SIO_reclaim(inStream, (Ptr *)&rcv, NULL))       if(SYS_OK != SIO_issue(inStream, rcv, BUFLEN, NULL))         LOG_printf(&trace, "Error issue\n");   }   return; }  

/*-------------------------------------------------------------------------------------------------------------------------

bios.UDEV.create("mcasp0");
bios.UDEV.instance("mcasp0").fxnTableType = "IOM_Fxns";
bios.UDEV.instance("mcasp0").initFxn = prog.extern("audioUserMcaspInit");
bios.UDEV.instance("mcasp0").params = prog.extern("mcasp0Params");
bios.UDEV.instance("mcasp0").fxnTable = prog.extern("Mcasp_IOMFXNS");
bios.UDEV.instance("mcasp0").deviceId = 0;


var dioCodec = bios.DIO.create("dioMcaspIN");
dioCodec.deviceName = prog.get("mcasp0");
dioCodec.useCallBackFxn = false;
dioCodec.chanParams = prog.extern("mcasp_chanparam");

Please help.


Viewing all articles
Browse latest Browse all 25965

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>