资源简介
内含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个文件信息
相关资源
- STM32F407 W8782模块驱动代码
- 3D MAX 9(2009) FBX插件 官方版
- SPIHT小波变换及编码
- 基于IAR的STM32F407程序模板
- keil8.08vdmagdi.rar
- ADI和TI的器件SPICE模型
- WCDMA技术与系统设计:第三代移动通信
- 2019年电赛h题电磁曲线炮,stm32f407控制
- TI -nspire 模拟器
- SPI-USB-myImu-STM32F103TB.rar
- NRF24L01(2.4G射频)可用例程
- Xara3DMaker7.0.0.442.zip
- stm32f407开发板实现485串口modbus协议通
- opus编解码移植stm32f407
- hspice 2005 安装+破解
- STM32_HAL+串口+DMA发送和不定长度数据接
- STM32F407,18电赛A题,非接触式电流检
- 开关电源仿真PSpice和SPICE3应用.zip
- 开关电源SPICE仿真与实用设计.zip
- PatternRecognitionAndMachineLearning.zip
- 中兴WCDMA网规网优培训教材,网络优化
- Cocos2d-x3.2塔防游戏源代码
- STM32F407编码器
- STM32 STM32F103C8T6 三星S6D05A1_TFTLCD_32048
- 正点原子STM32F407探索者PCB图+原理图
- STM32F407 USB Device HID Full Speed 例程
- 大学学生宿舍3d模型
- STM32F407信号发生器整体代码.zip
- 1PatternRecognitionandMachineLearning.rar
- Mindjet MindManager思维导图模板600+.zip
评论
共有 条评论