Разработка автоматизированного рабочего места оператора обработки информации радиотехнических систем

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



LOAD_ADDRESS (AT91C_DDR2 + 0x0100000)

/// Базовый адресс в котором находится декодированное изображение

#define IMAGE_BASE_ADDRESS (AT91C_DDR2 + 0x0200000)

/// Адресс Экранной заставки

#define DISPLAY_ADDRESS (AT91C_DDR2 + 0x0300000)

#elif defined(PINS_SDRAM)

#else

#error Not define PINS_DDRAM

#endif

/// DMA transfer WORD width.

#define DMA_TRANSFER_WIDTH 2

/// Numbers of color channel of image (RGB).

#define PICTURE_COLOR_CHANNEL 3

/// Ширина LCD Дислея

#define IMAGE_WIDTH (480 * PICTURE_COLOR_CHANNEL)

/// Высота LCD Дислея

#define IMAGE_HEIGHT 272

/// Ширина графического файла.

#define PICTURE_WIDTH (480 * PICTURE_COLOR_CHANNEL)

/// Высота графического файла.

#define PICTURE_HEIGHT (272 *PICTURE_COLOR_CHANNEL)

/// Адрес смещения графического файла.

#define ATMEL_OFFSET_IN_IMAGE 0

/// Расчет количества строк для передачи.

#define DMA_TRANSFER_SIZE(size) ((size) >> DMA_TRANSFER_WIDTH)

/// Задержка экрана.

#define DELAY 3

//------------------------------------------------------------------------------

// Локальные переменные

//------------------------------------------------------------------------------

/// Буфер передачиDmaLinkList dmaLinkList[PICTURE_HEIGHT];

//------------------------------------------------------------------------------

// Local functions

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

/// Текст для прокерки режима передачи.

//------------------------------------------------------------------------------TestCallback()

{("-I- Callback fired !\n\r");

}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

/// Декодирование Графического файла.

//------------------------------------------------------------------------------void DecodeImage(void)

{

// Decode new image_Decode((void *) IMAGE_LOAD_ADDRESS,

(unsigned char *)IMAGE_BASE_ADDRESS,_LCD_WIDTH,_LCD_HEIGHT,

24);

}

//------------------------------------------------------------------------------

/// Передача графического изображения используя мульти-буферный обмен передчи. Linked

/// Список источника и назначения.

/// \param x X-axis offset for destination

/// \param y Y-axis offset for destination.

//------------------------------------------------------------------------------void transferImageWithMultiBufferLli(unsigned int x, unsigned int y)

{int bufferSize;int startSourceAddr;int startDestAddr;_Initialize(DMA_CHANNEL_1, DMAD_USE_DEFAULT_IT);= IMAGE_BASE_ADDRESS + ATMEL_OFFSET_IN_IMAGE;= DISPLAY_ADDRESS + x * PICTURE_COLOR_CHANNEL + y * IMAGE_WIDTH;= DMA_TRANSFER_SIZE(PICTURE_WIDTH);(startSourceAddr, startDestAddr);_Configure_TransferController(DMA_CHANNEL_1, bufferSize, DMA_TRANSFER_WIDTH, DMA_TRANSFER_WIDTH, 0, 0);_Configure_Buffer(DMA_CHANNEL_1, DMA_TRANSFER_LLI, DMA_TRANSFER_LLI, &dmaLinkList[0], 0);_BufferTransfer(DMA_CHANNEL_1, DMA_TRANSFER_SIZE(PICTURE_WIDTH), TestCallback, 1);

}

//------------------------------------------------------------------------------

/// Передача части графического файла используя мульти-буферную передачу начиная с адреса.

//------------------------------------------------------------------------------void transferImageWithMultiBufferReload(void)

{int bufferSize;int startSourceAddr;int startDestAddr;

// Initialize DMA controller using channel 1._Initialize(DMA_CHANNEL_1, DMAD_USE_DEFAULT_IT);= IMAGE_BASE_ADDRESS; // + PICTURE_ROW * IMAGE_WIDTH;= DISPLAY_ADDRESS + 0 * IMAGE_WIDTH;;= (480*272*3); //DMA_TRANSFER_SIZE (PICTURE_HEIGHT * IMAGE_WIDTH*2);

/// Настройка размера передачи._Configure_TransferController(DMA_CHANNEL_1, bufferSize, DMA_TRANSFER_WIDTH, DMA_TRANSFER_WIDTH, startSourceAddr, startDestAddr);

// Настройка мульти-буферного обмена с автоматически перезагружаемым адресом и переходящим на смежный DMAD_Configure_Buffer(DMA_CHANNEL_1, DMA_TRANSFER_RELOAD, DMA_TRANSFER_CONTIGUOUS, 0 , 0);

// Старт 1 канала передачи. Данный графический файл загружается 1 раз.

DMAD_BufferTransfer(DMA_CHANNEL_1, bufferSize * 1, TestCallback, 0);(!DMAD_IsFinished(DMA_CHANNEL_1));

}

//------------------------------------------------------------------------------

/// Главная программа

//------------------------------------------------------------------------------main()

{int time;

unsigned char delay;

/// Координаты точки вдоль оси Х на экране.int x = 0;

/// Координаты точки вдоль оси У на экране.

unsigned int y = 0;_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);("-- Basic DMA Screensaver Project %s --\n\r", SOFTPACK_VERSION);("-- %s\n\r", BOARD_NAME);("-- Compiled: %s %s --\n\r", __DATE__, __TIME__);

//Конфигурация DDRAM для использования_ConfigureDdram(0, BOARD_DDRAM_BUSWIDTH);

// Декодирование файла.();

// Инициализация LCD дисплея.

LCDD_Fill((unsigned char*)DISPLAY_ADDRESS, COLOR_BLACK);_Initialize();_DisplayBuffer((unsigned char*)DISPLAY_ADDRESS);

// Время от момента посылки до момента получения ответа составляет 3 с.

RTT_SetPrescaler(AT91C_BASE_RTTC, 32768);

// Передача Графического с использованием нескольких буферов обмена с адресом автоматической перезагрузкой и смежными адресами назначения.

transferImageWithMultiBufferReload();= 0;(delay != DELAY){

// Wait next second(time == RTT_GetTime(AT91C_BASE_RTTC));= RTT_GetTime(AT91C_BASE_RTTC);++;

}

// Очистка Экрана.

// LCDD_Fill((unsigned char*)DISPLAY_ADDRESS, COLOR_BLACK);

// Старт заставки до начала нажатия кнопки.

/* while(1) {

// Transfer part of image(black picture) using single buffer transfer with Picture-In-Picture mode enable.(x, y);(&x, &y);

// Transfer part of image(atmel logo) using multi-buffer transfer with Linked List for both source and destination.(x, y);

// Back to desktop if user key detected.(DBGU_IsRxReady()){_GetChar();;

}(time == RTT_GetTime(AT91C_BASE_RTTC));= RTT_GetTime(AT91C_BASE_RTTC);

} */

}

// return 0;

}

Библиотеки:

#ifndef LCDD_H

#define LCDD_H

//------------------------------------------------------------------------------

// Глобальные функции

//------------------------------------------------------------------------------void LCDD_Initialize(void);void * LCDD_DisplayBuffer(void *pBuffer);void LCDD_Start(void);void LCDD_Stop(void);void LCDD_SetBacklight (unsigned int step only

#endif

#ifndef COLOR_H

#define COLOR_H

//------------------------------------------------------------------------------

/// RGB 24 Bpp

//------------------------------------------------------------------------------

#define COLOR_BLACK 0x000000

#define COLOR_WHITE 0xFFFFFF

#define COLOR_BLUE 0x0000FF

#define COLOR_GREEN 0x00FF00

#define COLOR_RED 0xFF0000

#define COLOR_NAVY 0x000080

#define COLOR_DARKBLUE 0x00008B

#define COLOR_DARKGREEN 0x006400

#define COLOR_DARKCYAN 0x008B8B

#define COLOR_CYAN 0x00FFFF

#define COLOR_TURQUOISE 0x40E0D0

#define COLOR_INDIGO 0x4B0082

#define COLOR_DARKRED 0x800000

#define COLOR_OLIVE 0x808000

#define COLOR_GRAY 0x808080

#define COLOR_SKYBLUE 0x87CEEB

#define COLOR_BLUEVIOLET 0x8A2BE2

#define COLOR_LIGHTGREEN 0x90EE90

#define COLOR_DARKVIOLET 0x9400D3

#define COLOR_YELLOWGREEN 0x9ACD32

#define COLOR_BROWN 0xA52A2A

#define COLOR_DARKGRAY 0xA9A9A9

#define COLOR_SIENNA 0xA0522D

#define COLOR_LIGHTBLUE 0xADD8E6

#define COLOR_GREENYELLOW 0xADFF2F

#define COLOR_SILVER 0xC0C0C0

#define COLOR_LIGHTGREY 0xD3D3D3

#define COLOR_LIGHTCYAN 0xE0FFFF

#define COLOR_VIOLET 0xEE82EE

#define COLOR_AZUR 0xF0FFFF

#define COLOR_BEIGE 0xF5F5DC

#define COLOR_MAGENTA 0xFF00FF

#define COLOR_TOMATO 0xFF6347

#define COLOR_GOLD 0xFFD700

#define COLOR_ORANGE 0xFFA500

#define COLOR_SNOW 0xFFFAFA

#define COLOR_YELLOW 0xFFFF00

#endif // #define COLOR_H

#ifndef DRAW_H

#define DRAW_H

//--------------------