/* Настройка внешней памяти и служебные задержки. Русские пояснения сохранены в UTF-8. */ /* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File // Configure the timing paramaters for Zone 7. // Notes: // This function should not be executed from XINTF // Adjust the timing based on the data manual and // external device requirements. /* Настраивает временные параметры внешней шины XINTF Zone7 для RAM регистратора. */ void init_zone7(void) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { // Make sure the XINTF clock is enabled /* Записывает SysCtrlRegs.PCLKCR3.bit.XINTFENCLK значением 1; данные XINTFENCLK. */ SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; // Configure the GPIO for XINTF with a 16-bit data bus // This function is in DSP2833x_Xintf.c /* Инициализирует модуль вызовом InitXintf16Gpio(); перед его дальнейшим использованием. */ InitXintf16Gpio(); /* Разрешение записи в защищённые регистры периферии. */ EALLOW; // All Zones--------------------------------- // Timing for all zones based on XTIMCLK = SYSCLKOUT /* Записывает XintfRegs.XINTCNF2.bit.XTIMCLK значением 0; данные XTIMCLK. */ XintfRegs.XINTCNF2.bit.XTIMCLK = 0; // Buffer up to 3 writes /* Записывает XintfRegs.XINTCNF2.bit.WRBUFF значением 3; данные WRBUFF. */ XintfRegs.XINTCNF2.bit.WRBUFF = 3; // XCLKOUT is enabled /* Записывает XintfRegs.XINTCNF2.bit.CLKOFF значением 0; данные CLKOFF. */ XintfRegs.XINTCNF2.bit.CLKOFF = 0; // XCLKOUT = XTIMCLK /* Записывает XintfRegs.XINTCNF2.bit.CLKMODE значением 0; данные CLKMODE. */ XintfRegs.XINTCNF2.bit.CLKMODE = 0; // Zone 7------------------------------------ // When using ready, ACTIVE must be 1 or greater // Lead must always be 1 or greater // Zone write timing /* Записывает XintfRegs.XTIMING7.bit.XWRLEAD значением 1; данные XWRLEAD. */ XintfRegs.XTIMING7.bit.XWRLEAD = 1; /* Записывает XintfRegs.XTIMING7.bit.XWRACTIVE значением 2; данные XWRACTIVE. */ XintfRegs.XTIMING7.bit.XWRACTIVE = 2; /* Записывает XintfRegs.XTIMING7.bit.XWRTRAIL значением 1; данные XWRTRAIL. */ XintfRegs.XTIMING7.bit.XWRTRAIL = 1; // Zone read timing /* Записывает XintfRegs.XTIMING7.bit.XRDLEAD значением 1; данные XRDLEAD. */ XintfRegs.XTIMING7.bit.XRDLEAD = 1; /* Записывает XintfRegs.XTIMING7.bit.XRDACTIVE значением 3; данные XRDACTIVE. */ XintfRegs.XTIMING7.bit.XRDACTIVE = 3; /* Записывает XintfRegs.XTIMING7.bit.XRDTRAIL значением 0; данные XRDTRAIL. */ XintfRegs.XTIMING7.bit.XRDTRAIL = 0; // don't double all Zone read/write lead/active/trail timing /* Записывает XintfRegs.XTIMING7.bit.X2TIMING значением 0; данные X2TIMING. */ XintfRegs.XTIMING7.bit.X2TIMING = 0; // Zone will not sample XREADY signal /* Записывает XintfRegs.XTIMING7.bit.USEREADY значением 0; данные USEREADY. */ XintfRegs.XTIMING7.bit.USEREADY = 0; /* Записывает XintfRegs.XTIMING7.bit.READYMODE значением 0; данные READYMODE. */ XintfRegs.XTIMING7.bit.READYMODE = 0; // 1,1 = x16 data bus // 0,1 = x32 data bus // other values are reserved /* Записывает XintfRegs.XTIMING7.bit.XSIZE значением 3; данные XSIZE. */ XintfRegs.XTIMING7.bit.XSIZE = 3; /* Закрытие доступа к защищённым регистрам периферии. */ EDIS; //Force a pipeline flush to ensure that the write to //the last register configured occurs before returning. /* Вызывает asm с аргументами (" RPT #7 || NOP") в текущей последовательности операций. */ asm(" RPT #7 || NOP"); /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Формирует задержку в микросекундах через калиброванную функцию DSP28x_usDelay. */ void pause_us(unsigned long t) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Объявляет i — данные i. */ unsigned long i; /* Записывает t значением t >> 1; данные t. */ t = t >> 1; /* Цикл for (i = 0; i < t; i++); задаёт начальное значение, условие продолжения и шаг перебора. */ for (i = 0; i < t; i++) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Вызывает DSP28x_usDelay с аргументами (CLKMULT*8L) в текущей последовательности операций. */ DSP28x_usDelay(CLKMULT*8L); /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } }