Какой MCU (Cortex-M) для приложения GPIO, критичного ко времени? - PullRequest
0 голосов
/ 26 апреля 2019

У нас есть приложение, которое работает на PIC24H, мы хотели бы перенести его на другой MCU, предпочтительно ARM Cortex. Приложение крайне критично ко времени, а это означает, что нам необходимо крайне детерминированное поведение кода. Одним словом, есть импульсы, которые поступают через специальное аппаратное обеспечение на выводы GPIO, данные анализируются сразу. Обработка данных не сложна (для этого нам не нужен сложный процессор / mcu). После анализа данных выходные выводы GPIO записываются в их значения.

Приложение в 3 коротких строки: входные контакты процесса определить шаблон при обработке входных пинов на основе полученного вывода записи вывода шаблона

PIC24H работает на частоте 40 МГц, мы можем переключить вывод в 25 нс, мы были бы благодарны, по крайней мере, за 2-кратную скорость для будущих обновлений. Так что MCU, который может запускать детерминированный код и переключать контакты с частотой не менее 80 МГц (12,5 нс), будет просто замечательно. Нам не нужно переключать контакты с постоянной высокой скоростью, нам нужен mcu, который может переключать его менее чем за 25 нс. Мы не можем тратить циклы при переключении, если один цикл выключен, мы теряем синхронизацию. Все должно быть выполнено с точностью до одного цикла (или двух, но постоянных двух циклов), поэтому код должен быть на 100% детерминированным.

Пожалуйста, дайте мне знать, если я что-то упустил, или если то, что нам нужно, можно сделать с помощью некоторых других методов в Cortex-M. Просто имейте в виду, что в случае потери одного цикла (из-за кеша или подобного) мы теряем синхронизацию сигнала, и приложение не будет работать правильно или вообще.

Спасибо! Br

1 Ответ

1 голос
/ 29 апреля 2019

Согласно этому сообщению в блоге , задержка прерывания для Cortex-M колеблется от 12 до 16 циклов (при условии, что вы не используете регистры FPU) с памятью в лучшем случае. M0 и M0 + медленнее, чем M3 / M4 / M7. Кроме того, вам нужно добавить время доступа к GPIO (и следить за разными тактовыми частотами между ядром и периферийными устройствами. Cortex-M7 будет поддерживать более высокие тактовые частоты, чем M3 / M4.

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

Если вы избегаете доступа к любым «медленным» периферийным устройствам, которые могут остановить шину, задержка прерывания должна быть детерминированной - любое конкретное устройство должно иметь документацию, которая покрывает это.

У NXP есть примечание к приложению , которое описывает некоторые детали того, как измерить происходящее.

...