Jump to content

    

STM32F429 и 16-битная SDRAM 16MB /32 MB : практический опыт?

Здравствуйте!

Есть нормально работающая связка ST32F429+IS42S16400J (1 Meg Bits x 16 Bits x 4 Banks, 64-MBIT).

И хочется расшириться до 16 Мегабайт.

Кто-то использует?

Какие микросхемы памяти смотреть, какие особенности использования?

 

Разница в цене вроде небольшая должна быть, а память вещь очень нужная...

С ходу глянул IS42S81600F - так у нее вроде бы распиновку сильно поменяли в сравнении с IS42S16400J, хоть она и есть в том же TSSOP-54. печально.

 

Идеально было бы с такой же распиновкой как IS42S16400.

 

Ну и до кучи- если про 32 Мегабайта думать, то на что смотреть из микросхем?

Share this post


Link to post
Share on other sites

Ещё можно купить MT48LC32M16A2P-75, всё остальное кануло в лету.

Share this post


Link to post
Share on other sites
Есть нормально работающая связка ST32F429+IS42S16400J (1 Meg Bits x 16 Bits x 4 Banks, 64-MBIT).

И хочется расшириться до 16 Мегабайт.

Это которая на STM32F429I-DISCOVERY стоит? :rolleyes:

В одном из проектов использовал пару шт. MT48LC32M16A2P-75 (шина 32 бит). По разводке вроде совпадает с вашей. Естественно кроме ноги A12, которая у Вас должна быть 'NC' и по уму - закинута на всяк случай на шину МК. Внутренняя её организация похожая. Проблем с ними не было.

Также на EVB SK-MLPC1788 работал с MT48LC16M16A2TG. Организация и разводка тоже аналогичные. Тоже всё ок было.

Share this post


Link to post
Share on other sites

Огромное спасибо!!!!!!!!!!

 

Буду думать про MT48LC*M16, сейчас посравниваю распиновку.

MT48LC8M16A2 вроде бы просто можно поставить на имеющуюся плату (с A0-A11) и получить 16 Мегабайт.

 

для бОльшего объема- A12 не доведен до SDRAM, хотя и на МК пин зарезервирован. Но зато сколько возможностей открывается.... давно мечтал о виртуальном диске, например....

Для этого придется новый фотошаблон делать с цепью A12, но очень надеюсь больше ничего не менять (включая сверловку, координаты для робота и паяльную маску).

Share this post


Link to post
Share on other sites
Это которая на STM32F429I-DISCOVERY стоит? :rolleyes:

В одном из проектов использовал пару шт. MT48LC32M16A2P-75 (шина 32 бит). По разводке вроде совпадает с вашей. Естественно кроме ноги A12, которая у Вас должна быть 'NC' и по уму - закинута на всяк случай на шину МК. Внутренняя её организация похожая. Проблем с ними не было.

Также на EVB SK-MLPC1788 работал с MT48LC16M16A2TG. Организация и разводка тоже аналогичные. Тоже всё ок было.

 

MT48LC32M16A2P-75 имеет шину данных 16 бит

Share this post


Link to post
Share on other sites
MT48LC32M16A2P-75 имеет шину данных 16 бит

ну так мне такую и надо.

Share this post


Link to post
Share on other sites

к сожалению, применение микросхем 32 МБайт требует переделки моей платы (тащить A12), прямо сейчас не хочу это делать. Так что просто хочу вместо 8 МБайт монтировать микросхему 16 МБайт (просто замена в BOM и дополнительные полдоллара на плату)

 

MT48LC8M16A2 (16МБайт) в индустриальном температурном диапазоне недоступен на складах, зато есть AS4C8M16SA-6TIN. Их никто не применял? Просмотрел даташит "по диагонали"- отличий между ними не нашел. Или что-то есть?

ссылки на даташиты:

AS4C8M16SA

MT48LC8M16A2

Share this post


Link to post
Share on other sites

Экономия на доработке платы сейчас может в будущем привести к проблемам с комплектацией. Раз уже сейчас сложно купить. А лишняя линия (или даже 2) даёт пространство для манёвра.

Share this post


Link to post
Share on other sites
Экономия на доработке платы сейчас может в будущем привести к проблемам с комплектацией. Раз уже сейчас сложно купить. А лишняя линия (или даже 2) даёт пространство для манёвра.

Я с Вами полностью согласен. Уже решено, переделываю плату. Буду ставить 32 мегабайта.

MT48LC16M16A2TG.

Сильно надеюсь что в инициализации ничего хитрого нет, по сравнению с 8МБайт.

 

Share this post


Link to post
Share on other sites
Сильно надеюсь что в инициализации ничего хитрого нет, по сравнению с 8МБайт.

Да нет там ничего хитрого ни в 32МБ, ни в 64МБ.

Share this post


Link to post
Share on other sites
On 4/16/2018 at 7:05 PM, sov1178 said:

Да нет там ничего хитрого ни в 32МБ, ни в 64МБ.

И  снова здравствуйте всем!

 

Вот у меня и дошли наконец-то руки до этой платы.

Поигрался- прослезился. Что-то не так, а где- понять не могу.

В двух словах:

Конструкция:

На старой плате стояла микросхема  IS42S16400J (1 Meg Bits x 16 Bits x 4 Banks, 64-MBIT)

На новой плате установлена MT48LC16M16A2TG-6A IT G  ( 4 Meg x 16 x 4 banks, 256-MBIT)

МК: STM32F429IIT6, rev.3

Изменения: доведена до МК линия A12 (раньше висела в воздухе).

Результат:

стабильно тестируется только первая четверть RAM (8 Мегабайт из 32 имеющихся). При доступе к следующим адресам иногда происходит запись в младшие адреса.

Что бы это могло быть? нестабильная работа цепи A12 ?

 

Осциллографом смотрю- вижу сигналы на пинах, криминала в форме не вижу. Замыканий вроде нет, и не глюк конкретного экземпляра (проверил на трех таких собранных платах)

В программе измемения сделал минимальные:

- добавил конфигурирование A12

- изменил длину шины строки с 12 бит на 13 бит

- измненил длину шины столбца с 8 на 9 бит

- изменил время рефреша согласно моей тактовой 83.968 MHz: 64ms/8192 raws = 7.8125 us,  7.8125 * 83.968 MHz = 656,  656 -20 = 646

Схема: вроде бы стандартная, только поменяны на шине данных D15 и D13 для более удобной разводки (это уже давно сделано, никогда не мешало в старых версиях платы).

image.thumb.png.c028220617f193db029fe700dcba4da4.png

Моя инициализация:

 

/*
  FMC GPIO Configuration
  PF0   ------> FMC_A0
  PF1   ------> FMC_A1
  PF2   ------> FMC_A2
  PF3   ------> FMC_A3
  PF4   ------> FMC_A4
  PF5   ------> FMC_A5
  PC0   ------> FMC_SDNWE
  PH2   ------> FMC_SDCKE0
  PH3   ------> FMC_SDNE0
  PF11   ------> FMC_SDNRAS
  PF12   ------> FMC_A6
  PF13   ------> FMC_A7
  PF14   ------> FMC_A8
  PF15   ------> FMC_A9
  PG0   ------> FMC_A10
  PG1   ------> FMC_A11
  PG2   ------> FMC_A12		new pin, in old boards this pin is not connected
  PE7   ------> FMC_D4
  PE8   ------> FMC_D5
  PE9   ------> FMC_D6
  PE10   ------> FMC_D7
  PE11   ------> FMC_D8
  PE12   ------> FMC_D9
  PE13   ------> FMC_D10
  PE14   ------> FMC_D11
  PE15   ------> FMC_D12
  PD8   ------> FMC_D13
  PD9   ------> FMC_D14
  PD10   ------> FMC_D15
  PD14   ------> FMC_D0
  PD15   ------> FMC_D1
  PG4   ------> FMC_BA0
  PG5   ------> FMC_BA1
  PG8   ------> FMC_SDCLK
  PD0   ------> FMC_D2
  PD1   ------> FMC_D3
  PG15   ------> FMC_SDNCAS
  PE0   ------> FMC_NBL0
  PE1   ------> FMC_NBL1
*/

#define SDRAM_TIMEOUT     ((uint32_t)0xFFFF)

void external_RAM_init()
{
	//---------------------------  GPIO  -----------------------

	GPIO_InitTypeDef GPIO_InitStructure;

  /* Alternate functions configuration */
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource0, GPIO_AF_FMC);

  GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FMC);

  GPIO_PinAFConfig(GPIOE, GPIO_PinSource0, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource1, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource7, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource8, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource10, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource12, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource14, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource15, GPIO_AF_FMC);

  GPIO_PinAFConfig(GPIOF, GPIO_PinSource0, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource1, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource2, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource3, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource4, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource5, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource11, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource12, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource13, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource14, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource15, GPIO_AF_FMC);

  GPIO_PinAFConfig(GPIOG, GPIO_PinSource0, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource1, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource2, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource4, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource5, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource8, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource15, GPIO_AF_FMC);

  GPIO_PinAFConfig(GPIOH, GPIO_PinSource2, GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource3, GPIO_AF_FMC);

  /* GPIO_InitStruct port C*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* GPIO_InitStruct port D*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1
    | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10
    | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  /* GPIO_InitStruct port E*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_7 | GPIO_Pin_8
    | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12
    | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);

  /* GPIO_InitStruct port F*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3
    | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_11 | GPIO_Pin_12
    | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);

  /* GPIO_InitStruct port G*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_4 | GPIO_Pin_5
    | GPIO_Pin_8 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOG, &GPIO_InitStructure);

  /* GPIO_InitStruct port H*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOH, &GPIO_InitStructure);

//---------------------------  FMC  -----------------------
  FMC_SDRAMInitTypeDef FMC_SDRAMInitStructure;
  FMC_SDRAMTimingInitTypeDef FMC_SDRAM_TimingInitStructure;
  FMC_SDRAMCommandTypeDef FMC_SDRAMCommandStructure;
  uint32_t timeout = SDRAM_TIMEOUT;

  /* enable required clocks for periphicals */
  RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC, ENABLE);

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE);

  external_RAM_GPIO_init();

  FMC_SDRAM_TimingInitStructure.FMC_ExitSelfRefreshDelay = 7;
  FMC_SDRAM_TimingInitStructure.FMC_LoadToActiveDelay = 2;
  FMC_SDRAM_TimingInitStructure.FMC_RCDDelay = 2;
  FMC_SDRAM_TimingInitStructure.FMC_RowCycleDelay = 7;
  FMC_SDRAM_TimingInitStructure.FMC_RPDelay = 2;
  FMC_SDRAM_TimingInitStructure.FMC_SelfRefreshTime = 4;
  FMC_SDRAM_TimingInitStructure.FMC_WriteRecoveryTime = 2;

  FMC_SDRAMInitStructure.FMC_Bank = FMC_Bank1_SDRAM;
  FMC_SDRAMInitStructure.FMC_CASLatency = FMC_CAS_Latency_3;
  FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_9b;
  FMC_SDRAMInitStructure.FMC_InternalBankNumber = FMC_InternalBank_Number_4;
  FMC_SDRAMInitStructure.FMC_ReadBurst = FMC_Read_Burst_Enable;
  FMC_SDRAMInitStructure.FMC_ReadPipeDelay = FMC_ReadPipe_Delay_1;
  FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_13b;
  FMC_SDRAMInitStructure.FMC_SDClockPeriod = FMC_SDClock_Period_2;
  FMC_SDRAMInitStructure.FMC_SDMemoryDataWidth = FMC_SDMemory_Width_16b;
  FMC_SDRAMInitStructure.FMC_SDRAMTimingStruct = &FMC_SDRAM_TimingInitStructure;
  FMC_SDRAMInitStructure.FMC_WriteProtection = FMC_Write_Protection_Disable;

  FMC_SDRAMInit(&FMC_SDRAMInitStructure);

  /* Configure a clock configuration enable command */
  FMC_SDRAMCommandStructure.FMC_CommandMode				= FMC_Command_Mode_CLK_Enabled;
  FMC_SDRAMCommandStructure.FMC_CommandTarget 			= FMC_Command_Target_bank1;
  FMC_SDRAMCommandStructure.FMC_AutoRefreshNumber 		= 1;
  FMC_SDRAMCommandStructure.FMC_ModeRegisterDefinition 	= 0;

  /* Wait until the SDRAM controller is ready */
  timeout = SDRAM_TIMEOUT;
  while (FMC_GetFlagStatus(FMC_Bank1_SDRAM, FMC_FLAG_Busy) != RESET && timeout--);

  /* Send the command */
  FMC_SDRAMCmdConfig(&FMC_SDRAMCommandStructure);

  /* Delay */

  for (int i = 0; i < 100000; i++)

  /* Configure a PALL (precharge all) command */
  FMC_SDRAMCommandStructure.FMC_CommandMode            = FMC_Command_Mode_PALL;
  FMC_SDRAMCommandStructure.FMC_CommandTarget          = FMC_Command_Target_bank1;
  FMC_SDRAMCommandStructure.FMC_AutoRefreshNumber      = 1;
  FMC_SDRAMCommandStructure.FMC_ModeRegisterDefinition = 0;

  /* Wait until the SDRAM controller is ready */
  timeout = SDRAM_TIMEOUT;
  while (FMC_GetFlagStatus(FMC_Bank1_SDRAM, FMC_FLAG_Busy) && timeout--);

  /* Send the command */
  FMC_SDRAMCmdConfig(&FMC_SDRAMCommandStructure);

  /* Configure a Auto-Refresh command */
  FMC_SDRAMCommandStructure.FMC_CommandMode            = FMC_Command_Mode_AutoRefresh;
  FMC_SDRAMCommandStructure.FMC_CommandTarget          = FMC_Command_Target_bank1;
  FMC_SDRAMCommandStructure.FMC_AutoRefreshNumber      = 8;
  FMC_SDRAMCommandStructure.FMC_ModeRegisterDefinition = 0;

  /* Wait until the SDRAM controller is ready */
  timeout = SDRAM_TIMEOUT;
  while (FMC_GetFlagStatus(FMC_Bank1_SDRAM, FMC_FLAG_Busy) && timeout--);

  /* Send the command */
  FMC_SDRAMCmdConfig(&FMC_SDRAMCommandStructure);

  /* Configure a load Mode register command */
  FMC_SDRAMCommandStructure.FMC_CommandMode            = FMC_Command_Mode_LoadMode;
  FMC_SDRAMCommandStructure.FMC_CommandTarget          = FMC_Command_Target_bank1;
  FMC_SDRAMCommandStructure.FMC_AutoRefreshNumber      = 1;
  FMC_SDRAMCommandStructure.FMC_ModeRegisterDefinition = 0x0231;

  /* Wait until the SDRAM controller is ready */
  timeout = SDRAM_TIMEOUT;
  while (FMC_GetFlagStatus(FMC_Bank1_SDRAM, FMC_FLAG_Busy) && timeout--);

  /* Send the command */
  FMC_SDRAMCmdConfig(&FMC_SDRAMCommandStructure);

  /* Set the device refresh counter */
  /* 64/8192 = 7.8125 us, 7.8125 * 83.968 Mhz = 656, 656 -20 = 646 */
  FMC_SetRefreshCount(646);

  /* Wait until the SDRAM controller is ready */
  timeout = SDRAM_TIMEOUT;
  while(FMC_GetFlagStatus(FMC_Bank1_SDRAM, FMC_FLAG_Busy) != RESET && timeout--);

}

Share this post


Link to post
Share on other sites
2 hours ago, ruslan1 said:

 FMC_SDRAMCommandStructure.FMC_ModeRegisterDefinition = 0x0231;

Из очевидного 0х231 не правильное значение для MR. 

Для этих м/сх в MR нужно писать 0x220 для CAS=2 или 0х230 для CAS=3. У Вас получается включен бурст с длиной 2 (не поддерживается контроллером памяти у STM32). 

"Четверти" как Вы говорите (правильнее будет банки) м/сх адресуются линиями BA0, BA1 - проверяйте все ли пропаяно на этих линиях.

Проверьте правильные ли тайминги запрограммированы.

P.S. Зачем резисторы? 

Share this post


Link to post
Share on other sites
14 hours ago, sov1178 said:

Из очевидного 0х231 не правильное значение для MR. 

Для этих м/сх в MR нужно писать 0x220 для CAS=2 или 0х230 для CAS=3. У Вас получается включен бурст с длиной 2 (не поддерживается контроллером памяти у STM32). 

"Четверти" как Вы говорите (правильнее будет банки) м/сх адресуются линиями BA0, BA1 - проверяйте все ли пропаяно на этих линиях.

Проверьте правильные ли тайминги запрограммированы.

P.S. Зачем резисторы? 

Спасибо, попробовал с разными сочетаниями CAS Latency для FMC (2 и 3) и соответственно менял MR (220 и 230). Ничего не изменилось.

Я уже раньше по интернету смотрел насчет конфигурации для этой MT48LC16M16A2, разницу MR=230 вместо моего 231 увидел, и пробовал конечно. Более того, я не совсем понимаю почему с 231 (Burst Length=2) работало с 8MB чипом и продолжает работать сейчас. Но это не суть моей проблемы.

Спасибо за напоминаие, я и не замечал что МК этот бурст не поддерживает. буду 230/220 применять.

 

Похоже на системную ошибку при разводке или сборке. Заказал на пробу одну MT48LC16M16A2 из другого источника, посмотрю что изменится при ее установке на старую версию платы (прокину проводком PA12 и поиграюсь). Если не поможет- значит все-таки не разводка новой платы и не брак памяти.

 

Резисторы: тянется из старых разработок, последовательное согласование. Все никак не уберу, если уж на плату влезли и из-за правила "работает-не трогай". Думаете, может глючить из-за них? Попробую.

Share this post


Link to post
Share on other sites
6 минут назад, ruslan1 сказал:

Похоже на системную ошибку при разводке или сборке. Заказал на пробу одну MT48LC16M16A2 из другого источника, посмотрю что изменится при ее установке на старую версию платы (прокину проводком PA12 и поиграюсь).

Может лучше стоило поискать какую-то готовую отладочную плату с этим чипом?

У меня такой нет, но есть плата с K4S561632N-LC75. Это чип такого же объёма как у Вас и вроде такой же конфигурации (4 банка, шина 16 бит). Правда на ней LPC1788. В работе и инициализации никаких проблем не было - делал давно, всё работало.

В другом проекте было две MT48LC32 - тоже всё ок. Правда тоже другой МК.

Share this post


Link to post
Share on other sites

У меня перепутаны на элементе в схематике A11 и A10.

должно быть A10- pin22, у меня- pin 35, A11- pin35, у меня pin22.

Перекинул проводками- заработало.

Лет 6 назад его рисовал. блин. А может и не я рисовал....

Что самое интересное- никаких проблем с 8-МБайт памятью не было, даже и не думал про такое.

И как теперь с этим жить....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now