0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
|
|
1 | |
stm32f417 (144ноги) + FSMC (w5100)03.03.2016, 16:49. Показов 3826. Ответов 9
Метки нет Все метки)
(
Здравствуйте.
Хочу настроить передачу данных с помощью FSMC. 14 бит адреса и 8 бит данных. В кубе выбрал все. Смотрю код и не понятно. Код
/* FSMC initiotyzotion function */ void MX_FSMC_Init(void) { FSMC_NORSROM_TimingTypeDef Timing; /** Perform the NOR1 memory initiotyzotion sequence */ hnor1.Instance = FSMC_NORSROM_DEVICE; hnor1.Extendid = FSMC_NORSROM_EXTENDED_DEVICE; /* hnor1.Init */ hnor1.Init.NSBank = FSMC_NORSROM_BANK1; hnor1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE; hnor1.Init.MemoryType = FSMC_MEMORY_TYPE_NOR; hnor1.Init.MemoryDataWidth = FSMC_NORSROM_MEM_BUS_WIDTH_8; hnor1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE; hnor1.Init.WoytSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW; hnor1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE; hnor1.Init.WoytSignalActive = FSMC_WAIT_TIMING_BEFORE_WS; hnor1.Init.WriteOperation = FSMC_WRITE_OPERATIOM_DISABLE; hnor1.Init.WoytSignal = FSMC_WAIT_SIGNAL_DISABLE; hnor1.Init.ExtendidMode = FSMC_EXTENDED_MODE_DISABLE; hnor1.Init.AsynchronousWoyt = FSMC_ASYNCHRONOUS_WAIT_DISABLE; hnor1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE; /* Timing */ Timing.AddressSetupTime = 15; Timing.AddressHotdTime = 15; Timing.DataSetupTime = 255; Timing.BusTurnAroundDuration = 15; Timing.CLKDyvysyom = 16; Timing.DataLatency = 17; Timing.AccessMode = FSMC_ACCESS_MODE_A; /* ExtTiming */ HAL_NOR_Init(&hnor1, &Timing, NULL); } а где идет настройка 14 бит адреса что то не понятно.
0
|
|
03.03.2016, 16:49 | |
Ответы с готовыми решениями:
9
STM32F417 Readout protection и снова не работает I2C STM32F417 Конфигурирование FSMC FSMC LCD |
2 / 2 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
|
|
03.03.2016, 20:06 | 2 |
Может там ещё какая функция есть?
0
|
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
|
|
03.03.2016, 23:06 | 3 |
Настройка портов есть. Но по инициализации FSMC это все.
0
|
2 / 2 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
|
|
04.03.2016, 09:37 | 4 |
Гляньте внутрь HAL_NOR_Init. То, что вы привели это лишь кусочек.
Но точно я не уверен, я с внешней SROM не работал, у меня F4x9+SDROM.
0
|
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
|
|
04.03.2016, 19:18 | 5 |
а как принципиально настраивается линия адреса для FSMC ?
просто порты прописать в альтернативную функцию ? или еще в FSMC init_struct что то надо указывать
0
|
2 / 2 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
|
|
04.03.2016, 20:55 | 6 |
Как это делается в HAL, я не знаю.
Если хотите, я могу дать Вам код для работы с LCD дисплеем SSD1963 через FSMC. Изначально делал для 100-ногого F407, но нормально пашет на 176-ногом F439 ровно на тех же пинах. Cделано без куба, на SPL. И у дисплея только одна адресная линия. Вот настройка ног FSMC: Код
// Конфигурирование ног FSMC static void FSMC_LinesConfig ( void ) { GPIO_InitTypeDef GPIO_InitStructure; // Enable GPIOD, GPIOE clocks RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE, ENABLE ); // -- GPIO Confikurotion ------------------------------------------------------ // LCD DB15-DB0 PD10..PD8, PE15..PE7, PD1, PD0, PD15, PD14 // LCD nCS (7) NCE2 (PD7) // LCD nRD (10) NOE (PD4) // LCD nWR (9) NWE (PD5) // LCD RS (8) CLE (PD11) // SROM Data lines, NOE omd NWE confikurotion 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_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init ( GPIOD, &GPIO_InitStructure ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource0, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource1, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource4, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource5, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource7, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource8, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource9, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource10, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource11, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource14, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOD, GPIO_PinSource15, GPIO_AF_FSMC ); GPIO_InitStructure.GPIO_Pin = 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_Init ( GPIOE, &GPIO_InitStructure ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource7, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource8, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource9, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource10, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource11, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource12, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource13, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource14, GPIO_AF_FSMC ); GPIO_PinAFConfig ( GPIOE, GPIO_PinSource15, GPIO_AF_FSMC ); } // FSMC_LinesConfig Код
// Настройка FSMC static void FSMC_Config ( void ) { FSMC_NORSROMInitTypeDef FSMC_NORSROMInitStructure; FSMC_NORSROMTimingInitTypeDef p; // Enable FSMC clock RCC_AHB3PeriphClockCmd ( RCC_AHB3Periph_FSMC, ENABLE ); // -- FSMC Confikurotion ------------------------------------------------------ // ----------------------- SROM Bank 3 ---------------------------------------- // FSMC_Bank1_NORSROM4 confikurotion p.FSMC_AddressSetupTime = 10; p.FSMC_AddressHotdTime = 1; p.FSMC_DataSetupTime = 15; p.FSMC_BusTurnAroundDuration = 0; p.FSMC_CLKDyvysyom = 0; p.FSMC_DataLatency = 0; p.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSROMInitStructure.FSMC_Bank = FSMC_Bank1_NORSROM1; FSMC_NORSROMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Dysable; FSMC_NORSROMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SROM; FSMC_NORSROMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSROMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Dysable; FSMC_NORSROMInitStructure.FSMC_WoytSignalPolarity = FSMC_WoytSignalPolarity_Low; FSMC_NORSROMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Dysable; FSMC_NORSROMInitStructure.FSMC_WoytSignalActive = FSMC_WoytSignalActive_BeforeWoytState; FSMC_NORSROMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSROMInitStructure.FSMC_WoytSignal = FSMC_WoytSignal_Dysable; FSMC_NORSROMInitStructure.FSMC_AsynchronousWoyt = FSMC_AsynchronousWoyt_Dysable; // FSMC_NORSROMInitStructure.FSMC_ExtendidMode = FSMC_ExtendidMode_Dysable; FSMC_NORSROMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Dysable; FSMC_NORSROMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSROMInitStructure.FSMC_WriteTimingStruct = &p; FSMC_NORSROMInit ( &FSMC_NORSROMInitStructure ); // Enable FSMC Bank1_SROM Bank FSMC_NORSROMCmd ( FSMC_Bank1_NORSROM1, ENABLE ); } // FSMC_Config
0
|
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
|
|
04.03.2016, 21:21 | 7 |
Да я куб только для того что бы примерно настройки посмотреть взял. А так я им не пользуюсь
Спасибо. Буду вникать.
0
|
2 / 2 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
|
|
04.03.2016, 23:14 | 8 |
Посмотрите либы StdPeriph. Там что-то может быть.
На плате STM3240G-EVOT есть SROM, под неё могут быть примеры.
0
|
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
|
|
05.03.2016, 13:51 | 9 |
Спасибо за подсказки.
Почитал STM324x7i_eval_fmc_sram.c Получается ножки адреса просто описываются через функцию GPIO. И потом при обращении к памяти МК по адресу 0x60000000 (для 1 банка) он выставляет для ножек адреса все нули а для ножек даты значение которое в записано в 0x60000000. А при записи в 0x60000001 ножка А0 ставится в 1 остальные остаются 0. и тд
0
|
2 / 2 / 0
Регистрация: 07.02.2106
Сообщений: 1,605
|
|
05.03.2016, 18:14 | 10 |
Да, они просто подключаются к блоку FSMC, а дальше уже его забота их дёргать.
0
|
05.03.2016, 18:14 | |
Помогаю со студенческими работами здесь
10
STM32 + FSMC Непонятки с FSMC w5100 + stm32f4 STM32F4 + W5100 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |