Ruslan1 17 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба Здравствуйте, Есть задача, которая требует активной работы с большим объемом данных (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К ОЗУ, почему так? Заранее спасибо за идеи и подсказки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolotoff 0 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба 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. Будет удобнее, дешевле и быстрее чем МК + память отдельно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба На мой взгляд, стоит взять что-нибудь из ряда F4. Будет удобнее, дешевле и быстрее чем МК + память отдельно. Полностью согласен. Если есть матан, то F0 не советую. Не советую и старую серию F1 - альтернативные функции пинов очень не гибко настраиваются. Если все может уместиться во внутренней RAM, то лучше ориентироваться на нее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 10 июля, 2015 Опубликовано 10 июля, 2015 · Жалоба и сделать эту память прозрачной на уровне компилятора для процедур записи-чтения? То есть я пишу A = Im*Re, а компилятор сам поймет что нужно достать 4-байтовые величины из внешней SPI памяти и вставить обращение к нужным подпрограммам. На C++ - возможно, причем для любого процессора. На "голом" Си - маловероятно. Известные мне компиляторы не умеют, в Стандарте языка такого нет. например, может есть внешняя шина адреса-данных для параллельной SRAM? смотрите STM32 с модулем FSMC. Он умеет. надеюсь на оптимизацию засчет того что внутренняя RAM может быть больше. Да, переход на внутреннее ОЗУ должен дать огромный скачек. Ну и как вариант- взять F3 с RAM 40 килобайт и перестрелять всех зайцев с одним внутренним ОЗУ. Это наилучший вариант. Или сразу F4 - цена на них постоянно падает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 13 июля, 2015 Опубликовано 13 июля, 2015 · Жалоба Большое спасибо всем откликнувшимся за советы! Начитался документации, некоторые моменты очень нравятся, некоторые не очень, ну как всегда и везде и бывает- нет идеального камня. Одновременно есть несколько проектов, требующих просто меньше памяти и вычислизма- и тут замечательно подъодит их совместимость, когда вместо F3 могу F0 впаять. Еще в PIC24 очень помогало маппирование функций (любую функцию можно маппировать на любую из множества ног), у малоногих корпусов это важно. Тут тоже хорошо (хотя 48-ногий корпус у STM32 можно считать минимальным стандартом и тут уже вопрос так остро не стоит как в 20-ногих ПИКах). Ну и шаг можно было бы не 0.5мм а еще и 0.65 мм иметь, ну да ладно. Ну и еще кое-где иногда напрягает отсутствие 5-вольтовых версий, но с этим нужно просто смириться, спасибо что толерантные входы есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 14 июля, 2015 Опубликовано 14 июля, 2015 · Жалоба Еще в PIC24 очень помогало маппирование функций У старых STM-ок не самый приятный ремап альтернативных функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 14 июля, 2015 Опубликовано 14 июля, 2015 · Жалоба У старых STM-ок не самый приятный ремап альтернативных функции. А как определить кто старый кто новый? сейчас сориентировался на два интересных мне по потреблению и ресурсам (STM32F070CBT6 и STM32F411RCT6) - оба оказались очень новыми. Млин, тяжко с непревычки по ST искать, все у них по-своему. А в таблице поиска по параметрам нет такого интересного параметра как "цена", что немного странно. Может, где-то есть более удобное средство для выбора? Пока что пользуюсь троицей: таблица на ST- Дижикей- STM32Cube, не очень-то удобно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться