ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
831135
Evgeny_CD, Архитектор (11.04.2018 22:39 - 22:41, просмотров: 5854)
Попытка разобраться с EPMP в PIC24FJ256GA705 -> http://caxapa.ru/815951.html
Задача. Вселенная -> PIC24 - 8 бит 2Мбайта/сек, PIC24 -> Вселенная 8 бит 2Мбайта/сек. Падение скорости PIC в моменты такой передачи в 2 раза допускаются. Стоит CPLD, которая форматирует потоки в 8 бит PSP, важно, что именно slave. DMA в этом пике в качестве запросов использует прерывания. У EPMP прерывание всего одно. Его можно настроить либо на заполнение буфера, либо на транзакции записи/чтения без буфера. Но раз прерывание одно, то и канал DMA всего один. А нам надо два. Если сделать такой хак. Один из потоков обслуживается DMA EPMP штатно. Второй хытро. CPLD после того, как выполнила запись в EPMP slave, или 2 записи подряд (надо разбираться, что там 8 бит, что 16), дергает за пин внешнего прерывания. У этого пика 3 пина могут генерить прерывания. DMA по этому запросу отрабатывает транзакцию с буфером EPMP, с другим буфером, чем при штатной работе EPMP DMA. Вообще говоря, похоже что оба потока выгодно перевести в такой режим, потому что CPLD в состоянии сформатировать работу с потоками в режим работы "две 8 битные транзакции подряд", а нагрузка на шины в 2 раза меньше. Кто-нибудь с EPMP работал так по DMA? Какие могут быть засады? Описания EPMP, прерываний и DMA вложено.