IMPORTANT: Cypress Developer Community is transitioning on October 20th. To learn more and be prepared for this change, check out our latest announcement.
Showing results for 
Search instead for 
Did you mean: 

Nor Flash

Not applicable

Hi There ;

We are working on a project. In our project, we use "CYPRESS S29GL128S90FHI010" model parallel NOR FLASH chip. We connected this chip to Analog Devices' Blackfin BF609 DSP's static memory controller (SMC0 BASEADRESS=0xB0000000 Bank0),(I share the schematic of the PCB we make ). We downloaded the "Spansion_LLD_Device_v15.3.1" Low-level driver from your website and we added to the project.  But I have not been able to make the right configuration.I wrote ram a while trying to write to flash.  and we try to run the following code, but we have not read the ID in the datasheet.  Could you help me with the configuration.


unsigned int data_read;

LLD_CHAR versionStr[9];


printf(" LLD Release Version: %s \n", versionStr);

data_read = lld_GetDeviceId (   (FLASHDATA)0xB0000000    );

printf  ("%8.8X \n", data_read   );


I shared to Blackfin SMC Features and registers details.

Blackfin SMC Features:

• 16-bit I/O width

• Provides flexible timing control through extended timing parameters

• Supports asynchronous access extension ( SMC_ARDY pin)

• Supports 8-bit data masking writes

• Supports bus request/grant arbitration

• Supports burst read with programmable burst length of 4, 8 and 16

Blackfin SMC_Bank0 Registers:(Additional details are available on attachment)

SMC_B0CTL Bank 0 Control Register

SMC_B0TIM Bank 0 Timing Register

SMC_B0ETIM Bank 0 Extended Timing Register

1 Solution

Hello Ahmet,

Where did you get the base address 0xB0000000 for the static  from? I couldn't find it in the blackfin reference manual.

The S29GL129S has an initial access time (tACC) of 100ns, so you should take this into account. I see that a CS# low cycle takes 10ns o nthe trace you sent. This will not work here.

The other thing is that I see two write cycles followed by a read cycle, then 1 write cycle then 1 read cycle. This does not comply with what a call to the function lld_GetDeviceId() is expected to do.

Normally, we should see 3 write cylces followed by 4 read cycles in toral.

You're also reading back 0x00559090 which is actually the written values to switch to autoselect mode to read the device IDs, so it looks like the controller is not configured properly.

Unfortunately, I'm not an expert of Blackfin but I would recommend that you dig deeper into its reference manual to peorperly setup the SMC controller.


Best regards,



Bacem Daassi

Cypress Semiconductor Corp.

Customer Application Engineering

View solution in original post

8 Replies