Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
101 lines
5.8 KiB
C
101 lines
5.8 KiB
C
/* Настройка внешней памяти и служебные задержки. Русские пояснения сохранены в 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);
|
||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||
} }
|
||
|