📄 init_dma.c
字号:
/*****************************************************************************
** **
** Project Name: LCD **
** **
******************************************************************************
(C) Copyright 2005 - Analog Devices, Inc. All rights reserved.
File Name: Init_DMA.c
Date Modified: 5/1/05 CL Rev 1.0
Software: VisualDSP++3.5
Hardware: ADSP-BF561 EZ-KIT Lite
Special Connections: None
Purpose: This file initializes the DMA channel for Core B.
******************************************************************************/
#include "main.h"
#include "DescriptorDMA_PPI.h"
#define XCNT 120
#define XMOD 4
#define YCNT 329
#define YMOD 4
volatile short config_word_b;
void Init_DMA(volatile short *descript_addr, volatile int *frame_addr){
char i;
short descript_size = DESCRIPTOR_SIZE;
short descript_size_in_bytes;
descript_size_in_bytes = descript_size * sizeof(short);
descript_size <<= 8;
config_word_b = descript_size|DMA_CONFIG;
*pDMA1_1_X_COUNT = XCNT; // 2 bytes for each pixel, count divided by four if 32-bit DMA transfers are done
*pDMA1_1_X_MODIFY = XMOD;
*pDMA1_1_Y_COUNT = YCNT;
*pDMA1_1_Y_MODIFY = YMOD;
*pDMA1_1_CURR_DESC_PTR = descript_addr;
ssync();
*pDMA1_1_NEXT_DESC_PTR = descript_addr;
ssync();
for(i=1; i<NUM_BUFFERS; i++){
*descript_addr = (unsigned short) ((int)(descript_addr));
*(descript_addr+1) = (unsigned short) ((int) (*frame_addr) & 0xffff);
*(descript_addr+2) = (unsigned short) ((int) (*frame_addr) >> 16);
*(descript_addr+3) = config_word_b;
frame_addr += 1;
descript_addr = descript_addr+DESCRIPTOR_SIZE;
}
*descript_addr = (unsigned short) ((int)(descript_addr));
*(descript_addr+1) = (unsigned short) ((int) (*frame_addr) & 0xffff);
*(descript_addr+2) = (unsigned short) ((int) (*frame_addr) >> 16);
*(descript_addr+3) = config_word_b & 0xffff;
config_word_b &= 0xfffe;
*pDMA1_1_CONFIG = config_word_b;
ssync();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -