• 大小: 16.66MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-26
  • 语言: 其他
  • 标签: stm32f407  SPI  DMA  CH376  

资源简介

内含SPI1/SPI2两个接口的读写版本,都是用的DMA方式,通信速度还不够快,好像几十KB吧,具体忘了多少了。下载者可以试着优化一下,速度还可以提高的。部分测试结果:https://blog.csdn.net/weixin_41565755/article/details/83115489

资源截图

代码片段和文件信息

#include “dma.h“
/* SPI DR寄存器的地址,可通过查看SPI1一步一步得到 */

/* 定义接收缓冲和发送缓冲 */
u8 SPI_RX_BUFFER[CH376_RX_LEN];
u8 SPI_TX_BUFFER[CH376_TX_LEN]; 

/*******************************************************************************
* 函 数 名         : DMAx_Init
* 函数功能    : DMA初始化函数
* 输    入         : DMA_Streamx:DMA数据流DMA1_Stream0~7/DMA2_Stream0~7
 chx:DMA通道选择@ref DMA_channel DMA_Channel_0~DMA_Channel_7
 par:外设地址
 mar:存储器地址
 ndtr:数据传输量
* 输    出         : 无
*******************************************************************************/ 
void DMAx_Init(DMA_Stream_TypeDef *DMA_Streamxu32 chxu32 paru32 maru16 ndtr)
{
DMA_InitTypeDef  DMA_InitStructure;

if((u32)DMA_Streamx>(u32)DMA2)//得到当前stream是属于DMA2还是DMA1
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2ENABLE);//DMA2时钟使能 
}
else 
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1ENABLE);//DMA1时钟使能 
}
DMA_DeInit(DMA_Streamx);

while (DMA_GetCmdStatus(DMA_Streamx) != DISABLE){}//等待DMA可配置 

/* 配置 DMA Stream */
DMA_InitStructure.DMA_Channel = chx;  //通道选择
DMA_InitStructure.DMA_PeripheralbaseAddr = par;//DMA外设地址
DMA_InitStructure.DMA_Memory0baseAddr = mar;//DMA 存储器0地址
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;//存储器到外设模式
DMA_InitStructure.DMA_BufferSize = ndtr;//数据传输量 
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设非增量模式
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//存储器增量模式
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//外设数据长度:8位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;//存储器数据长度:8位
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;// 使用普通模式 
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//中等优先级
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//存储器突发单次传输
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//外设突发单次传输
DMA_Init(DMA_Streamx &DMA_InitStructure);//初始化DMA Stream

}

/*******************************************************************************
* 函 数 名         : DMAx_Enable
* 函数功能    : 开启一次DMA传输
* 输    入         : DMA_Streamx:DMA数据流DMA1_Stream0~7/DMA2_Stream0~7
 ndtr:数据传输量
* 输    出         : 无
*******************************************************************************/ 
void DMAx_Enable(DMA_Stream_TypeDef *DMA_Streamxu16 ndtr)
{
 
DMA_Cmd(DMA_Streamx DISABLE);                      //关闭DMA传输 

while (DMA_GetCmdStatus(DMA_Streamx) != DISABLE); //确保DMA可以被设置  

DMA_SetCurrDataCounter(DMA_Streamxndtr);          //数据传输量  
 
DMA_Cmd(DMA_Streamx ENABLE);                      //开启DMA传输 
}   

/* 如果定义为DMA传输方式,进行DMA初始化 */
/**
  * @breif  The spi dma init function.
  * @param  None
  * @retval None
  */  
void spi_dma_init(void)
{
DMA_InitTypeDef DMA_InitStructure;

/* 打开DMA2时钟 */
RCC_AHB1PeriphClockCmd(RCC_AHB1Peri

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\
     文件       40231  2018-10-20 09:57  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\CH376INC.H
     文件       40227  2012-05-19 17:08  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\CH376INC.H~RF2c9f694f.TMP
     文件       64308  2018-10-21 18:34  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\FILE_SYS.C
     文件        9201  2018-10-20 11:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\FILE_SYS.H
     文件        6863  2018-10-21 18:14  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\SPI_Init.C
     文件        1539  2018-10-21 14:31  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\CH376\SPI_Init.H
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\dma\
     文件       10190  2018-10-21 18:11  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\dma\dma.c
     文件         637  2018-10-21 16:25  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\dma\dma.h
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\exti\
     文件        4590  2016-11-11 19:48  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\exti\exti.c
     文件          97  2016-08-26 10:59  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\exti\exti.h
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\key\
     文件        1927  2016-11-11 19:40  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\key\key.c
     文件         941  2016-10-13 10:26  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\key\key.h
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\led\
     文件         854  2016-11-11 19:18  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\led\led.c
     文件         144  2016-08-23 17:28  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\led\led.h
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\spi\
     文件        3122  2018-10-21 18:14  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\spi\spi.c
     文件         219  2016-05-21 11:35  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\spi\spi.h
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\tftlcd\
     文件       42327  2016-09-24 15:40  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\tftlcd\font.H
     文件       29355  2016-11-02 08:30  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\tftlcd\tftlcd.c
     文件        2436  2016-11-02 08:27  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\APP\tftlcd\tftlcd.h
     目录           0  2019-01-03 19:00  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\DebugConfig\
     文件        2851  2017-11-21 16:21  stm32F407 USB_SPI_DMA_CH376通信_成功\F407 USB_SPI1_DMA_CH376通信_成功\DebugConfig\Target_1_STM32F407ZG.dbgconf
............此处省略468个文件信息

评论

共有 条评论