Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Thread

Olimex LPC-H2294 Intel Flash

Olimex LPC-H2294 Intel Flash

2005-04-23 by Paulo de Almeida

Hi,

The  Olimex LPC-H2294 board has an Intel Flash (TE28F320C3BD70) with
32 Mbits arranged as 2MBx16bits. The board uses the chip at external
memory bank 0 with memory map 0x80008000 through 0x80200000.
According to the  TE28F320C3BD70 datasheet each memory address
corresponds to one word (16 bits), my problem is that the LPC2294
doesn't let me write16 bit words at consecutive addresses, ex:
*0x80008000=0x0ff1 ,* 0x80008001=0x0ff2, *0x80008002=0x0ff3 etc.
but forces the use of 16bit pointer so I have to use
*0x80008000=0x0ff1 ,* 0x80008002=0x0ff2, *0x80008004=0x0ff3 each uses
only 2Mbytes of the 4Mbyes that the TE28F320C3BD70 has.

I don't know if I made myself clear, but can someone please give me
some advice on how can I use the total 4Mbtes of the TE28F320C3BD70 ?

Thanks

Paulo A.

Re: [lpc2000] Olimex LPC-H2294 Intel Flash

2005-04-23 by Richard Duits

Hello Paulo,

We made the same mistake on one of our own prototype PCBs, and I did not 
get this working either. If you don't have any 8-bit devices on the bus, 
you may try to set A0 as GPIO pin and set/clear this pin to access the 
odd/even words of the flash. But keep in mind this is very tricky, 
because an access to the GPIO may happen while the EMC is still busy 
with a write request. Inserting a number of nops may help. I did not 
have any problems accessing the GPIO after a read request. Use a logic 
analyser or an oscilloscope to check your code.


Richard.



Paulo de Almeida wrote:
Show quoted textHide quoted text
>Hi,
>
>The  Olimex LPC-H2294 board has an Intel Flash (TE28F320C3BD70) with
>32 Mbits arranged as 2MBx16bits. The board uses the chip at external
>memory bank 0 with memory map 0x80008000 through 0x80200000.
>According to the  TE28F320C3BD70 datasheet each memory address
>corresponds to one word (16 bits), my problem is that the LPC2294
>doesn't let me write16 bit words at consecutive addresses, ex:
>*0x80008000=0x0ff1 ,* 0x80008001=0x0ff2, *0x80008002=0x0ff3 etc.
>but forces the use of 16bit pointer so I have to use
>*0x80008000=0x0ff1 ,* 0x80008002=0x0ff2, *0x80008004=0x0ff3 each uses
>only 2Mbytes of the 4Mbyes that the TE28F320C3BD70 has.
>
>I don't know if I made myself clear, but can someone please give me
>some advice on how can I use the total 4Mbtes of the TE28F320C3BD70 ?
>
>Thanks
>
>Paulo A.
>
>
>--------------------------------------------------------------------------------
>*Yahoo! Groups Links*
>
>    * To visit your group on the web, go to:
>      http://groups.yahoo.com/group/lpc2000/
>       
>    * To unsubscribe from this group, send an email to:
>      lpc2000-unsubscribe@yahoogroups.com
>      <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
>       
>    * Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service
>      <http://docs.yahoo.com/info/terms/>. 
>
>
>  
>

Re: Olimex LPC-H2294 Intel Flash

2005-05-25 by richard_tuffin

> >The  Olimex LPC-H2294 board has an Intel Flash (TE28F320C3BD70) with
> >32 Mbits arranged as 2MBx16bits. The board uses the chip at external
> >memory bank 0 with memory map 0x80008000 through 0x80200000.
> >According to the  TE28F320C3BD70 datasheet each memory address
> >corresponds to one word (16 bits), my problem is that the LPC2294
> >doesn't let me write16 bit words at consecutive addresses, ex:
> >*0x80008000=0x0ff1 ,* 0x80008001=0x0ff2, *0x80008002=0x0ff3 etc.
> >but forces the use of 16bit pointer so I have to use
> >*0x80008000=0x0ff1 ,* 0x80008002=0x0ff2, *0x80008004=0x0ff3 each uses
> >only 2Mbytes of the 4Mbyes that the TE28F320C3BD70 has.

> >I don't know if I made myself clear, but can someone please give me
> >some advice on how can I use the total 4Mbtes of the TE28F320C3BD70 

The LPC2294 is byte addressing, therefore 0x80008000 = 0x0ff1 sets
0x80008001 to 0x0f (the high byte).
Addressing 16bit pointers to odd locations would give you unaligned
transfers, which aren't supported in the ARM7.

If you look at the Olimex schematic A1 from the processor is connected
to A0 of the flash, so each _even_ address accesses a 16 bit word.
So you are accessing all the memory, it just extends twice as far as
you think it does...

Richard Tuffin

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.