中级会员
 
- 积分
- 291
- 金钱
- 291
- 注册时间
- 2011-3-23
- 在线时间
- 5 小时
|
发表于 2013-9-15 18:00:31
|
显示全部楼层
回复【楼主位】yongyooh:
---------------------------------
我现在用STM32F4 SPI+DMA不成功!! 请指教
但是我单独用SPI发送是没有问题的,想你赐教下
DMA_DeInit(DMA1_Stream7);
/* DMA1 Stream6 channe4 configuration **************************************/
DMA_InitStructure.DMA_Channel = DMA_Channel_0; //DMA1 拥有1~7,DMA2拥有1~5;
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI3->DR;//外设地址
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&aTxBuffer;//内存地址
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;//DMA传输方向 内存到外设
DMA_InitStructure.DMA_BufferSize =3;//设置DMA在传输时缓存区的长度
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//设置DMA的外设递增模式,一个外设1
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//设置DMA的内存递增模式1
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//外设数据长度 长8bit
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;//内存数据字长 8bit
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;//设置DMA的传输模式:连续不断的循环模式 这里使用正常模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA优先级别最高,一共有四种
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; //不能内存到内存传输 2
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;//2
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA_Init(DMA1_Stream7, &DMA_InitStructure);
/* Enable DMA SPI TX Stream */
DMA_Cmd(DMA1_Stream7,ENABLE);
DMA_Cmd(DMA1_Stream7,ENABLE);
/* Enable DMA SPI RX Stream */
// DMA_Cmd(DMA1_Stream0,ENABLE);
/* Enable SPI DMA TX Requsts */
SPI_I2S_DMACmd(SPI3, SPI_I2S_DMAReq_Tx, ENABLE);
/* Enable SPI DMA RX Requsts */
// SPI_I2S_DMACmd(SPI3, SPI_I2S_DMAReq_Rx, ENABLE);
/* Enable the SPI peripheral */
SPI_Cmd(SPI3, ENABLE);
DMA_ITConfig(DMA1_Stream7,DMA_IT_TC,ENABLE);//打开中断传输完成中断
//配置中断优先级
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream7_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure); |
|