Flexbus and SDRAM Multiplex on K65F_169GBA

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Flexbus and SDRAM Multiplex on K65F_169GBA

Jump to solution
1,048 Views
a8Chcx
Contributor V

Hi,

I am going to use 2 32-bit SDRAMs on SDRAM controller. And want to add 16-bit external flash to Flexbus.

Could anybody check if the following pin assignment should be OK if I don't want to use external multiplex circuit?

/* Initialize the SDRAMC pins */

/* Ungate the port clock */

CLOCK_EnableClock(kCLOCK_PortA);

CLOCK_EnableClock(kCLOCK_PortB);

CLOCK_EnableClock(kCLOCK_PortC);

CLOCK_EnableClock(kCLOCK_PortD);

/* CLKOUT*/

PORT_SetPinMux(PORTA, 6UL, kPORT_MuxAlt5); // SDRAM CLKOUT

/* CAS/RAS*/

PORT_SetPinMux(PORTB, 0UL, kPORT_MuxAlt5); // SDRAM_CAS_b

PORT_SetPinMux(PORTB, 1UL, kPORT_MuxAlt5); // SDRAM_RAS_b

/* WE */

PORT_SetPinMux(PORTB, 2UL, kPORT_MuxAlt5); // ENET0_1588_TMR0/SDRAM_WE

/* CS */

PORT_SetPinMux(PORTB, 3UL, kPORT_MuxAlt5); // ENET0_1588_TMR1/SDRAM_CS0

PORT_SetPinMux(PORTB, 4UL, kPORT_MuxAlt5); // ENET0_1588_TMR2/SDRAM_CS1

/* SDRAM Data*/

PORT_SetPinMux(PORTA, 24UL, kPORT_MuxAlt5); /* SDRAM_D15/FB_A15*/

PORT_SetPinMux(PORTA, 25UL, kPORT_MuxAlt5); /* SDRAM_D14/FB_A14*/

PORT_SetPinMux(PORTA, 26UL, kPORT_MuxAlt5); /* SDRAM_D13/FB_A13*/

PORT_SetPinMux(PORTA, 27UL, kPORT_MuxAlt5); /* SDRAM_D12/FB_A12*/

PORT_SetPinMux(PORTA, 30UL, kPORT_MuxAlt5); /* SDRAM_D11/FB_A11*/

PORT_SetPinMux(PORTA, 31UL, kPORT_MuxAlt5); /* SDRAM_D10/FB_A10*/

PORT_SetPinMux(PORTB, 6UL, kPORT_MuxAlt5); /* SDRAM_D23*/

PORT_SetPinMux(PORTB, 7UL, kPORT_MuxAlt5); /* SDRAM_D22*/

PORT_SetPinMux(PORTB, 8UL, kPORT_MuxAlt5); /* SDRAM_D21*/

PORT_SetPinMux(PORTB, 9UL, kPORT_MuxAlt5); /* SDRAM_D20*/

PORT_SetPinMux(PORTB, 10UL, kPORT_MuxAlt5); /* SDRAM_D19*/

PORT_SetPinMux(PORTB, 11UL, kPORT_MuxAlt5); /* SDRAM_D18*/

PORT_SetPinMux(PORTB, 12UL, kPORT_MuxAlt5); /* SDRAM_D9/FB_A9*/

PORT_SetPinMux(PORTB, 13UL, kPORT_MuxAlt5); /* SDRAM_D8/FB_A8*/

PORT_SetPinMux(PORTB, 14UL, kPORT_MuxAlt5); /* SDRAM_D7/FB_A7*/

PORT_SetPinMux(PORTB, 15UL, kPORT_MuxAlt5); /* SDRAM_D6/FB_A6*/

PORT_SetPinMux(PORTB, 16UL, kPORT_MuxAlt5); /* SDRAM_D17*/

PORT_SetPinMux(PORTB, 17UL, kPORT_MuxAlt5); /* SDRAM_D16*/

PORT_SetPinMux(PORTB, 20UL, kPORT_MuxAlt5); /* SDRAM_D31*/

PORT_SetPinMux(PORTB, 21UL, kPORT_MuxAlt5); /* SDRAM_D30*/

PORT_SetPinMux(PORTB, 22UL, kPORT_MuxAlt5); /* SDRAM_D29*/

PORT_SetPinMux(PORTB, 23UL, kPORT_MuxAlt5); /* SDRAM_D28*/

PORT_SetPinMux(PORTC, 12UL, kPORT_MuxAlt5); /* SDRAM_D27*/

PORT_SetPinMux(PORTC, 13UL, kPORT_MuxAlt5); /* SDRAM_D26*/

PORT_SetPinMux(PORTC, 14UL, kPORT_MuxAlt5); /* SDRAM_D25*/

PORT_SetPinMux(PORTC, 15UL, kPORT_MuxAlt5); /* SDRAM_D24*/

PORT_SetPinMux(PORTC, 24UL, kPORT_MuxAlt5); /* SDRAM_D5/FB_A5*/

PORT_SetPinMux(PORTC, 25UL, kPORT_MuxAlt5); /* SDRAM_D4/FB_A4*/

PORT_SetPinMux(PORTC, 26UL, kPORT_MuxAlt5); /* SDRAM_D3/FB_A3*/

PORT_SetPinMux(PORTC, 27UL, kPORT_MuxAlt5); /* SDRAM_D2/FB_A2*/

PORT_SetPinMux(PORTC, 28UL, kPORT_MuxAlt5); /* SDRAM_D1/FB_A1*/

PORT_SetPinMux(PORTC, 29UL, kPORT_MuxAlt5); /* SDRAM_D0/FB_A0*/

/* SDRAM Address*/

PORT_SetPinMux(PORTB, 18UL, kPORT_MuxAlt5); /* SDRAM_A23*/

PORT_SetPinMux(PORTC, 0UL, kPORT_MuxAlt5); /* SDRAM_A22*/

PORT_SetPinMux(PORTC, 1UL, kPORT_MuxAlt5); /* SDRAM_A21*/

PORT_SetPinMux(PORTC, 2UL, kPORT_MuxAlt5); /* SDRAM_A20*/

PORT_SetPinMux(PORTC, 4UL, kPORT_MuxAlt5); /* SDRAM_A19*/

PORT_SetPinMux(PORTC, 5UL, kPORT_MuxAlt5); /* SDRAM_A18*/

PORT_SetPinMux(PORTC, 6UL, kPORT_MuxAlt5); /* SDRAM_A17*/

PORT_SetPinMux(PORTC, 7UL, kPORT_MuxAlt5); /* SDRAM_A16*/

PORT_SetPinMux(PORTC, 8UL, kPORT_MuxAlt5); /* SDRAM_A15*/

PORT_SetPinMux(PORTC, 9UL, kPORT_MuxAlt5); /* SDRAM_A14*/

PORT_SetPinMux(PORTC, 10UL, kPORT_MuxAlt5); /* SDRAM_A13*/

PORT_SetPinMux(PORTD, 2UL, kPORT_MuxAlt5); /* SDRAM_A12*/

PORT_SetPinMux(PORTD, 3UL, kPORT_MuxAlt5); /* SDRAM_A11*/

PORT_SetPinMux(PORTD, 4UL, kPORT_MuxAlt5); /* SDRAM_A10*/

PORT_SetPinMux(PORTD, 5UL, kPORT_MuxAlt5); /* SDRAM_A9*/

/* SDRAM_CKE*/

PORT_SetPinMux(PORTD, 7UL, kPORT_MuxAlt5);

/* SDRAM_DQM */

PORT_SetPinMux(PORTC, 16UL, kPORT_MuxAlt5); /* SDRAM_DQM2*/

PORT_SetPinMux(PORTC, 17UL, kPORT_MuxAlt5); /* SDRAM_DQM3*/

PORT_SetPinMux(PORTC, 18UL, kPORT_MuxAlt5); /* SDRAM_DQM1*/

PORT_SetPinMux(PORTC, 19UL, kPORT_MuxAlt5); /* SDRAM_DQM0*/

/* Flexbus high address */

PORT_SetPinMux(PORTD, 8UL, kPORT_MuxAlt6); /* FB_A16*/

PORT_SetPinMux(PORTD, 9UL, kPORT_MuxAlt6); /* FB_A17*/

PORT_SetPinMux(PORTD, 10UL, kPORT_MuxAlt6); /* FB_A19*/

PORT_SetPinMux(PORTD, 11UL, kPORT_MuxAlt6); /* FB_A19*/

PORT_SetPinMux(PORTD, 12UL, kPORT_MuxAlt6); /* FB_A20*/

PORT_SetPinMux(PORTD, 13UL, kPORT_MuxAlt6); /* FB_A21*/

PORT_SetPinMux(PORTD, 14UL, kPORT_MuxAlt6); /* FB_A22*/

PORT_SetPinMux(PORTD, 15UL, kPORT_MuxAlt6); /* FB_A23*/

PORT_SetPinMux(PORTA, 29UL, kPORT_MuxAlt6); /* FB_A24*/

PORT_SetPinMux(PORTA, 28UL, kPORT_MuxAlt6); /* FB_A25*/

/* Flexbus RW, OE, chip select and etc signal */

PORT_SetPinMux(PORTB, 19UL, kPORT_MuxAlt5); /* FB_OE_b*/

PORT_SetPinMux(PORTC, 11UL, kPORT_MuxAlt5); /* FB_RW_b*/

PORT_SetPinMux(PORTD, 0UL, kPORT_MuxAlt5); /* FB_CS1_b*/

PORT_SetPinMux(PORTD, 1UL, kPORT_MuxAlt5); /* FB_CS0_b*/

Thanks,

Christie

Labels (1)
0 Kudos
1 Solution
782 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

Hi

1> When BLS=0, FB_AD[0:15] will be driven as address during FLEXBUS read/write. And at the same time, FB_A0~~FB_A25 will be driven as address during FLEXBUS read/write.

2> When BLS=1, FB_AD16~~AD31 will be driven as address during FLEXBUS read/write. And at the same time, FB_A0~~FB_A25 will be driven as address during FLEXBUS read/write.

The SDRAM and Flexbus multiplexed pins was automatically switched, customer could refer AN5095 about some detailed info.


Wish it helps.

Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

0 Kudos
4 Replies
782 Views
a8Chcx
Contributor V

Hi,

My question: As my pin assignment, during Flexbu read/write, the address will be available on FB_AD0~~FB_AD15 on the first clock, then will be switch to data. But, FB_AD16~~FD_AD31 will always be valid data if I use 16-bit port. At the same time, FB_A0~~FB_A25 will be always valid address during read/write, so I can use these for Flexbus address to access the external device in non-multiple mode.

Can someone confirm my pin assignment?

Thanks,

Christie

0 Kudos
782 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

Hi

The Flexbus data-byte alignment and physical connections based on FB_CSCRn[BLS] bit setting:

pastedImage_1.png

pastedImage_2.png

During the Flexbus operation, the FB_A[0:25] pins are always driven as address function. Customer can use those pins as Flexbus address pins.


Wish it helps.

Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
782 Views
a8Chcx
Contributor V

Hi Ma Hui,

Thank you for youe answers. I just want to confirm the following because I am doing the hardware design for now.

I am using FLEXBUS for 16-bit operation:

1) If BLS=0, FB_AD0~~AD15 will be driven as address during FLEXBUS read/write? And at the same time, FB_A0~~FB_A25 will be driven as address during FLEXBUS read/write? So, I can use FB_AD[0:15]+FB_A[16:25] as no multiplex address and will be the same function as I use FB_A[0:25]?

2) if BLS=1, FB_AD16~~AD31 will be driven as address during FLEXBUS read/write? And at the same time, FB_A0~~FB_A25 will be driven as address during FLEXBUS read/write? So, I can use FB_A[0:15]+FB_AD[16:25] as no multiplex address and will be the same function as I use FB_A[0:25]?

All above signals will be switched automatically between SDRAM and FLEXBUS operation? Do I need to configure for FLEXBUD multiplex/non-multiplex mode?

Thanks,

Christie

0 Kudos
783 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

Hi

1> When BLS=0, FB_AD[0:15] will be driven as address during FLEXBUS read/write. And at the same time, FB_A0~~FB_A25 will be driven as address during FLEXBUS read/write.

2> When BLS=1, FB_AD16~~AD31 will be driven as address during FLEXBUS read/write. And at the same time, FB_A0~~FB_A25 will be driven as address during FLEXBUS read/write.

The SDRAM and Flexbus multiplexed pins was automatically switched, customer could refer AN5095 about some detailed info.


Wish it helps.

Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos