Reply by Richard Williams July 12, 20102010-07-12
Wave,

What I'm trying to say is that the EMIF registers need to be properly setup.
Just writing to some address in the memory mapped range of the EMIF will not
have any effect with out first setting up the EMIF registers.
Even with the EMIF registers properly setup, any data event on the interface
occurs at CPU cycle speeds and needs to have the properly control/status signal
response.
This interface is for memory mapped flash and memory mapped ram, etc. not for
use as a peripheral I/O port.

R. Williams

---------- Original Message -----------
From: Wave Waves
To: Richard Williams , c...
Sent: Sat, 10 Jul 2010 23:08:31 -0700 (PDT)
Subject: Re: [c6x] C6713 DSK _ OUTPUTING VIA EMIF

> Dear Williams,
> I had read the spru266e , spra568a , spra733 , spru401j , spru971c ,
> spru984b month ago. I tryied a lot to make low level (zero voltage) on
> EMIF port, but I couldn't ! please help me as always :d do you mean i
> should drive edma registers defore emif !!!
> >
> > Yours Sincerely,
> > wAVe
> >
>
> --- On Sat, 7/10/10, Richard Williams wrote:
>
> From: Richard Williams
> Subject: [c6x] Re: C6713 DSK _ OUTPUTING VIA EMIF
> To: "Wave Waves" , c...
> Date: Saturday, July 10, 2010, 9:35 PM
>
>
>
> wave,
>
> the EMIF interface is not a set and hold type of interface.
>
> I would suggest reading SPRU266E.pdf
> "TMS320C6000 DSP External Memory Interface".
>
> ---------- Original Message -----------
> From: Wave Waves
> To: r...@lewiscounty.com, c...
> Sent: Sat, 10 Jul 2010 11:39:48 -0700 (PDT)
> Subject: C6713 DSK _ OUTPUTING VIA EMIF
>
> > Dear Williams,
> > As we discussed about driving EMIF before,
> > I tested lots of solutions and prgrams from making an uotput via EMIF .
> > ***
> >
> >
> > //EMIF.c Illustrates output through EMIF 80-pin connector J4
> > #define OUTPUT 0xA0000000//EMIF output address (CE_2 address)
> > int *output = (int *)OUTPUT;
> > void main()
> > {
> > *output = 0x00000001;//outputs 0x1 to EMIF bus
> > }
> >
> >
> >
> > ***
> >
> > Here are the total solutions :
> >
> > 1.writing an asembely within C code like .sect and define 0xA0000000
> > address in cmd file for this section.
> > 2.using dsp bios for 6713dsk and driving EMIF registers via EMIF
> > manger in cdb file.
> > 3.the simpleset solution by initialing the EMIF for 6713 dsk on the
> > main as below : (I also attach you this fullproject,please take a
> > look): I don't see any error or warning for this code but just can not
> > makeany low state (zero voltage)on EMIF 80 pins connector.
> > seriously, how can we write our value to EMIF port/connector
> > ?!!!!!!!!! none of them works practically !!!!!!!!! // main.c
> *******************
> >
> > /* Functional Dependencies */
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> >
> > #include "dsk6713.h"
> > #include "DSK6713_AIC23.h"//codec-DSK support file
> > Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
> > #define DSK6713_AIC23_INPUT_MIC 0x0015
> > #define DSK6713_AIC23_INPUT_LINE 0x0011
> > Uint16 inputsource=DSK6713_AIC23_INPUT_MIC;
> > // EMIF DEFINES: [UTF-8?][UTF-8?]***† SDEXT available only on
C621x/C671x devices.
> > #define EMIF_GCR 0x01800000/* EMIF global control */
> > #define EMIF_CE0 0x01800008 /* EMIF CE0control */
> > #define EMIF_CE10x01800004/* EMIF CE1 control */
> > #define EMIF_CE2 0x01800010
> > #define EMIF_CE3 0x01800014
> > #define EMIF_SDCTRL 0x01800018 /* EMIF SDRAM control */
> > #define EMIF_SDRP 0x0180001c /* EMIF SDRM refresh period */
> > #define EMIF_SDRAMEXT 0x01800020
> >
> > //****************
> > /* definitions for the DSK */
> > #define IO_PORT 0x90080000 /* address of I/O port, only top byte has valid
> data */
> > //********************
> > /*
> > * ======== main =======> > */
> > #define OUTPUT 0xA0000000//EMIF output address
> > int *output = (int *)OUTPUT;
> >
> > void main(void)
> > {
> > /* Initializations */
> > emif_init();
> > comm_intr();
> > while (1)
> > {
> > *output = 0x0000000F;//outputs 0x1 to EMIF bus
> > }
> >
> > }
> >
> >
> >
> >
> > =================> > ===============> >
> > Yours Sincerely,
> > wAVe
> >
> ------- End of Original Message -------
------- End of Original Message -------

_____________________________________
Reply by Michael Dunn July 12, 20102010-07-12
Wave,


The EMIF is a bus that is suitable for connecting to a port, it is NOT a
port.

That being said, you should be able to connect a logic analyzer to the data
lines, qualify the capture with CE2 low, and clock the data with AWE.

The default EMIF initialization provided by the DSK GEL file should work.
The key initialization for CE2 space is:
write 0x22a28a22 [CE2 Daughtercard 32-bit async] to addr 0x01800010
[EMIF_CE2]

Use a simple test loop - it can be written in C or assembly code.
write 2 patterns [0xAAAAAAAA & 0x55555555 will work] to 0xA0000000 in an
infinite loop.

Hook up the logic analyzer to CE2, AWE, ED0, ED1, ED2, and ED3 to test. Once
you get everything working, you can hook up the remaining data lines.

mikedunn
On Sun, Jul 11, 2010 at 1:08 AM, Wave Waves wrote:

> Dear Williams,
> I had read the spru266e , spra568a , spra733 , spru401j , spru971c ,
> spru984b month ago.
> I tryied a lot to make low level (zero voltage) on EMIF port, but I
> couldn't !
> please help me as always :d
> do you mean i should drive edma registers defore emif !!!
> >
> > Yours Sincerely,
> > wAVe
> > --- On *Sat, 7/10/10, Richard Williams * wrote:
> From: Richard Williams
> Subject: [c6x] Re: C6713 DSK _ OUTPUTING VIA EMIF
> To: "Wave Waves" , c...
> Date: Saturday, July 10, 2010, 9:35 PM
>
> wave,
>
> the EMIF interface is not a set and hold type of interface.
>
> I would suggest reading SPRU266E.pdf
> "TMS320C6000 DSP External Memory Interface".
>
> ---------- Original Message -----------
> From: Wave Waves
> >
> To: r...@lewiscounty.com,
> c...
> Sent: Sat, 10 Jul 2010 11:39:48 -0700 (PDT)
> Subject: C6713 DSK _ OUTPUTING VIA EMIF
>
> > Dear Williams,
> > As we discussed about driving EMIF before,
> > I tested lots of solutions and prgrams from making an uotput via EMIF .
> > ***
> >
> >
> > //EMIF.c Illustrates output through EMIF 80-pin connector J4
> > #define OUTPUT 0xA0000000 //EMIF output address (CE_2 address)
> > int *output = (int *)OUTPUT;
> > void main()
> > {
> > *output = 0x00000001; //outputs 0x1 to EMIF bus
> > }
> >
> >
> >
> > ***
> >
> > Here are the total solutions :
> >
> > 1.writing an asembely within C code like .sect and define 0xA0000000
> > address in cmd file for this section.
> > 2.using dsp bios for 6713dsk and driving EMIF registers via EMIF
> > manger in cdb file.
> > 3.the simpleset solution by initialing the EMIF for 6713 dsk on the
> > main as below : (I also attach you this full project,please take a
> > look): I don't see any error or warning for this code but just can not
> > make any low state (zero voltage) on EMIF 80 pins connector.
> > seriously, how can we write our value to EMIF port/connector
> > ?!!!!!!!!! none of them works practically !!!!!!!!! // main.c
> *******************
> >
> > /* Functional Dependencies */
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> > #include
> >
> > #include "dsk6713.h"
> > #include "DSK6713_AIC23.h" //codec-DSK support file
> > Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
> > #define DSK6713_AIC23_INPUT_MIC 0x0015
> > #define DSK6713_AIC23_INPUT_LINE 0x0011
> > Uint16 inputsource=DSK6713_AIC23_INPUT_MIC;
> > // EMIF DEFINES: [UTF-8?]*** SDEXT available only on C621x/C671x
> devices.
> > #define EMIF_GCR 0x01800000 /* EMIF global control */
> > #define EMIF_CE0 0x01800008 /* EMIF CE0control */
> > #define EMIF_CE1 0x01800004 /* EMIF CE1 control */
> > #define EMIF_CE2 0x01800010
> > #define EMIF_CE3 0x01800014
> > #define EMIF_SDCTRL 0x01800018 /* EMIF SDRAM control */
> > #define EMIF_SDRP 0x0180001c /* EMIF SDRM refresh period */
> > #define EMIF_SDRAMEXT 0x01800020
> >
> > //****************
> > /* definitions for the DSK */
> > #define IO_PORT 0x90080000 /* address of I/O port, only top byte has
> valid
> data */
> > //********************
> > /*
> > * ======== main =======> > */
> > #define OUTPUT 0xA0000000 //EMIF output address
> > int *output = (int *)OUTPUT;
> >
> > void main(void)
> > {
> > /* Initializations */
> > emif_init();
> > comm_intr();
> > while (1)
> > {
> > *output = 0x0000000F; //outputs 0x1 to EMIF bus
> > }
> >
> > }
> >
> >
> >
> >
> > =================> > ===============> >
> > Yours Sincerely,
> > wAVe
> >
> ------- End of Original Message -------
>
>

--
www.dsprelated.com/blogs-1/nf/Mike_Dunn.php
Reply by Wave Waves July 12, 20102010-07-12
Dear Williams,
I had read the spru266e , spra568a , spra733 , spru401j , spru971c , spru984b month ago.
I tryied a lot to make low level (zero voltage) on EMIF port, but I couldn't !
please help me as always :d
do you mean i should drive edma registers defore emif !!!
>  
> Yours Sincerely,
>  wAVe
>  

--- On Sat, 7/10/10, Richard Williams wrote:
From: Richard Williams
Subject: [c6x] Re: C6713 DSK _ OUTPUTING VIA EMIF
To: "Wave Waves" , c...
Date: Saturday, July 10, 2010, 9:35 PM
 

wave,

the EMIF interface is not a set and hold type of interface.

I would suggest reading SPRU266E.pdf
"TMS320C6000 DSP External Memory Interface".

---------- Original Message -----------
From: Wave Waves
To: r...@lewiscounty.com, c...
Sent: Sat, 10 Jul 2010 11:39:48 -0700 (PDT)
Subject: C6713 DSK _ OUTPUTING VIA EMIF

> Dear Williams,
> As we discussed about driving EMIF before,
> I tested lots of solutions and prgrams from making an uotput via EMIF .
> ***
>  
>  
> //EMIF.c Illustrates output through EMIF 80-pin connector J4
> #define OUTPUT 0xA0000000    //EMIF output address (CE_2 address)
> int *output = (int *)OUTPUT;
> void main()
> {
>  *output = 0x00000001;    //outputs 0x1 to EMIF bus
> }
>  
>  
>  
> ***
>  
> Here are the total solutions :
>
> 1.writing an asembely within C code like .sect and define 0xA0000000
> address in cmd file for this section.  
> 2.using dsp bios for 6713dsk and driving EMIF registers via EMIF
> manger in cdb file.  
> 3.the simpleset solution by initialing the EMIF for 6713 dsk on the
> main as below : (I also attach you this full project,please take a
> look): I don't see any error or warning for this code but just can not
> make any low state (zero voltage) on EMIF 80 pins connector.  
> seriously, how can we write our value to EMIF port/connector
> ?!!!!!!!!! none of them works practically !!!!!!!!!     // main.c
*******************
>
> /* Functional Dependencies */
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include #include "dsk6713.h"
> #include "DSK6713_AIC23.h"  //codec-DSK support file
> Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
> #define DSK6713_AIC23_INPUT_MIC 0x0015
> #define DSK6713_AIC23_INPUT_LINE 0x0011
> Uint16 inputsource=DSK6713_AIC23_INPUT_MIC;
> // EMIF DEFINES: [UTF-8?]***† SDEXT available only on C621x/C671x devices.
> #define EMIF_GCR   0x01800000 /* EMIF global control      */
> #define EMIF_CE0     0x01800008  /* EMIF CE0control          */
> #define EMIF_CE1  0x01800004 /* EMIF CE1 control         */
> #define EMIF_CE2        0x01800010
> #define EMIF_CE3        0x01800014
> #define EMIF_SDCTRL  0x01800018  /* EMIF SDRAM control       */
> #define EMIF_SDRP    0x0180001c  /* EMIF SDRM refresh period */
> #define EMIF_SDRAMEXT   0x01800020
>  
>  //****************
> /* definitions for the DSK */
> #define IO_PORT 0x90080000   /* address of I/O port, only top byte has valid
data */
> //********************
> /*
>  *  ======== main =======>  */
>  #define OUTPUT 0xA0000000    //EMIF output address
> int *output = (int *)OUTPUT;
>
> void main(void)
> {
>   /* Initializations */
>   emif_init();
>   comm_intr();
> while (1)
> {
>  *output = 0x0000000F;    //outputs 0x1 to EMIF bus
> }
>  
> }
>  
>  
>  
>  
> =================> ===============>  
> Yours Sincerely,
>  wAVe
>  
------- End of Original Message -------
Reply by Richard Williams July 10, 20102010-07-10
wave,

the EMIF interface is not a set and hold type of interface.

I would suggest reading SPRU266E.pdf
"TMS320C6000 DSP External Memory Interface".

---------- Original Message -----------
From: Wave Waves
To: r...@lewiscounty.com, c...
Sent: Sat, 10 Jul 2010 11:39:48 -0700 (PDT)
Subject: C6713 DSK _ OUTPUTING VIA EMIF

> Dear Williams,
> As we discussed about driving EMIF before,
> I tested lots of solutions and prgrams from making an uotput via EMIF .
> ***
>
>
> //EMIF.c Illustrates output through EMIF 80-pin connector J4
> #define OUTPUT 0xA0000000//EMIF output address (CE_2 address)
> int *output = (int *)OUTPUT;
> void main()
> {
> *output = 0x00000001;//outputs 0x1 to EMIF bus
> }
>
>
>
> ***
>
> Here are the total solutions :
>
> 1.writing an asembely within C code like .sect and define 0xA0000000
> address in cmd file for this section.
> 2.using dsp bios for 6713dsk and driving EMIF registers via EMIF
> manger in cdb file.
> 3.the simpleset solution by initialing the EMIF for 6713 dsk on the
> main as below : (I also attach you this fullproject,please take a
> look): I don't see any error or warning for this code but just can not
> makeany low state (zero voltage)on EMIF 80 pins connector.
> seriously, how can we write our value to EMIF port/connector
> ?!!!!!!!!! none of them works practically !!!!!!!!! // main.c
*******************
>
> /* Functional Dependencies */
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include #include "dsk6713.h"
> #include "DSK6713_AIC23.h"//codec-DSK support file
> Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
> #define DSK6713_AIC23_INPUT_MIC 0x0015
> #define DSK6713_AIC23_INPUT_LINE 0x0011
> Uint16 inputsource=DSK6713_AIC23_INPUT_MIC;
> // EMIF DEFINES: [UTF-8?]***† SDEXT available only on C621x/C671x devices.
> #define EMIF_GCR 0x01800000/* EMIF global control */
> #define EMIF_CE0 0x01800008 /* EMIF CE0control */
> #define EMIF_CE10x01800004/* EMIF CE1 control */
> #define EMIF_CE2 0x01800010
> #define EMIF_CE3 0x01800014
> #define EMIF_SDCTRL 0x01800018 /* EMIF SDRAM control */
> #define EMIF_SDRP 0x0180001c /* EMIF SDRM refresh period */
> #define EMIF_SDRAMEXT 0x01800020
>
> //****************
> /* definitions for the DSK */
> #define IO_PORT 0x90080000 /* address of I/O port, only top byte has valid
data */
> //********************
> /*
> * ======== main =======> */
> #define OUTPUT 0xA0000000//EMIF output address
> int *output = (int *)OUTPUT;
>
> void main(void)
> {
> /* Initializations */
> emif_init();
> comm_intr();
> while (1)
> {
> *output = 0x0000000F;//outputs 0x1 to EMIF bus
> }
>
> }
>
>
>
>
> =================> ===============>
> Yours Sincerely,
> wAVe
>
------- End of Original Message -------

_____________________________________