Перейти к содержанию
    

быстрый(простой) интерфейс STM32 F0 (F1) с внешней RAM

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

 

Есть задача, которая требует активной работы с большим объемом данных (FFT по массиву 32 килобайта).

Сейчас работаю с PIC24, к которому подцепил последовательную SRAM по SPI интерфейсу.

Компилятор позволяет описать эту память, и далее работать с расположенными в ней данными как с внутренней памятью (только медленнее, но оптимизирован доступ к 1,2,4-байтным данным). Это всего лишь вызов моих функций общения с внешней RAM, то есть могу вставить не SPI a любой другой интерфейс.

 

Хочу перейти на STM32 F0 или F1: при прочих равных у них, по сравнению с PIC24, больше внутреннего RAM и меньше цена, да и 12-бит АЦП везде, а не иногда как это в PIC (мне нужно не меньше чем 12 бит).

 

Пока что вопросы вот какие:

1. Есть ли возможность прицепить внешнее RAM объемом до 64 кБайт к младшим моделям и сделать эту память прозрачной на уровне компилятора для процедур записи-чтения? То есть я пишу A = Im*Re, а компилятор сам поймет что нужно достать 4-байтовые величины из внешней SPI памяти и вставить обращение к нужным подпрограммам.

2. Как еще можно подцепить память? взять 4-битную или 8-битную? какие механизмы быстрого доступа есть в STM32? например, может есть внешняя шина адреса-данных для параллельной SRAM?

3. Что-нибудь еще для подключения внешней памяти, специфическое для STM32 ? Например, вижу недорогие модели с RAM 16 к, вероятно смогу что-то соптимизировать для минимизации обращений во внешнее RAM. Ну и какое-то DMA присутствеут, может поможет.

 

Сильным стимулом к переходу от 16-битного PIC24 на 32-битный STM32 будет, если скорость обработки возможно увеличить ну хоть в несколько раз. Сейчас у меня обработка FFT 4096 точек в формате плавающей запятой ординарной точности занимает около 20 секунд (благодаря внешней SPI RAM памяти, внутренняя RAM всего 2к). Чего можно ожидать от STMF0 ? Я вижу выигрыш засчет 32-битного ALU. Ну, тактовую от 32 МГц до 48 МГц поднять могу (30% выигрыш). надеюсь на оптимизацию засчет того что внутренняя RAM может быть больше. Что еще?

 

Ну и как вариант- взять F3 с RAM 40 килобайт и перестрелять всех зайцев с одним внутренним ОЗУ. А к нему можно цивильно внешнюю RAM подключить "на вырост"?

Еще обнаружил на дижикее STM32F411RCT6 - он почему-то дешевле чем F3, хотя имеет аж 128К ОЗУ, почему так?

 

Заранее спасибо за идеи и подсказки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Есть ли возможность прицепить внешнее RAM объемом до 64 кБайт к младшим моделям и сделать эту память прозрачной на уровне компилятора для процедур записи-чтения? То есть я пишу A = Im*Re, а компилятор сам поймет что нужно достать 4-байтовые величины из внешней SPI памяти и вставить обращение к нужным подпрограммам.

2. Как еще можно подцепить память? взять 4-битную или 8-битную? какие механизмы быстрого доступа есть в STM32? например, может есть внешняя шина адреса-данных для параллельной SRAM?

3. Что-нибудь еще для подключения внешней памяти, специфическое для STM32 ? Например, вижу недорогие модели с RAM 16 к, вероятно смогу что-то соптимизировать для минимизации обращений во внешнее RAM. Ну и какое-то DMA присутствеут, может поможет.

 

У F103 серии есть FSMC контроллер и можно подключать внешнюю SRAM. Вопрос в том, что считать "младшей моделью". Да и зачем ради 64КБ городить огород?

http://www.st.com/st-web-ui/static/active/.../CD00191185.pdf

 

Сильным стимулом к переходу от 16-битного PIC24 на 32-битный STM32 будет, если скорость обработки возможно увеличить ну хоть в несколько раз. Сейчас у меня обработка FFT 4096 точек в формате плавающей запятой ординарной точности занимает около 20 секунд (благодаря внешней SPI RAM памяти, внутренняя RAM всего 2к). Чего можно ожидать от STMF0 ? Я вижу выигрыш засчет 32-битного ALU. Ну, тактовую от 32 МГц до 48 МГц поднять могу (30% выигрыш). надеюсь на оптимизацию засчет того что внутренняя RAM может быть больше. Что еще?

 

Если нужна скорость, то лучше уж использовать серию F4. Памяти навалом, частота выше, поддержка процессором операций с плавающей точкой(FPU).

И конечно есть DSP со своими командами. На сайте ST есть библиотека с реализаций FFT.

 

Ну и как вариант- взять F3 с RAM 40 килобайт и перестрелять всех зайцев с одним внутренним ОЗУ. А к нему можно цивильно внешнюю RAM подключить "на вырост"?

Еще обнаружил на дижикее STM32F411RCT6 - он почему-то дешевле чем F3, хотя имеет аж 128К ОЗУ, почему так?

 

В серии F3 много аналоговой периферии и точных АЦП. Ну и F411 довольно новая модель, возможно пиарят ценой.

 

На мой взгляд, стоит взять что-нибудь из ряда F4. Будет удобнее, дешевле и быстрее чем МК + память отдельно.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На мой взгляд, стоит взять что-нибудь из ряда F4. Будет удобнее, дешевле и быстрее чем МК + память отдельно.

Полностью согласен.

 

Если есть матан, то F0 не советую. Не советую и старую серию F1 - альтернативные функции пинов очень не гибко настраиваются.

Если все может уместиться во внутренней RAM, то лучше ориентироваться на нее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и сделать эту память прозрачной на уровне компилятора для процедур записи-чтения? То есть я пишу A = Im*Re, а компилятор сам поймет что нужно достать 4-байтовые величины из внешней SPI памяти и вставить обращение к нужным подпрограммам.
На C++ - возможно, причем для любого процессора. На "голом" Си - маловероятно. Известные мне компиляторы не умеют, в Стандарте языка такого нет.

например, может есть внешняя шина адреса-данных для параллельной SRAM?
смотрите STM32 с модулем FSMC. Он умеет.

надеюсь на оптимизацию засчет того что внутренняя RAM может быть больше.
Да, переход на внутреннее ОЗУ должен дать огромный скачек.

Ну и как вариант- взять F3 с RAM 40 килобайт и перестрелять всех зайцев с одним внутренним ОЗУ.
Это наилучший вариант. Или сразу F4 - цена на них постоянно падает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо всем откликнувшимся за советы!

 

Начитался документации, некоторые моменты очень нравятся, некоторые не очень, ну как всегда и везде и бывает- нет идеального камня.

 

Одновременно есть несколько проектов, требующих просто меньше памяти и вычислизма- и тут замечательно подъодит их совместимость, когда вместо F3 могу F0 впаять.

 

Еще в PIC24 очень помогало маппирование функций (любую функцию можно маппировать на любую из множества ног), у малоногих корпусов это важно. Тут тоже хорошо (хотя 48-ногий корпус у STM32 можно считать минимальным стандартом и тут уже вопрос так остро не стоит как в 20-ногих ПИКах). Ну и шаг можно было бы не 0.5мм а еще и 0.65 мм иметь, ну да ладно.

 

Ну и еще кое-где иногда напрягает отсутствие 5-вольтовых версий, но с этим нужно просто смириться, спасибо что толерантные входы есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще в PIC24 очень помогало маппирование функций

У старых STM-ок не самый приятный ремап альтернативных функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У старых STM-ок не самый приятный ремап альтернативных функции.

А как определить кто старый кто новый?

сейчас сориентировался на два интересных мне по потреблению и ресурсам (STM32F070CBT6 и STM32F411RCT6) - оба оказались очень новыми.

Млин, тяжко с непревычки по ST искать, все у них по-своему. А в таблице поиска по параметрам нет такого интересного параметра как "цена", что немного странно.

Может, где-то есть более удобное средство для выбора? Пока что пользуюсь троицей: таблица на ST- Дижикей- STM32Cube, не очень-то удобно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...