DSPRelated.com
Forums

EMIF problems in C6713

Started by Hui Zhang October 22, 2005
Dear all,
Let me post my problem. I am currently trying to receive data from the EMIF on
the DSK. What I want to do is look at this data at a memory location and do
some decisions based upon the value.
My DSP code runs fine and the data in the CE2 is the data I enter but I received
the data is not the right one. I initialize and configure and the EMIF.
void main(void){
unsigned int dat;
DSK6713_init();
EMIF_config(&emifCfg0);
DDS_CFR->byte0=0x58;
dat_CFR->byte0;
} 0xA0000000=0x58, dat=0x3558.
I believe the data is stored in CE2,but why I didn't receive the right data? Any
help would be greatly appreciated!!!

-dds


dds,

Please see comments below.

mikedunn

--- Hui Zhang <hui-2.zhang@hui-...> wrote:

> Dear all,
> Let me post my problem. I am currently trying to
> receive data from the EMIF on
> the DSK. What I want to do is look at this data at a
> memory location and do
> some decisions based upon the value.
> My DSP code runs fine and the data in the CE2 is the
> data I enter but I received
> the data is not the right one. I initialize and
> configure and the EMIF.
> void main(void){
> unsigned int dat;
> DSK6713_init();
> EMIF_config(&emifCfg0);
> DDS_CFR->byte0=0x58;
> dat_CFR->byte0;
> } > 0xA0000000=0x58, dat=0x3558.
Could you describe your problem a little better??
What does the above line mean??
for example:
My program writes the value 0x1234 to address
0xA0000000. When I read that address with CCS, I get
0x5678.
> I believe the data is stored in CE2,but why I didn't
> receive the right data? Any
> help would be greatly appreciated!!!
>
> -dds >
>
> c6x-unsubscribe@c6x-...




yes,we call 'EMIF_config(&emifCfg0)' initialise CE2.

void main(void){
unsigned int dat;
DSK6713_init();
EMIF_config(&emifCfg0);

DDS_CFR->byte0=0x58;
DDS_CFR->byte1=0x20;
DDS_CFR->byte2=0x34;
DDS_CFR->byte3=0x80;

dat_CFR->byte0;
}
The address for byte0 is 0xA000000,The address for byte1 is 0xA000010,The
address for byte2 is 0xA000040,The address for byte3 is 0xA000080.
When I looked the meroy, 0x80 is in all the memory(0xA000000,....0xA000080).
It seems that it only put the last data 0x80 to all the memory.

Any help would be greatly appreciated!!! dds Quoting Dileepan C <dileepan_c@dile...>:

> hi,
>
> 1) make sure you are configuring correctly the CE2.
> does the call 'EMIF_config(&emifCfg0)' initialise CE2?
>
> 2) ensure that you are using the correct gel files.
>
> regards,
> Dileepan. > --- Hui Zhang <hui-2.zhang@hui-...> wrote:
>
> > Dear all,
> > Let me post my problem. I am currently trying to
> > receive data from the EMIF on
> > the DSK. What I want to do is look at this data at a
> > memory location and do
> > some decisions based upon the value.
> > My DSP code runs fine and the data in the CE2 is the
> > data I enter but I received
> > the data is not the right one. I initialize and
> > configure and the EMIF.
> > void main(void){
> > unsigned int dat;
> > DSK6713_init();
> > EMIF_config(&emifCfg0);
> > DDS_CFR->byte0=0x58;
> > dat_CFR->byte0;
> > }
> >
> >
> > 0xA0000000=0x58, dat=0x3558.
> > I believe the data is stored in CE2,but why I didn't
> > receive the right data? 0xA000000> > -dds
> >
> >
> >
> >
> >
> >
> >
> > c6x-unsubscribe@c6x-...
> >
> >
> >
> >
> > __________________________________



You could have a hardware or configuration problem.
The c6x devices appear to have a bus hold feature that
will cause the 'last value written' to appear at all
addresses if the memory read is not working properly.
You can verify if this is happening by using CCS.

Open a mem window at 0xA0000000 and modify the
contents of a single location. Next, right click and
select refresh - I predict that all memory locations
will be updated to display the value that was written.

If this is happening and you are confident that you
are configured properly, write a simple 'forever loop'
to read address 0xA0000000 continuously. Verify the
memory control signals at the memory device.

mikedunn

--- Hui Zhang <hui-2.zhang@hui-...> wrote:

> yes,we call 'EMIF_config(&emifCfg0)' initialise CE2.
>
> void main(void){
> unsigned int dat;
> DSK6713_init();
> EMIF_config(&emifCfg0);
>
> DDS_CFR->byte0=0x58;
> DDS_CFR->byte1=0x20;
> DDS_CFR->byte2=0x34;
> DDS_CFR->byte3=0x80;
>
> dat_CFR->byte0;
> }
> The address for byte0 is 0xA000000,The address for
> byte1 is 0xA000010,The
> address for byte2 is 0xA000040,The address for byte3
> is 0xA000080.
> When I looked the meroy, 0x80 is in all the
> memory(0xA000000,....0xA000080).
> It seems that it only put the last data 0x80 to all
> the memory.
>
> Any help would be greatly appreciated!!! > dds > Quoting Dileepan C <dileepan_c@dile...>:
>
> > hi,
> >
> > 1) make sure you are configuring correctly the
> CE2.
> > does the call 'EMIF_config(&emifCfg0)' initialise
> CE2?
> >
> > 2) ensure that you are using the correct gel
> files.
> >
> > regards,
> > Dileepan.
> >
> >
> > --- Hui Zhang <hui-2.zhang@hui-...> wrote:
> >
> > > Dear all,
> > > Let me post my problem. I am currently trying to
> > > receive data from the EMIF on
> > > the DSK. What I want to do is look at this data
> at a
> > > memory location and do
> > > some decisions based upon the value.
> > > My DSP code runs fine and the data in the CE2 is
> the
> > > data I enter but I received
> > > the data is not the right one. I initialize and
> > > configure and the EMIF.
> > > void main(void){
> > > unsigned int dat;
> > > DSK6713_init();
> > > EMIF_config(&emifCfg0);
> > > DDS_CFR->byte0=0x58;
> > > dat_CFR->byte0;
> > > }
> > >
> > >
> > > 0xA0000000=0x58, dat=0x3558.
> > > I believe the data is stored in CE2,but why I
> didn't
> > > receive the right data? 0xA000000> > -dds
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > c6x-unsubscribe@c6x-...
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> >
> > __________________________________
> >
> >
>
> c6x-unsubscribe@c6x-...




Thanks , Mike
I put an endless loop (for(;;)) before the write command (DDS_CFR->byte0=0x58;)
and then tested the pins WR, RD, CE2 and CE3. There are no signal. It could
have hardware problem.
Sometime the data is written to AD9858.There is no signal for write how could it
do this?
Do they have any jumper or switch to active the CE2 or WR pins on C6713 board?

Any help would be greatly appreciated!!!

Dds

Quoting Mike Dunn <mike-dunn@mike...>:

>
> You could have a hardware or configuration problem.
> The c6x devices appear to have a bus hold feature that
> will cause the 'last value written' to appear at all
> addresses if the memory read is not working properly.
> You can verify if this is happening by using CCS.
>
> Open a mem window at 0xA0000000 and modify the
> contents of a single location. Next, right click and
> select refresh - I predict that all memory locations
> will be updated to display the value that was written.
>
> If this is happening and you are confident that you
> are configured properly, write a simple 'forever loop'
> to read address 0xA0000000 continuously. Verify the
> memory control signals at the memory device.
>
> mikedunn
>
> --- Hui Zhang <hui-2.zhang@hui-...> wrote:
>
> > yes,we call 'EMIF_config(&emifCfg0)' initialise CE2.
> >
> > void main(void){
> > unsigned int dat;
> > DSK6713_init();
> > EMIF_config(&emifCfg0);
> >
> > DDS_CFR->byte0=0x58;
> > DDS_CFR->byte1=0x20;
> > DDS_CFR->byte2=0x34;
> > DDS_CFR->byte3=0x80;
> >
> > dat_CFR->byte0;
> > }
> > The address for byte0 is 0xA000000,The address for
> > byte1 is 0xA000010,The
> > address for byte2 is 0xA000040,The address for byte3
> > is 0xA000080.
> > When I looked the meroy, 0x80 is in all the
> > memory(0xA000000,....0xA000080).
> > It seems that it only put the last data 0x80 to all
> > the memory.
> >
> > Any help would be greatly appreciated!!!
> >
> >
> > dds
> >
> >
> > Quoting Dileepan C <dileepan_c@dile...>:
> >
> > > hi,
> > >
> > > 1) make sure you are configuring correctly the
> > CE2.
> > > does the call 'EMIF_config(&emifCfg0)' initialise
> > CE2?
> > >
> > > 2) ensure that you are using the correct gel
> > files.
> > >
> > > regards,
> > > Dileepan.
> > >
> > >
> > > --- Hui Zhang <hui-2.zhang@hui-...> wrote:
> > >
> > > > Dear all,
> > > > Let me post my problem. I am currently trying to
> > > > receive data from the EMIF on
> > > > the DSK. What I want to do is look at this data
> > at a
> > > > memory location and do
> > > > some decisions based upon the value.
> > > > My DSP code runs fine and the data in the CE2 is
> > the
> > > > data I enter but I received
> > > > the data is not the right one. I initialize and
> > > > configure and the EMIF.
> > > > void main(void){
> > > > unsigned int dat;
> > > > DSK6713_init();
> > > > EMIF_config(&emifCfg0);
> > > > DDS_CFR->byte0=0x58;
> > > > dat_CFR->byte0;
> > > > }
> > > >
> > > >
> > > > 0xA0000000=0x58, dat=0x3558.
> > > > I believe the data is stored in CE2,but why I
> > didn't
> > > > receive the right data? 0xA000000> > -dds
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > c6x-unsubscribe@c6x-...
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > > __________________________________
> > >
> > >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > c6x-unsubscribe@c6x-...
> >
> >
> >
> >
>


Hui-

> I put an endless loop (for(;;)) before the write command (DDS_CFR->byte0=0x58;)
> and then tested the pins WR, RD, CE2 and CE3. There are no signal. It could
> have hardware problem.
> Sometime the data is written to AD9858.There is no signal for write how could it
> do this?
> Do they have any jumper or switch to active the CE2 or WR pins on C6713 board?
>
> Any help would be greatly appreciated!!!

volatile unsigned int dat;

-Jeff > Quoting Mike Dunn <mike-dunn@mike...>:
>
> >
> > You could have a hardware or configuration problem.
> > The c6x devices appear to have a bus hold feature that
> > will cause the 'last value written' to appear at all
> > addresses if the memory read is not working properly.
> > You can verify if this is happening by using CCS.
> >
> > Open a mem window at 0xA0000000 and modify the
> > contents of a single location. Next, right click and
> > select refresh - I predict that all memory locations
> > will be updated to display the value that was written.
> >
> > If this is happening and you are confident that you
> > are configured properly, write a simple 'forever loop'
> > to read address 0xA0000000 continuously. Verify the
> > memory control signals at the memory device.
> >
> > mikedunn
> >
> > --- Hui Zhang <hui-2.zhang@hui-...> wrote:
> >
> > > yes,we call 'EMIF_config(&emifCfg0)' initialise CE2.
> > >
> > > void main(void){
> > > unsigned int dat;
> > > DSK6713_init();
> > > EMIF_config(&emifCfg0);
> > >
> > > DDS_CFR->byte0=0x58;
> > > DDS_CFR->byte1=0x20;
> > > DDS_CFR->byte2=0x34;
> > > DDS_CFR->byte3=0x80;
> > >
> > > dat_CFR->byte0;
> > > }
> > > The address for byte0 is 0xA000000,The address for
> > > byte1 is 0xA000010,The
> > > address for byte2 is 0xA000040,The address for byte3
> > > is 0xA000080.
> > > When I looked the meroy, 0x80 is in all the
> > > memory(0xA000000,....0xA000080).
> > > It seems that it only put the last data 0x80 to all
> > > the memory.
> > >
> > > Any help would be greatly appreciated!!!
> > >
> > >
> > > dds
> > >
> > >
> > > Quoting Dileepan C <dileepan_c@dile...>:
> > >
> > > > hi,
> > > >
> > > > 1) make sure you are configuring correctly the
> > > CE2.
> > > > does the call 'EMIF_config(&emifCfg0)' initialise
> > > CE2?
> > > >
> > > > 2) ensure that you are using the correct gel
> > > files.
> > > >
> > > > regards,
> > > > Dileepan.
> > > >
> > > >
> > > > --- Hui Zhang <hui-2.zhang@hui-...> wrote:
> > > >
> > > > > Dear all,
> > > > > Let me post my problem. I am currently trying to
> > > > > receive data from the EMIF on
> > > > > the DSK. What I want to do is look at this data
> > > at a
> > > > > memory location and do
> > > > > some decisions based upon the value.
> > > > > My DSP code runs fine and the data in the CE2 is
> > > the
> > > > > data I enter but I received
> > > > > the data is not the right one. I initialize and
> > > > > configure and the EMIF.
> > > > > void main(void){
> > > > > unsigned int dat;
> > > > > DSK6713_init();
> > > > > EMIF_config(&emifCfg0);
> > > > > DDS_CFR->byte0=0x58;
> > > > > dat_CFR->byte0;
> > > > > }
> > > > >
> > > > >
> > > > > 0xA0000000=0x58, dat=0x3558.
> > > > > I believe the data is stored in CE2,but why I
> > > didn't
> > > > > receive the right data? 0xA000000> > -dds



Hi Al
Thanks a lot. As you said, EMIF become active.
I run the same programm as before. I Open a mem window at 0xA0000000, Next right
click and select refresh - all memory locations display the value that the last(
0x80)was written and no changes for all times. Now there are no hardware
problem.
I confugure the EMIF AS
EMIF_Config emifCfg0 = {
0x00003078, /* Global Control Reg. (GBLCTL) */
0xFFFFFF13, /* CE0 Space Control Reg. (CECTL0) */
0xFFFFFF23, /* CE1 Space Control Reg. (CECTL1) */
0xFFFFFF23, /* CE2 Space Control Reg. (CECTL2) */
0xFFFFFF23, /* CE3 Space Control Reg. (CECTL3) */
0x0348F000, /* SDRAM Control Reg.(SDCTL) */
0x000005DC, /* SDRAM Timing Reg.(SDTIM) */
0x0017DF3F /* SDRAM Extended Reg.(SDEXT) */
};
When I open the EMIF register window, it shows as GBLCTL 0x00003F78,
CECTL0 0xFFFFFF13,
CECTL1 0xFFFFFF23,
CECTL2 0xFFFFFF23,
CECTL3 0xFFFFFF23,
SDCTL 0x0248F000,
SDTIM 0x000005DC,
SDEXT 0x0017DF3F
GBCTL and SDCTL is not same as I configure. Why are they change?
Any help would be greatly appreciated!!!

Hui

> > >
Quoting eewizard_1 <eewizard_1@eewi...>:

>
> Hi Hui Zhang
>
> On the Spectrum Digital 6713 DSK to enable the EMIF buss you need to
> ground pin 75 (DC_DET#) of the Peripheral Expansion Connector. That
> line goes to the FPGA on the board and lets it turn on the buffers.
>
> Al
>
> --- In c6x@c6x@..., Hui Zhang <hui-2.zhang@p...> wrote:
> >
> > Thanks , Mike
> > I put an endless loop (for(;;)) before the write command
> (DDS_CFR->byte0=0x58;)
> > and then tested the pins WR, RD, CE2 and CE3. There are no signal.
> It could
> > have hardware problem.
> > Sometime the data is written to AD9858.There is no signal for write
> how could it
> > do this?
> > Do they have any jumper or switch to active the CE2 or WR pins on
> C6713 board?
> >
> > Any help would be greatly appreciated!!!
> >
> > Dds
> >
> > Quoting Mike Dunn <mike-dunn@s...>:
> >
> > >
> > > You could have a hardware or configuration problem.
> > > The c6x devices appear to have a bus hold feature that
> > > will cause the 'last value written' to appear at all
> > > addresses if the memory read is not working properly.
> > > You can verify if this is happening by using CCS.
> > >
> > > Open a mem window at 0xA0000000 and modify the
> > > contents of a single location. Next, right click and
> > > select refresh - I predict that all memory locations
> > > will be updated to display the value that was written.
> > >
> > > If this is happening and you are confident that you
> > > are configured properly, write a simple 'forever loop'
> > > to read address 0xA0000000 continuously. Verify the
> > > memory control signals at the memory device.
> > >
> > > mikedunn
> > >
> > > --- Hui Zhang <hui-2.zhang@p...> wrote:
> > >
> > > > yes,we call 'EMIF_config(&emifCfg0)' initialise CE2.
> > > >
> > > > void main(void){
> > > > unsigned int dat;
> > > > DSK6713_init();
> > > > EMIF_config(&emifCfg0);
> > > >
> > > > DDS_CFR->byte0=0x58;
> > > > DDS_CFR->byte1=0x20;
> > > > DDS_CFR->byte2=0x34;
> > > > DDS_CFR->byte3=0x80;
> > > >
> > > > dat_CFR->byte0;
> > > > }
> > > > The address for byte0 is 0xA000000,The address for
> > > > byte1 is 0xA000010,The
> > > > address for byte2 is 0xA000040,The address for byte3
> > > > is 0xA000080.
> > > > When I looked the meroy, 0x80 is in all the
> > > > memory(0xA000000,....0xA000080).
> > > > It seems that it only put the last data 0x80 to all
> > > > the memory.
> > > >
> > > > Any help would be greatly appreciated!!!
> > > >
> > > >
> > > > dds
> > > >
> > > >
> > > > Quoting Dileepan C <dileepan_c@y...>:
> > > >
> > > > > hi,
> > > > >
> > > > > 1) make sure you are configuring correctly the
> > > > CE2.
> > > > > does the call 'EMIF_config(&emifCfg0)' initialise
> > > > CE2?
> > > > >
> > > > > 2) ensure that you are using the correct gel
> > > > files.
> > > > >
> > > > > regards,
> > > > > Dileepan.
> > > > >
> > > > >
> > > > > --- Hui Zhang <hui-2.zhang@p...> wrote:
> > > > >
> > > > > > Dear all,
> > > > > > Let me post my problem. I am currently trying to
> > > > > > receive data from the EMIF on
> > > > > > the DSK. What I want to do is look at this data
> > > > at a
> > > > > > memory location and do
> > > > > > some decisions based upon the value.
> > > > > > My DSP code runs fine and the data in the CE2 is
> > > > the
> > > > > > data I enter but I received
> > > > > > the data is not the right one. I initialize and
> > > > > > configure and the EMIF.
> > > > > > void main(void){
> > > > > > unsigned int dat;
> > > > > > DSK6713_init();
> > > > > > EMIF_config(&emifCfg0);
> > > > > > DDS_CFR->byte0=0x58;
> > > > > > dat_CFR->byte0;
> > > > > > }
> > > > > >
> > > > > >
> > > > > > 0xA0000000=0x58, dat=0x3558.
> > > > > > I believe the data is stored in CE2,but why I
> > > > didn't
> > > > > > receive the right data? 0xA000000> > -dds
> > > > > >
> > > > > >


Hello Hui,

Please see my comments below.

mikedunn

--- Hui Zhang <hui-2.zhang@hui-...> wrote:

> Hi Al
> Thanks a lot. As you said, EMIF become active.
> I run the same programm as before. I Open a mem
> window at 0xA0000000, Next right
> click and select refresh - all memory locations
> display the value that the last(
> 0x80)was written and no changes for all times. Now
> there are no hardware
> problem.
<mike. congradulations! you now have your board
working - correct??

> I confugure the EMIF AS
> EMIF_Config emifCfg0 = {
> 0x00003078, /* Global Control Reg.
> (GBLCTL) */
> 0xFFFFFF13, /* CE0 Space Control Reg.
> (CECTL0) */
> 0xFFFFFF23, /* CE1 Space Control Reg.
> (CECTL1) */
> 0xFFFFFF23, /* CE2 Space Control Reg.
> (CECTL2) */
> 0xFFFFFF23, /* CE3 Space Control Reg.
> (CECTL3) */
> 0x0348F000, /* SDRAM Control Reg.(SDCTL)
> */
> 0x000005DC, /* SDRAM Timing Reg.(SDTIM)
> */
> 0x0017DF3F /* SDRAM Extended
> Reg.(SDEXT) */
> };
> When I open the EMIF register window, it shows as > GBLCTL 0x00003F78,
> CECTL0 0xFFFFFF13,
> CECTL1 0xFFFFFF23,
> CECTL2 0xFFFFFF23,
> CECTL3 0xFFFFFF23,
> SDCTL 0x0248F000,
> SDTIM 0x000005DC,
> SDEXT 0x0017DF3F
> GBCTL and SDCTL is not same as I configure. Why are
> they change?
<mike> Anytime that you write to a hardware register,
you need to read the documentation to see how the bits
are defined and what is expected. goto TI's web site
and search for 'spru190', look up EMIF in that doc and
it will send you to the documentation for the EMIF
registers. BTW, if you would have read 'SDCTL' and
gotten 0x0348F000, it would have indicated a problem.

> Any help would be greatly appreciated!!!
>
> Hui
>
> > > >
> Quoting eewizard_1 <eewizard_1@eewi...>:
>
> >
> > Hi Hui Zhang
> >
> > On the Spectrum Digital 6713 DSK to enable the
> EMIF buss you need to
> > ground pin 75 (DC_DET#) of the Peripheral
> Expansion Connector. That
> > line goes to the FPGA on the board and lets it
> turn on the buffers.
> >
> > Al
> >
> > --- In c6x@c6x@..., Hui Zhang
> <hui-2.zhang@p...> wrote:
> > >
> > > Thanks , Mike
> > > I put an endless loop (for(;;)) before the write
> command
> > (DDS_CFR->byte0=0x58;)
> > > and then tested the pins WR, RD, CE2 and CE3.
> There are no signal.
> > It could
> > > have hardware problem.
> > > Sometime the data is written to AD9858.There is
> no signal for write
> > how could it
> > > do this?
> > > Do they have any jumper or switch to active the
> CE2 or WR pins on
> > C6713 board?
> > >
> > > Any help would be greatly appreciated!!!
> > >
> > > Dds
> > >
> > > Quoting Mike Dunn <mike-dunn@s...>:
> > >
> > > >
> > > > You could have a hardware or configuration
> problem.
> > > > The c6x devices appear to have a bus hold
> feature that
> > > > will cause the 'last value written' to appear
> at all
> > > > addresses if the memory read is not working
> properly.
> > > > You can verify if this is happening by using
> CCS.
> > > >
> > > > Open a mem window at 0xA0000000 and modify the
> > > > contents of a single location. Next, right
> click and
> > > > select refresh - I predict that all memory
> locations
> > > > will be updated to display the value that was
> written.
> > > >
> > > > If this is happening and you are confident
> that you
> > > > are configured properly, write a simple
> 'forever loop'
> > > > to read address 0xA0000000 continuously.
> Verify the
> > > > memory control signals at the memory device.
> > > >
> > > > mikedunn
> > > >
> > > > --- Hui Zhang <hui-2.zhang@p...> wrote:
> > > >
> > > > > yes,we call 'EMIF_config(&emifCfg0)'
> initialise CE2.
> > > > >
> > > > > void main(void){
> > > > > unsigned int dat;
> > > > > DSK6713_init();
> > > > > EMIF_config(&emifCfg0);
> > > > >
> > > > > DDS_CFR->byte0=0x58;
> > > > > DDS_CFR->byte1=0x20;
> > > > > DDS_CFR->byte2=0x34;
> > > > > DDS_CFR->byte3=0x80;
> > > > >
> > > > > dat_CFR->byte0;
> > > > > }
> > > > > The address for byte0 is 0xA000000,The
> address for
> > > > > byte1 is 0xA000010,The
> > > > > address for byte2 is 0xA000040,The address
> for byte3
> > > > > is 0xA000080.
> > > > > When I looked the meroy, 0x80 is in all the
> > > > > memory(0xA000000,....0xA000080).
> > > > > It seems that it only put the last data 0x80
> to all
> > > > > the memory.
> > > > >
> > > > > Any help would be greatly appreciated!!!
> > > > >
> > > > >
> > > > > dds
> > > > >
> > > > >
> > > > > Quoting Dileepan C <dileepan_c@y...>:
> > > > >
> > > > > > hi,
> > > > > >
> > > > > > 1) make sure you are configuring correctly
> the
> > > > > CE2.
> > > > > > does the call 'EMIF_config(&emifCfg0)'
> initialise
> > > > > CE2?
> > > > > >
> > > > > > 2) ensure that you are using the correct
> gel
> > > > > files.
> > > > > >
> > > > > > regards,
> > > > > > Dileepan.
> > > > > >
> > > > > >
> > > > > > --- Hui Zhang <hui-2.zhang@p...> wrote:
> > > > > >
> > > > > > > Dear all,
> > > > > > > Let me post my problem. I am currently
> trying to
> > > > > > > receive data from the EMIF on
> > > > > > > the DSK. What I want to do is look at
> this data
> > > > > at a
> > > > > > > memory location and do
> > > > > > > some decisions based upon the value.
> > > > > > > My DSP code runs fine and the data in
> the CE2 is
> > > > > the
> > > > > > > data I enter but I received
> > > > > > > the data is not the right one. I
> initialize and
> > > > > > > configure and the EMIF.
> > > > > > > void main(void){
> > > > > > > unsigned int dat;
> > > > > > > DSK6713_init();
> > > > > > > EMIF_config(&emifCfg0);
> > > > > > > DDS_CFR->byte0=0x58;
> > > > > > > dat_CFR->byte0;
> > > > > > > }
> > > > > > >
> > > > > > >
> > > > > > > 0xA0000000=0x58, dat=0x3558.
> > > > > > > I believe the data is stored in CE2,but
> why I
> > > > > didn't
> > > > > > > receive the right data? 0xA000000> >
> -dds
>
=== message truncated ===


Hello Mike,
Thank you.
I test WR and CE2 Pin, they are active low when I disconnect from
AD5898. When I connect the EMIF to AD9858,I test WR and CE2 and they are active
low, but address line (EA7:2) is wrong and data line(ED7:0)is no signal. I
think there are still some configuration problems. It seems C6713 doesn't write
data in AD9858.
My friend gave me the example for EMIF connected with AD9858. We do the same
thing. My friend's code didn't work in C6713 DSK. Only because we use different
evaluation board they use D.SignTmodule C6713 which use the same chip 6713 and
is made in German. Anyone know the different between the two board?

Any help would be greatly appreciated!!!

Hui

Quoting Mike Dunn <mike-dunn@mike...>:

> Hello Hui,
>
> Please see my comments below.
>
> mikedunn
>
> --- Hui Zhang <hui-2.zhang@hui-...> wrote:
>
> > Hi Al
> > Thanks a lot. As you said, EMIF become active.
> > I run the same programm as before. I Open a mem
> > window at 0xA0000000, Next right
> > click and select refresh - all memory locations
> > display the value that the last(
> > 0x80)was written and no changes for all times. Now
> > there are no hardware
> > problem.
> <mike. congradulations! you now have your board
> working - correct??
>
> > I confugure the EMIF AS
> > EMIF_Config emifCfg0 = {
> > 0x00003078, /* Global Control Reg.
> > (GBLCTL) */
> > 0xFFFFFF13, /* CE0 Space Control Reg.
> > (CECTL0) */
> > 0xFFFFFF23, /* CE1 Space Control Reg.
> > (CECTL1) */
> > 0xFFFFFF23, /* CE2 Space Control Reg.
> > (CECTL2) */
> > 0xFFFFFF23, /* CE3 Space Control Reg.
> > (CECTL3) */
> > 0x0348F000, /* SDRAM Control Reg.(SDCTL)
> > */
> > 0x000005DC, /* SDRAM Timing Reg.(SDTIM)
> > */
> > 0x0017DF3F /* SDRAM Extended
> > Reg.(SDEXT) */
> > };
> > When I open the EMIF register window, it shows as
> >
> >
> > GBLCTL 0x00003F78,
> > CECTL0 0xFFFFFF13,
> > CECTL1 0xFFFFFF23,
> > CECTL2 0xFFFFFF23,
> > CECTL3 0xFFFFFF23,
> > SDCTL 0x0248F000,
> > SDTIM 0x000005DC,
> > SDEXT 0x0017DF3F
> > GBCTL and SDCTL is not same as I configure. Why are
> > they change?
> <mike> Anytime that you write to a hardware register,
> you need to read the documentation to see how the bits
> are defined and what is expected. goto TI's web site
> and search for 'spru190', look up EMIF in that doc and
> it will send you to the documentation for the EMIF
> registers. BTW, if you would have read 'SDCTL' and
> gotten 0x0348F000, it would have indicated a problem.
>
> > Any help would be greatly appreciated!!!
> >
> > Hui
> >
> > > > >
> > Quoting eewizard_1 <eewizard_1@eewi...>:
> >
> > >
> > > Hi Hui Zhang
> > >
> > > On the Spectrum Digital 6713 DSK to enable the
> > EMIF buss you need to
> > > ground pin 75 (DC_DET#) of the Peripheral
> > Expansion Connector. That
> > > line goes to the FPGA on the board and lets it
> > turn on the buffers.
> > >
> > > Al
> > >
> > > --- In c6x@c6x@..., Hui Zhang
> > <hui-2.zhang@p...> wrote:
> > > >
> > > > Thanks , Mike
> > > > I put an endless loop (for(;;)) before the write
> > command
> > > (DDS_CFR->byte0=0x58;)
> > > > and then tested the pins WR, RD, CE2 and CE3.
> > There are no signal.
> > > It could
> > > > have hardware problem.
> > > > Sometime the data is written to AD9858.There is
> > no signal for write
> > > how could it
> > > > do this?
> > > > Do they have any jumper or switch to active the
> > CE2 or WR pins on
> > > C6713 board?
> > > >
> > > > Any help would be greatly appreciated!!!
> > > >
> > > > Dds
> > > >
> > > > Quoting Mike Dunn <mike-dunn@s...>:
> > > >
> > > > >
> > > > > You could have a hardware or configuration
> > problem.
> > > > > The c6x devices appear to have a bus hold
> > feature that
> > > > > will cause the 'last value written' to appear
> > at all
> > > > > addresses if the memory read is not working
> > properly.
> > > > > You can verify if this is happening by using
> > CCS.
> > > > >
> > > > > Open a mem window at 0xA0000000 and modify the
> > > > > contents of a single location. Next, right
> > click and
> > > > > select refresh - I predict that all memory
> > locations
> > > > > will be updated to display the value that was
> > written.
> > > > >
> > > > > If this is happening and you are confident
> > that you
> > > > > are configured properly, write a simple
> > 'forever loop'
> > > > > to read address 0xA0000000 continuously.
> > Verify the
> > > > > memory control signals at the memory device.
> > > > >
> > > > > mikedunn
> > > > >
> > > > > --- Hui Zhang <hui-2.zhang@p...> wrote:
> > > > >
> > > > > > yes,we call 'EMIF_config(&emifCfg0)'
> > initialise CE2.
> > > > > >
> > > > > > void main(void){
> > > > > > unsigned int dat;
> > > > > > DSK6713_init();
> > > > > > EMIF_config(&emifCfg0);
> > > > > >
> > > > > > DDS_CFR->byte0=0x58;
> > > > > > DDS_CFR->byte1=0x20;
> > > > > > DDS_CFR->byte2=0x34;
> > > > > > DDS_CFR->byte3=0x80;
> > > > > >
> > > > > > dat_CFR->byte0;
> > > > > > }
> > > > > > The address for byte0 is 0xA000000,The
> > address for
> > > > > > byte1 is 0xA000010,The
> > > > > > address for byte2 is 0xA000040,The address
> > for byte3
> > > > > > is 0xA000080.
> > > > > > When I looked the meroy, 0x80 is in all the
> > > > > > memory(0xA000000,....0xA000080).
> > > > > > It seems that it only put the last data 0x80
> > to all
> > > > > > the memory.
> > > > > >
> > > > > > Any help would be greatly appreciated!!!
> > > > > >
> > > > > >
> > > > > > dds
> > > > > >
> > > > > >
> > > > > > Quoting Dileepan C <dileepan_c@y...>:
> > > > > >
> > > > > > > hi,
> > > > > > >
> > > > > > > 1) make sure you are configuring correctly
> > the
> > > > > > CE2.
> > > > > > > does the call 'EMIF_config(&emifCfg0)'
> > initialise
> > > > > > CE2?
> > > > > > >
> > > > > > > 2) ensure that you are using the correct
> > gel
> > > > > > files.
> > > > > > >
> > > > > > > regards,
> > > > > > > Dileepan.
> > > > > > >
> > > > > > >
> > > > > > > --- Hui Zhang <hui-2.zhang@p...> wrote:
> > > > > > >
> > > > > > > > Dear all,
> > > > > > > > Let me post my problem. I am currently
> > trying to
> > > > > > > > receive data from the EMIF on
> > > > > > > > the DSK. What I want to do is look at
> > this data
> > > > > > at a
> > > > > > > > memory location and do
> > > > > > > > some decisions based upon the value.
> > > > > > > > My DSP code runs fine and the data in
> > the CE2 is
> > > > > > the
> > > > > > > > data I enter but I received
> > > > > > > > the data is not the right one. I
> > initialize and
> > > > > > > > configure and the EMIF.
> > > > > > > > void main(void){
> > > > > > > > unsigned int dat;
> > > > > > > > DSK6713_init();
> > > > > > > > EMIF_config(&emifCfg0);
> > > > > > > > DDS_CFR->byte0=0x58;
> > > > > > > > dat_CFR->byte0;
> > > > > > > > }
> > > > > > > >
> > > > > > > >
> > > > > > > > 0xA0000000=0x58, dat=0x3558.
> > > > > > > > I believe the data is stored in CE2,but
> > why I
> > > > > > didn't
> > > > > > > > receive the right data? 0xA000000> >
> > -dds
> >
> === message truncated ===