如何使用STM32单片机实现DMA的同时发送和接收

在spi通信中,可以同时开启发送和接收dma请求,自动数据的发送和接收,完成数据的交换
基本步骤是:
1. 配置好spi相应引脚功能
2. 配置和初始化spi
3. 初始化dma
4. 片选信号选择要通信的设备
5. 打开dma
对应dma通道:spi1_rx---dma1_channel2;spi1_tx---dma1_channel3
代码:
#define l3gd20_spi_tdr (u32)(spi1_base+0x0c)
#define l3gd20_spi_rdr (u32)(spi1_base+0x0c)
u8 spi_txbuffer[7]={0xe8,0x00,0x00,0x00,0x00,0x00,0x00};
u8 spi_rxbuffer[7]={0};
void spi_dma_test(void)
{
spi_gpio_config();
spi_config();//见上一篇博客
spi_dma_config();
gpio_resetbit(gpioe,gpio_pin_3);//片选信号
//打开dma
spi_i2s_dmacmd(spi1, spi_i2s_dmareq_rx, enable);
spi_i2s_dmacmd(spi1, spi_i2s_dmareq_tx, enable);
dma_cmd(dma1_channel2, enable);
dma_cmd(dma1_channel3, enable);
}
void spi_dma_config(void)
{
dma_inittypedef dma_initstruct;
rcc_ahbperiphclockcmd(rcc_ahbperiph_dma1, enable);
dma_structinit(&dma_initstruct);
dma_deinit(dma1_channel2);
dma_deinit(dma1_channel3);
dma_initstruct.dma_peripheralbaseaddr = l3gd20_spi_tdr;
dma_initstruct.dma_memorybaseaddr = (uint32_t )spi_txbuffer;
dma_initstruct.dma_dir = dma_dir_peripheraldst;
dma_initstruct.dma_buffersize =7;
dma_initstruct.dma_peripheralinc = dma_peripheralinc_disable;
dma_initstruct.dma_memoryinc = dma_memoryinc_enable;
dma_initstruct.dma_peripheraldatasize = dma_peripheraldatasize_byte;
dma_initstruct.dma_mode = dma_mode_circular;
dma_initstruct.dma_priority = dma_priority_veryhigh;
dma_initstruct.dma_m2m = dma_m2m_disable;
dma_init(dma1_channel3, &dma_initstruct);
dma_initstruct.dma_peripheralbaseaddr = l3gd20_spi_rdr;
dma_initstruct.dma_memorybaseaddr = (uint32_t )spi_rxbuffer;
dma_initstruct.dma_dir = dma_dir_peripheralsrc;
dma_init(dma1_channel2, &dma_initstruct);
}
处理数据时只需要读取缓冲区的数据即可,不需要额外的程序去读取,节省资源,用起来方便。

蓝牙鼠标SRRC认证教程经验分享
石英晶体设计简单振荡器时的注意事项
第七届集创赛“芯海杯”总决赛圆满落幕
气密性检测仪是如何进行防水透气膜透气性测试的?防水透气膜透气密性测试过程-深圳希立仪器
放大器的传递函数-补偿斜坡的斜率需要大于下斜坡斜率的1/2的原因
如何使用STM32单片机实现DMA的同时发送和接收
财政支持助力新能源汽车推广 汇总2016新能源汽车价格
向往物联网生活,你也许需要了解一下物位计!
嵌入式系统支柱学科的交叉与融合
低功耗、双通道、16位缓冲电压输出DAC——AD5689
卢深视M10-DL相机获微信支付认证 新一代移动刷脸支付再升级
将放大器放在探头如何降低探头和线缆对信号造成的损耗
浅谈物联网的电源管理
巧用RT电阻和前馈电容改善电源动态问题
2009年CES美国电子展/美国CES展/美国CES消费电子
电子与成像事业部领导分享对创新增长愿景
蚂蚁森林未来5年将植树5亿棵 等于“每年种出一个纽约”
ADI LCR测量模块ADMX2001概述和应用
全国2020-4月份集成电路产量增长29.2%
基于半导体载流子动力学建立理论模型对其进行了合理的解释