📄 init ppi.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -