2015-12-23 3 views
1

Я использую ARM Cortex M4, и я хочу спросить, можно ли выгрузить основные задачи обработки формы и разрешить им работать в фоновом режиме.Задачи связи с микроконтроллером в фоновом режиме

Например, я использую на ARM MCU это периферия:

  • ADC
  • I2C
  • UART
  • SPI

Когда adc_start (ADC); , ADC запускает преобразование в фоновом режиме, поэтому мне не нужно ждать, пока ADC завершит преобразование, и я могу перейти к следующей версии, а затем прочитать результат ADC.

Я хочу спросить, можно ли сделать то же самое с периферийными устройствами связи. I2C и SPI могут быть быстрыми, но поскольку эти типы микроконтроллеров могут достигать 50 МГц и более, это отходы от скорости MCU, если мне нужно подождать, пока I2C не закончит передачу на 400 кГц или SPI с частотой 20 МГц или хуже с UART. Кроме того, если я выполняю некоторые задачи, и я не хочу их прерывать, мне нужно иметь возможность выгружать MCU из любых прерываний из периферийных устройств и позволять им получать пакеты, накапливать их и когда мне нужно их читать.

Возможно что-то подобное?

+0

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

ответ

1

Если я правильно понял вопрос, вы ищете автоматическую обработку прерываний на быстрых коммуникационных периферийных устройствах, таких как I2C и SPI. Насколько я знаю, ДА! его достижимый, по крайней мере, на MCU с процессорами ARM CORTEX M4 на базе Texas Instruments TIVA. Это довольно отличная функция, когда вы работаете над алгоритмами с интенсивным вычислением, а CPU не увязывается с ожиданием завершения SPI своей задачи. Для хорошей ссылки на программирование периферийных устройств CORTEX M4, я рекомендую держать эту книгу под рукой: http://www.amazon.com/TI-ARM-Peripherals-Programming-Interfacing-ebook/dp/B00L9DRAI2

Таблицы 6-7 в главе 6 книги подробно таблицу векторов прерываний на TM4C123G MCU (один поставляется с TIVA). Прерывания 50 и 53 являются назначениями для периферийных устройств SSI/SPI и I2C соответственно. Процесс должен быть достаточно простым, если вы разоблачите правильные прерывания.

Смежные вопросы