Последовательные порты ввода/вывода. Изучение свойств и режимов работы последовательных портов SPORT1 и SPORT0 и возможностей подключения различных внешних устройств, страница 2

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