Author Topic: Connecting a 512K*16bit SRAM (IS62WV51216BLL-55TLI) to a 144-Pin STM32  (Read 3809 times)

0 Members and 1 Guest are viewing this topic.

Offline VanitarNordicTopic starter

  • Frequent Contributor
  • **
  • Posts: 277
  • Country: 00
Connecting a 512K*16bit SRAM (IS62WV51216BLL-55TLI) to a 144-Pin package STM32 microcontroller, using the FSMC bus

In some projects, such as using a graphical LCD by the StemWin (EmWin) library, the embedded STM32’s SRAM capacity might not be sufficient. For the 100-pin and 144-pin STM32 packages, there is a possibility to easily connect an external SRAM to a bus named FSMC (flexible static memory controller).

In this project, I decided to connect the IS62WV51216BLL-55TLI to the STM32F103ZE microcontroller. According to the IS62WV51216BLL-55TLI datasheet: “the ISSI IS62WV51216ALL/IS62WV51216BLL are highspeed, 8M bit static RAMs organized as 512K words by 16 bits. It is fabricated using ISSI's high-performance CMOS technology. This highly reliable process coupled with innovative circuit design techniques, yields high-performance and low power consumption devices”.
The STM32F103ZE is a 144-pin MCU package and it provides a fully functional FSMC connection. The figure below demonstrates the architecture of the STM32 and the SRAM blocks.




I use the Altium designer to design schematics and PCBs. I did not have the footprint/schematic symbols for the IS62WV51216BLL-55TLI, nor the STM32F103ZE. For these circumstances, I have installed the Samacsys Altium plugin to easily find and use the components libraries (or by using the Samacsys component search engine).
https://altium.componentsearchengine.com/ga/downloads.php
https://componentsearchengine.com


   


I “personally” prefer to make a functional schematic symbol for a mixed component, such as a microcontroller like the STM32F103ZE. Therefore, I modified it and divided it up into a few functional parts. If you don’t like a separated-function schematic symbol, you can stick to the Samacsys schematic library and use it directly. This is just a personal taste.






I have prepared the Altium designer files for download, which you can modify/use them for your own project requirements.


The STM32CubeMx is a nice tool to easily setup the FSMC and SRAM for the STM32.
First, you should select the FSMC from the connectivity section. Then modify the hardware type, the chip select, the address, and data bus sizes. In the configuration section, enable the write operation and also the extended mode, then adjust the variables.









There is a 1Mb size limitation for attaching a file. so I uploaded the Altium files on the Dropbox.
https://www.dropbox.com/s/0gecextvojiamss/SRAM.zip?dl=0

 

Offline bson

  • Supporter
  • ****
  • Posts: 2429
  • Country: us
I'd give it 100Ω resistors on the bus pins, similar to below.  Obviously in my circuit the FSMC is used to drive an SSD1963, but the same applies.  You'll get a ton of overshoot without, and since you have on the order of 20-30 bus lines hitting operating synchronously you'll be producing a ton of noise.  (I used CYA10-J4 resistor arrays, hence the "RA" ref ids.  This was done by replacing resistors in groups of 4 on the layout.)

And, yes, definitely both split large pin count ships into functional units AND use only the function on the pin that's actually used, not all possibilities.



I do this by leaving one logic unit on the symbol with all unused pins, and when I need something I look at the layout and the unit of unused pins to see which one to use (or plan a pin shuffle).  (The device isn't the -RG, but the -ZF.  I can't be bothered to fix that; KiCad makes it difficult.)  Then go grab it from there and move to the appropriate unit.



The device symbol is initially created by importing a CSV which I create by copy-and-paste from the PDF spreadsheet plus keyboard macros in emacs to clean up.  Eyeball inspection/verification, and then run KiPart which is a script for KiCad to take a CSV of pins, unit assignments, pin types, sides, etc, and turn it into a multi-unit symbol.
« Last Edit: March 25, 2019, 01:04:33 am by bson »
 

Offline VanitarNordicTopic starter

  • Frequent Contributor
  • **
  • Posts: 277
  • Country: 00
Yes, I agree with you with implementing the series resistors. it is important to comply with the EMC.

Thank you for sharing your circuit/SRAM/LCD connection.
« Last Edit: March 25, 2019, 11:05:02 am by VanitarNordic »
 

Offline iMo

  • Super Contributor
  • ***
  • Posts: 5129
  • Country: bt
There are $15 103ZET and 407ZET boards at ebay, with pads for an external 512kx16 sram placed at the bottom side.
I populated both with 256kx16 10ns srams and it worked fine. No resistors in data or address buses.
Mind the external sram wired via the FSMC runs much slower than the internal sram does, the penalty is 3-8x with 10ns sram, based on how the external sram is used.
Readers discretion is advised..
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf