ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
282729
rezident (09.11.2011 22:59, просмотров: 6136)
Кто плотно работал с интерфейсом SSP в NXP-ных ARM9? Требуется помощь/консультация. Коллега мается с одной проблемой. Ему требуется как-то программно организовать передачу произвольного количества слов (меньше, чем размер FIFO, например 1 или 2 байта) через SSP так, чтобы конец фрейма обнаруживался сразу после передачи последнего слова? Сейчас схемотехника и логика работы такова: - режим SSP - мастер, аппаратный сигнал SSEL не используется; - стоит м/с дешифратора для четырех устройств, подключенных к SSP; - адрес ведомой м/с (управляющий сигналом CS ведомого) устанавливается программно с помощью GPIO; - система реал-таймовая, запросы на транзакцию через SSP обрабатывает некий менеджер; - для контроля передачи менеджер использует прерывание RTMIS. Проблема в том, что у SSP всего четыре источника прерываний. Но для данного режима работы подходит только прерывание RTMIS. Однако RTMIS вызывается не сразу после опустошения FIFO, а через промежуток времени, упоминаемый в User manual как "timeout period". Параметры этого timeout period мне лично в документации обнаружить не удалось. Коллега утверждает, что он достаточно большой и его эта величина никак не устраивает. Как нужно было сделать по-уму я знаю/понимаю. Но "маємо те, що маємо". Интересуют мнения, как можно это (быстрое обнаружение конца фрейма произвольной длины) сделать сейчас без изменения схемотехники, только программными средствами? Я предложил коллеге использовать таймер, чтобы подсчитав время, необходимое для передачи фрейма задавать прерывание от таймера в котором проверять статусный регистр SSP и деактивировать и/или переключать сигналы CS ведомых. Коллеге такой способ не очень нравится. Может кто-то предложит другие способы? Блин, ну почему инженеры NXP сэкономили на количестве источников прерываний в SSP? Ведь SPI у них более-менее по-уму реализован.