Files
Balsam_167/Source/Internal/tools.c
Andrey f741741cf8 Сохранить русские комментарии и настройки проекта в UTF-8
Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
2026-10-12 12:24:48 +03:00

101 lines
5.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Настройка внешней памяти и служебные задержки. Русские пояснения сохранены в 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);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }