Ситуация: Есть DSP-процессора и процессор SAM7X256. Общение между ними по SPI каналу в режиме DMA (PDC в случае с SAM7X256) большим потоком данных - 1кбайт, при этом SAM7X256 в режиме slave. Проблематика: Для того, чтобы SAM7X256 правильно начал принимать весь пакет - он должен запустить SPI-DMA перед тем, как DSP начнет передавать данные, иначе он все равно примет эти данные (если нет таймаута по приему), т.к. посылка закольцована, но структура принятых/переданных данных будет неправильной. Задача: Настроить алгоритм поиска момента активазиции режима slave SPI-DMA SAM7X256. Решение. 1-ый способ. Он основан на том, что существует какая-то временная пауза (пусть она составляет 5 мс) в общении двух процессоров 1) запускаем таймер на 2 мс; 2) разрешаем прерывание по поиску полож.фронта выбор slave SPI SAM7X256 (прерывание NSS Rising Interrupt); 3) в случае возникновения прерывания NSS Rising Interrupt перезапускаем таймер на 2 мс; 4) в случае срабатывания таймера разрешаем работу slave SPI-DMA; 5) после работы slave SPI-DMA возвращаемся в п.1 или просто разрешаем повторный slave SPI-DMA 2-ой способ. Надо думать как еще сделать. Возможно использование допол.ножек.
Какие еще будут предложения?
|