Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195

stm32f417 (144ноги) + FSMC (w5100)

03.03.2016, 16:49. Показов 4126. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Хочу настроить передачу данных с помощью FSMC. 14 бит адреса и 8 бит данных. В кубе выбрал все. Смотрю код и не понятно.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* 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);
 
}
Мне нужно 8 бит данных - это MemoryDataWidth = FSMC_NORSROM_MEM_BUS_WIDTH_8;
а где идет настройка 14 бит адреса что то не понятно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2016, 16:49
Ответы с готовыми решениями:

STM32F417 Readout protection
Задача такая - нужно установить защиту от считывания содержимого флеш. Вот код, который должен это сделать (если дока нам не врет): ...

и снова не работает I2C STM32F417
Всем драсте! Возможно тема и баян в стопиццотый раз, но тем не менее.. Никак не могу запустить модуль i2с1 на 417-м стм. Проц lqfp 176,...

Конфигурирование FSMC
Доброго дня, Ott! Хочу спросить совета в очередной раз. Железку взялся ( ссылка ) прикручивать к STM32F407VG через FSMC. Читаю уже на...

9
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
03.03.2016, 20:06
Может там ещё какая функция есть?
0
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
03.03.2016, 23:06
Настройка портов есть. Но по инициализации FSMC это все.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
04.03.2016, 09:37
Гляньте внутрь HAL_NOR_Init. То, что вы привели это лишь кусочек.
Но точно я не уверен, я с внешней SROM не работал, у меня F4x9+SDROM.
0
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
04.03.2016, 19:18
а как принципиально настраивается линия адреса для FSMC ?

просто порты прописать в альтернативную функцию ? или еще в FSMC init_struct что то надо указывать
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
04.03.2016, 20:55
Как это делается в HAL, я не знаю.
Если хотите, я могу дать Вам код для работы с LCD дисплеем SSD1963 через FSMC. Изначально делал для 100-ногого F407, но нормально пашет на 176-ногом F439 ровно на тех же пинах.
Cделано без куба, на SPL. И у дисплея только одна адресная линия.

Вот настройка ног FSMC:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Конфигурирование ног 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:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Настройка 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
Да я куб только для того что бы примерно настройки посмотреть взял. А так я им не пользуюсь

Спасибо. Буду вникать.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
04.03.2016, 23:14
Посмотрите либы StdPeriph. Там что-то может быть.
На плате STM3240G-EVOT есть SROM, под неё могут быть примеры.
0
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 195
05.03.2016, 13:51
Спасибо за подсказки.
Почитал STM324x7i_eval_fmc_sram.c

Получается ножки адреса просто описываются через функцию GPIO.
И потом при обращении к памяти МК по адресу 0x60000000 (для 1 банка) он выставляет для ножек адреса все нули а для ножек даты значение которое в записано в 0x60000000. А при записи в 0x60000001 ножка А0 ставится в 1 остальные остаются 0. и тд
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
05.03.2016, 18:14
Да, они просто подключаются к блоку FSMC, а дальше уже его забота их дёргать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2016, 18:14
Помогаю со студенческими работами здесь

STM32 + FSMC
Доброго времени суток!!! Господа, подскажите источники информации по модулю FSMC контроллеров STM32. Информации содержащейся в...

FSMC LCD
Здаров форумчане. Дела такие. Какой из следующих экранов можно 100% подрубить на FSMC? url1 url2 url3 url4 Свои варианты...

Непонятки с FSMC
Нужен совет по использованию fsmc. Есть плата на f103vet6 с подключённым ili9341. Несколько месяцев всё это отлично работало с помощью...

Stm32 и FSMC
Добрый день. При выборе отладочной платы под проект немного ошибся и взял 100-ногую stm32f407VET6, а мне нужно подключить SDRAM и LCD по...

stm32f4discovery + fsmc + dma
Добрый день! Коллеги, подскажите пожалуйста. Делаю связку stm32f4discovery + ssd1963 с завязкой на emWin (keil). Уже удалось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru