Greg Mountford

External Memory Interface (EMI) Query

Discussion created by Greg Mountford on Aug 7, 2009
Latest reply on Aug 13, 2009 by Pascal Irrle

Hi,

 

I can't seem to get the EMI up and running correctly - and there's not much documentation about it (I'm using the DSP56F805, but I don't think my query is chip-specific)

 

I need to be able to address, read & write to an external memory device.

 

In PE (CPU Bean) I've enabled the External bus, Program Memory mode is 0B, Data Memory is Internal & External, OMR Initialise yes. Data bus width 16 bits, Address bus width 16 bits, 4 wait states, Drive enabled.

I've set 1 external memory block, with a start address of 0x2000, memory size of 0xFF, and type as RAM.

 

I set the start address at 0x2000 because in the memory map there's a section of Data memory labelled "External" and listed as 'not used'. It will let me set the type as ROM but only when I change the start address to the area listed as External & not used in the "Code" section of the Memory Map. 

 I'm not 100% sure about which option I should choose? 

 

Assuming I've set it up correctly, how would I access the memory? 

Say I wanted to access the first 2 words of the memory associated with the external device, would the following be correct?

 

#define FIRST_WORD_OF_DEVICE *((volatile word *)0x00002000) 

#define SECOND_WORD_OF_DEVICE *((volatile word *)0x00002001)

 

{

word Temp;

FIRST_WORD_OF_DEVICE = 0xabcd;

SECOND_WORD_OF_DEVICE = 0xef12;

Temp =  FIRST_WORD_OF_DEVICE;

 

Assuming that's correct, what address would be output on the address bus when accessing address 0x2000? Does 0x2000 appear on the bus I/O address lines, or 0x0000? 

 

Thanks,

Greg 

Outcomes