1 | // recieve
|
2 | DMA_DeInit(DMA1_Channel2);
|
3 | DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)0x4001300C;
|
4 | DMA_InitStructure.DMA_MemoryBaseAddr = NULL;
|
5 | DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
|
6 | DMA_InitStructure.DMA_BufferSize = 0;
|
7 | DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
8 | DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
|
9 | DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
|
10 | DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
|
11 | DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
|
12 | DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
|
13 | DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
|
14 | DMA_Init(DMA1_Channel2, &DMA_InitStructure);
|
15 |
|
16 | // Enable the SPI DMA RX Interrupt
|
17 | NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel2_IRQn;
|
18 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
19 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
20 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
21 | NVIC_Init(&NVIC_InitStructure);
|
22 |
|
23 | // initialize SPI
|
24 | SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
|
25 | SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
|
26 | SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
|
27 | SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
|
28 | SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
|
29 | SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
|
30 | SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
|
31 | SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
|
32 | SPI_InitStructure.SPI_CRCPolynomial = 7;
|
33 | SPI_Init(SPI1, &SPI_InitStructure);
|
34 |
|
35 | // Enable SPI DMA requests
|
36 | SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Tx, ENABLE);
|
37 | SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Rx, ENABLE);
|
38 |
|
39 | // Enable SPI
|
40 | SPI_Cmd(SPI1, ENABLE);
|