Ruslan1 17 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Здравствуйте! Есть нормально работающая связка ST32F429+IS42S16400J (1 Meg Bits x 16 Bits x 4 Banks, 64-MBIT). И хочется расшириться до 16 Мегабайт. Кто-то использует? Какие микросхемы памяти смотреть, какие особенности использования? Разница в цене вроде небольшая должна быть, а память вещь очень нужная... С ходу глянул IS42S81600F - так у нее вроде бы распиновку сильно поменяли в сравнении с IS42S16400J, хоть она и есть в том же TSSOP-54. печально. Идеально было бы с такой же распиновкой как IS42S16400. Ну и до кучи- если про 32 Мегабайта думать, то на что смотреть из микросхем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Ещё можно купить MT48LC32M16A2P-75, всё остальное кануло в лету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Есть нормально работающая связка 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. Организация и разводка тоже аналогичные. Тоже всё ок было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Огромное спасибо!!!!!!!!!! Буду думать про MT48LC*M16, сейчас посравниваю распиновку. MT48LC8M16A2 вроде бы просто можно поставить на имеющуюся плату (с A0-A11) и получить 16 Мегабайт. для бОльшего объема- A12 не доведен до SDRAM, хотя и на МК пин зарезервирован. Но зато сколько возможностей открывается.... давно мечтал о виртуальном диске, например.... Для этого придется новый фотошаблон делать с цепью A12, но очень надеюсь больше ничего не менять (включая сверловку, координаты для робота и паяльную маску). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0men 2 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Это которая на STM32F429I-DISCOVERY стоит? :rolleyes: В одном из проектов использовал пару шт. MT48LC32M16A2P-75 (шина 32 бит). По разводке вроде совпадает с вашей. Естественно кроме ноги A12, которая у Вас должна быть 'NC' и по уму - закинута на всяк случай на шину МК. Внутренняя её организация похожая. Проблем с ними не было. Также на EVB SK-MLPC1788 работал с MT48LC16M16A2TG. Организация и разводка тоже аналогичные. Тоже всё ок было. MT48LC32M16A2P-75 имеет шину данных 16 бит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба MT48LC32M16A2P-75 имеет шину данных 16 бит ну так мне такую и надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба к сожалению, применение микросхем 32 МБайт требует переделки моей платы (тащить A12), прямо сейчас не хочу это делать. Так что просто хочу вместо 8 МБайт монтировать микросхему 16 МБайт (просто замена в BOM и дополнительные полдоллара на плату) MT48LC8M16A2 (16МБайт) в индустриальном температурном диапазоне недоступен на складах, зато есть AS4C8M16SA-6TIN. Их никто не применял? Просмотрел даташит "по диагонали"- отличий между ними не нашел. Или что-то есть? ссылки на даташиты: AS4C8M16SA MT48LC8M16A2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Экономия на доработке платы сейчас может в будущем привести к проблемам с комплектацией. Раз уже сейчас сложно купить. А лишняя линия (или даже 2) даёт пространство для манёвра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 15 апреля, 2018 Опубликовано 15 апреля, 2018 · Жалоба Экономия на доработке платы сейчас может в будущем привести к проблемам с комплектацией. Раз уже сейчас сложно купить. А лишняя линия (или даже 2) даёт пространство для манёвра. Я с Вами полностью согласен. Уже решено, переделываю плату. Буду ставить 32 мегабайта. MT48LC16M16A2TG. Сильно надеюсь что в инициализации ничего хитрого нет, по сравнению с 8МБайт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 16 апреля, 2018 Опубликовано 16 апреля, 2018 · Жалоба Сильно надеюсь что в инициализации ничего хитрого нет, по сравнению с 8МБайт. Да нет там ничего хитрого ни в 32МБ, ни в 64МБ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 17 декабря, 2018 Опубликовано 17 декабря, 2018 · Жалоба 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 для более удобной разводки (это уже давно сделано, никогда не мешало в старых версиях платы). Моя инициализация: /* 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--); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 17 декабря, 2018 Опубликовано 17 декабря, 2018 · Жалоба 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. Зачем резисторы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 18 декабря, 2018 Опубликовано 18 декабря, 2018 · Жалоба 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 и поиграюсь). Если не поможет- значит все-таки не разводка новой платы и не брак памяти. Резисторы: тянется из старых разработок, последовательное согласование. Все никак не уберу, если уж на плату влезли и из-за правила "работает-не трогай". Думаете, может глючить из-за них? Попробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 18 декабря, 2018 Опубликовано 18 декабря, 2018 · Жалоба 6 минут назад, ruslan1 сказал: Похоже на системную ошибку при разводке или сборке. Заказал на пробу одну MT48LC16M16A2 из другого источника, посмотрю что изменится при ее установке на старую версию платы (прокину проводком PA12 и поиграюсь). Может лучше стоило поискать какую-то готовую отладочную плату с этим чипом? У меня такой нет, но есть плата с K4S561632N-LC75. Это чип такого же объёма как у Вас и вроде такой же конфигурации (4 банка, шина 16 бит). Правда на ней LPC1788. В работе и инициализации никаких проблем не было - делал давно, всё работало. В другом проекте было две MT48LC32 - тоже всё ок. Правда тоже другой МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 18 декабря, 2018 Опубликовано 18 декабря, 2018 · Жалоба У меня перепутаны на элементе в схематике A11 и A10. должно быть A10- pin22, у меня- pin 35, A11- pin35, у меня pin22. Перекинул проводками- заработало. Лет 6 назад его рисовал. блин. А может и не я рисовал.... Что самое интересное- никаких проблем с 8-МБайт памятью не было, даже и не думал про такое. И как теперь с этим жить.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться