init ppi.c

来自「用BF533的AD程序」· C语言 代码 · 共 46 行

C
46
字号
#include "system.h"

/****************************************************************************************/
/***** InitPPI()																	*****/
/***** Configure PPI for GP input mode, and DMA channel zero for Writes to memory	*****/
/****************************************************************************************/
void InitPPI(void)
{
	
	// configure PPI

// for rev 0.1 and higher silicon
	// Infinite capture with self-start not supported in rev0
	// ADC wordlength, Polarity not inverted, no skipping, 32 bit DMA, no packing, input mode 1FS, infinite capture, PPI initiates transfer
//	*pPPI_CONTROL = DLEN(Number_of_ADC_bits) | DMA32 | PORT_CFG | XFR_TYPE | FLD_SEL;

// for rev 0.0 silicon
// 16-bit wordlength, Polarity not inverted, no skipping, 32 bit DMA, no packing, input mode 1FS, Frame capture, external pulse initiates transfer


// PPI setting for rev0.0 of silicon: self-triggered start not implemented
//	*pPPI_CONTROL = 0x3800 | DMA32 | PORT_CFG | XFR_TYPE;

// PPI setting for rev0.1 and higher  of silicon: self-triggered start mode
	*pPPI_CONTROL = 0x3800 | DMA32 | FLD_SEL | PORT_CFG | XFR_TYPE;

	*pPPI_DELAY   = 0x0000;
	*pPPI_COUNT   = Number_of_ADC_channels * Number_of_Samples;
	*pPPI_FRAME   = Number_of_ADC_channels * Number_of_Samples;


	// configure PPI DMA ( channel 0)
	*pDMA0_CONFIG = FLOW | 0x0400 | DI_EN | WDSIZE_16 | WNR;			// disable DMA transfer and enable large descriptor mode 1d mode (word size = 16bit)
	*pDMA0_NEXT_DESC_PTR = (&DMA_RX_first);
	*pDMA0_X_MODIFY = Number_of_ADC_channels * Word_Size;
	*pDMA0_X_COUNT = Number_of_Samples;

	*pDMA0_CONFIG = *pDMA0_CONFIG | DMAEN;	// enable DMA  (PPI not enabled yet)
	asm("ssync;");

	*pPPI_CONTROL |= PORT_EN;				// enable PPI
	asm("ssync;");

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?