Например TDA7294

Форум РадиоКот • Просмотр темы - Разные устройства на одном FSMC STM32
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 12:41:40

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Пт янв 10, 2014 05:45:22 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Добрый день, уважаемые коллеги.
Назрел такой вопрос: можно ли подключить к одному модулю FSMC STM32 разные типы памяти? Мне нужно подключить SRAM + NAND Flash + LCD ILI9325.
Имея 144-выводной корпус, где 4 ChipSelect-а, думаю, можно. Но, когда захожу в MicroXplorer от ST, там предлагается один из 4 режимов работы FSMC:
1) FSMC_CF
2) FSMC_CF_IDE
3) FSMC_NOR_RAM
4) FSMC_NOR_MUX
5) FSMC_NAND16,
при этом, выбирая один из режимов, остальные режимы становятся недоступными. А зачем тогда нам 4 ChipSelect-а?

Планируется подключить NAND Flash K9F2G08U0B (2GB), какую-нибудь FRAM (еще не определился) и LCD на ILI9325.
Благодарю за внимание!

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Пт янв 10, 2014 09:53:52 
Опытный кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 43
Зарегистрирован: Вт апр 12, 2011 18:38:19
Сообщений: 838
Откуда: с Земли
Рейтинг сообщения: 0
У STM32 один FSMC, и работать он может только в одном режиме. 4 чипселекта нужны для того, чтоб подключить 4 устройства одного типа, например 4 микросхемы FLASH.
Теоретически, можно подключить и разные устройства, а потом переключать режимы FSMC программно. Надо пробовать, тк неизвестно - как себя поведут подключенные устройства в момент переключения режима работы?

_________________
Все будет только лучше, в крайнем случае - хуже.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Пт янв 10, 2014 10:41:11 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
В общем, я так понял, можно, главное программно рулить режимом работы. В схемах отладочных плат так и сделано.

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Вс янв 12, 2014 00:37:27 
Мудрый кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 21
Зарегистрирован: Чт авг 21, 2008 22:03:30
Сообщений: 1733
Откуда: Одесса(Украина)
Рейтинг сообщения: 3
coredumped писал(а):
У STM32 один FSMC, и работать он может только в одном режиме. 4 чипселекта нужны для того, чтоб подключить 4 устройства одного типа, например 4 микросхемы FLASH.

Не вводите человека в заблуждение. FSMC у STM действительно один, но имеет 4 банка, каждый из которых конфигурируется отдельно. Это дает возможность использовать все 4 типа устройств одновременно без никаких программных переопределений назначения FSMC. Вот, пример того, как конфигурируется FSMC с помощью StdPeriphDriver-а. Это получится, что банк 1 будет асоциироваться с четвертым cs-ом, на котором будет висеть NOR SRAM. Соответственно, чтобы сконфигурировать другой банк FSMC, нужно повторить процедуру с другим значением FSMC_NORSRAMInitStructure.FSMC_Bank. В конце надо не забыть включить выбранный банк.
Спойлер
Код:
        FSMC_NORSRAMTimingInitTypeDef  p;
   FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;

        p.FSMC_AddressSetupTime = 2;   
   p.FSMC_AddressHoldTime = 1;   
   p.FSMC_DataSetupTime = 2;      
   p.FSMC_BusTurnAroundDuration = 1;   
   p.FSMC_CLKDivision = 0;
   p.FSMC_DataLatency = 0;
   p.FSMC_AccessMode = FSMC_AccessMode_A;

        FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;                              //Вот тут мы выбираем конфигурируемый банк и сразу же тип устройства, который к нему присоединен и номер cs. Предопределенные константы можно посмотреть в файле stm32fxxx_fsmc.h, там же можно найти и другие полезные функции.
   FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
   FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;   
   FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
   FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
   FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
   FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_High;
   FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
   FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
   FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
   FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
   FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable;
   FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
   FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
   FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
   
   FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); 
   /* BANK 4 (of NOR/SRAM Bank 1~4) is enabled */
   FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);

_________________
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Чт янв 16, 2014 19:30:07 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
РадиоЛоматель, благодарю за помощь!
Не совсем понятен следующий момент. Всего банка 4. Каждый банк - свой тип памяти и доступ к каждому банку осуществляется соответствующим CS. А что за надпись тогда 4x64MB? Я так понимаю 4 банка по 64 Мбайт. Но ими тоже отдельно каждым надо управлять?
Изображение
И еще: в даташите указано, что TFT к FSMC подключается в режиме NOR/SRAM. Но для SRAM выведен один банк памяти (первый) а туда уже будет подключена SRAM (т.е. ее CS будет уже занят)...
Я хотел подключить следующим образом:
банк 1 - TFT, SRAM;
банк 2 - NAND Flash.

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Чт янв 16, 2014 20:17:46 
Мудрый кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 21
Зарегистрирован: Чт авг 21, 2008 22:03:30
Сообщений: 1733
Откуда: Одесса(Украина)
Рейтинг сообщения: 0
Arlleex писал(а):
И еще: в даташите указано, что TFT к FSMC подключается в режиме NOR/SRAM. Но для SRAM выведен один банк памяти (первый) а туда уже будет подключена SRAM (т.е. ее CS будет уже занят)...

Да, это так. Но если прочитать внимательно документ AN2784 Using the high-density STM32F10xxx FSMC peripheral to drive external memories, можно найти там следующее:
Цитата:
From the FSMC point of view, the external memory is divided into four fixed-size banks of
256 Mbytes each, as shown in Figure 2:
● Bank 1 used by the NOR Flash/SRAM controller to address up to 4 memory devices.
This bank is split into 4 regions with 4 dedicated Chip Select signals.
● Banks 2 and 3 used by the NAND Flash/PC Card controller to address NAND Flash
devices.
● Bank 4 used by the NAND Flash/PC Card controller to address a PC Card device.
For each bank, the type of memory to be used is user-defined in the Configuration register.
AHB bus

И в первом пункте мы видим, что первый банк разделен на 4 региона, каждому из которых соответствует свой сигнал CS. К сожалению, я не могу вам уверенно подсказать, как конфигурировать банк в этом случае. У меня дальше одного устройства на FSMC не заходило. Похоже, что я соврал в предыдущем посте про выбор cs-a, ассоциируемого с банком. Это не номер, а количество задействованных cs в этом банке. В общем, смело можете подключать свои устройства к первому банку, пользуясь картинкой Figure 1. FSMC block diagram из упомянутого документа.

_________________
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Чт янв 16, 2014 21:40:31 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Еще раз спасибо, в дополнение надо будет еще посмотреть примеры схем отладочных плат :)

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Пт май 15, 2020 14:02:59 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт июн 08, 2010 10:39:11
Сообщений: 33
Откуда: гТверь
Рейтинг сообщения: 0
Здравствуйте!
Контроллер stm32f765, fmc lcd не заработал. Подключал так
/** FMC GPIO Configuration
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
PD11 ------> FMC_A16
PD14 ------> FMC_D0
PD15 ------> FMC_D1
PG6 ------> FMC_NE3
PD0 ------> FMC_D2
PD1 ------> FMC_D3
PD4 ------> FMC_NOE
PD5 ------> FMC_NWE.
Команды прописал так:
#define LCD_COMM_ADD *(volatile unsigned short *) 0x68000000 // RS = 0
#define LCD_DATA_ADD *(volatile unsigned short *) 0x68020000 // RS = 1
0x60020000 - тоже не дало результата.
До этого все работало на 407 контроллере.
Программная реализация на тех же пинах запустила дисплей но очень медленно.
Возможно сделать программную реализацию быстрее,если штатный fmc не запустится?
В хедере прописал пины для работы.
Вот кусок кода;
void Buf_Data(uint16_t data)
{
if (((data>>15)&0x01) == 0x01){D15_HI;}else {D15_LO;}
if (((data>>14)&0x01) == 0x01){D14_HI;}else {D14_LO;}
if (((data>>13)&0x01) == 0x01){D13_HI;}else {D13_LO;}
if (((data>>12)&0x01) == 0x01){D12_HI;}else {D12_LO;}
if (((data>>11)&0x01) == 0x01){D11_HI;}else {D11_LO;}
if (((data>>10)&0x01) == 0x01){D10_HI;}else {D10_LO;}
if (((data>>9)&0x01) == 0x01){D9_HI;} else {D9_LO;}
if (((data>>8)&0x01) == 0x01){D8_HI;} else {D8_LO;}

if (((data>>7)&0x01) == 0x01){D7_HI;} else {D7_LO;}
if (((data>>6)&0x01) == 0x01){D6_HI;} else {D6_LO;}
if (((data>>5)&0x01) == 0x01){D5_HI;} else {D5_LO;}
if (((data>>4)&0x01) == 0x01){D4_HI;} else {D4_LO;}
if (((data>>3)&0x01) == 0x01){D3_HI;} else {D3_LO;}
if (((data>>2)&0x01) == 0x01){D2_HI;} else {D2_LO;}
if (((data>>1)&0x01) == 0x01){D1_HI;} else {D1_LO;}
if (((data>>0)&0x01) == 0x01){D0_HI;} else {D0_LO;}
}

void LCD_WriteCommand(uint16_t cmd)
{
RS_LO;
//CS_LO;
Buf_Data(cmd);
WR_LO;
WR_HI;
//CS_HI;
}

void LCD_WriteData(uint16_t data)
{
RS_HI;
//CS_LO;
Buf_Data(data);
WR_LO;
WR_HI;
//CS_HI;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Пт май 15, 2020 15:04:09 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
#define LCD_COMM_ADD *(volatile unsigned short *) 0x68000000 // RS = 0
#define LCD_DATA_ADD *(volatile unsigned short *) 0x68020000 // RS = 1

Прописано правильно, но volatile - это указание компилятору не выбрасывать "лишние" обращения к памяти, а у F7 еще есть кеш, причем атрибуты памяти по этим адресам такие же как у SRAM, т.е. нужно при помощи MPU этот регион памяти сделать некешируемым или отключить кеш вообще.

Цитата:
Возможно сделать программную реализацию быстрее,если штатный fmc не запустится?

Конечно, некоторые С++ либы это делают автоматически, но можно и вручную взять сразу 9 бит, сдвинуть и записать за раз в GPIOE->BSRR, вместо того чтобы делать 9 проверок...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Пт май 15, 2020 16:08:11 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт июн 08, 2010 10:39:11
Сообщений: 33
Откуда: гТверь
Рейтинг сообщения: 0
Спасибо большое.Сам являюсь любителем самоучкой в этой области.Все примеры взяты из интернета.
Поможете в этом деле с FMC?
Настраивал через программу STM32 cube
Заранее большое спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
СообщениеДобавлено: Сб май 16, 2020 18:05:24 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт июн 08, 2010 10:39:11
Сообщений: 33
Откуда: гТверь
Рейтинг сообщения: 0
Разобрался спасибо.


Вложения:
настройка FMC.jpg [184.51 KiB]
Скачиваний: 348
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y