7.9. Нарисуйте структурную схему последовательных портов SPORT, охарактеризуйте их функциональные возможности.
7.10. Расскажите по схеме про ввод/вывод через последовательные порты и прерывания по приему и передаче.
7.11. Что такое компандирование и зачем оно применяется?
7.12. Расскажите о настройке последовательного порта.
7.13. Расскажите о работе приемной части последовательного порта в режимах внешней и внутренней кадровой синхронизации.
7.14. Как программируется тактовая частота SCLK последовательного порта?
7.15. Как использовать файлы данных для моделирования последовательного ввода/вывода?
Программа к ЛР № 9
/* ADSP-2181 Serial Port Program файл SPort.asm
Программа моделирования последовательного порта принимает данные, поступающие на вход SPORT1, затем передаёт эти данные через SPORT1, то-есть. имеет место сквозное прохождение данных через этот порт. Компандирование включено, так что принимаемые данные расширяются, а затем сжимаются прежде, чем быть переданными.
По прерыванию приёма SPORT1 выполняется обработка, состоящая из пересылки данных из регистра приёма RX1 в регистр передачи TX1 через регистр AX0.
Используется файл описания архитектуры ЦСП ADSP-2181.ldf.
*/
.section/pm interrupts; // --- Таблица векторов прерываний --_reset: JUMP start; NOP; NOP; NOP; // 0x0000: вектор сброса
RTI; NOP; NOP; NOP; // 0x0004: IRQ2
RTI; NOP; NOP; NOP; // 0x0008: IRQL1
RTI; NOP; NOP; NOP; // 0x000C: IRQL0
RTI; NOP; NOP; NOP; // 0x0010: SPORT0 передача
RTI; NOP; NOP; NOP; // 0x0014: SPORT0 приём
RTI; NOP; NOP; NOP; // 0x0018: IRQE
RTI; NOP; NOP; NOP; // 0x001C: BDMA
RTI; NOP; NOP; NOP; // 0x0020: SPORT1 передача
JUMP sample; NOP; NOP; NOP; // 0x0024: SPORT1 приём
RTI; NOP; NOP; NOP; // 0x0028: таймер
RTI; NOP; NOP; NOP; // 0x002C: Power down
.section/pm program;
start: // ---- Инициализации -----
AX0=0x0000;
DM(0x3FFE)=AX0; // все DMWAIT равны 0
DM(0x3FFD)=AX0; // таймер не использован,
DM(0x3FFC)=AX0; // 3 его регистра очищены
DM(0x3FFB)=AX0;
DM(0x3FFA)=AX0; // многоканальный прием запрещен
DM(0x3FF9)=AX0;
DM(0x3FF8)=AX0; // многоканальная передача запрещена
DM(0x3FF7)=AX0;
DM(0x3FF6)=AX0; // SPORT0 управление, не используется
DM(0x3FF5)=AX0; // SPORT0 синхронизация, не используется
DM(0x3FF4)=AX0;
DM(0x3FF3)=AX0; // SPORT0 автобуферизация запрещена
AX0=0x6B27; // внутренняя последовательность синхросигналов
DM(0x3FF2)=AX0; // требование RFS, нормальный кадр,
// требование TFS, нормальный кадр,
// внутренние RFS, TFS, мю-закон, слово 8 бит
AX0=0x0002; // формировать частоту SCLK1=2.048 МГц
DM(0x3FF1)=AX0; // из частоты CLKIN=12.288 МГц
AX0=255; // деление на 256 для
DM(0x3FF0)=AX0; // частоты кадров 8 кГц
AX0=0x0000;
DM(0x3FEF)=AX0; // автобуферизация SPORT1 запрещена
ICNTL=0x07; // разрешена реакция на фронт прерывания
IMASK=0x02; // разрешено прерывание SPORT1 прием
AX0=0x0C00; // SPORT1 разрешен, PMWAIT=0, BMWAIT=0,
DM(0x3FFF)=AX0; // страница загрузки 0
wait: // ---- Ожидание выборки ----IDLE; // ожидание прерывания приема
JUMP wait; // переход к ожиданию
sample: // ---- Обработка выборки -----
AX0=RX1; // поместить принятую выборку в AX0
TX1=AX0; // передавать выборку, находящуюся в AX0
RTI; // возврат из прерывания
// конец файла sport.asm
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.