OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7724|回复: 2

DMA 配置寄存器PBURST位应该怎样设置

[复制链接]

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2015-3-23
在线时间
11 小时
发表于 2015-3-23 16:19:27 | 显示全部楼层 |阅读模式
5金钱

原子哥在音乐播放器试验中,DMA寄存器的配置中DMA1_Stream4的CR寄存器的PBURST位设为0为单次传输,

在SD卡试验中PBURST位设为外设突发4次传输,请问PBURST应如何设置?

[mw_shl_code=c,true]void SD_DMA_Config(u32*mbuf,u32 bufsize,u8 dir) { u32 tmpreg=0;//重新设置 while(DMA2_Stream3->CR&0X01); //等待DMA可配置 DMA2->LIFCR|=0X3D<<22; //清空之前该stream3上的所有中断标志 DMA2_Stream3->AR=(u32)&SDIO->FIFO; //DMA2 外设地址 DMA2_Stream3->M0AR=(u32)mbuf; //DMA2,存储器0地址; DMA2_Stream3->NDTR=0; //DMA2,传输数据量0,外设流控制 tmpreg|=dir<<6; //数据传输方向控制 tmpreg|=0<<8; //非循环模式(即使用普通模式) tmpreg|=0<<9; //外设非增量模式 tmpreg|=1<<10; //存储器增量模式 tmpreg|=2<<11; //外设数据长度:32位 tmpreg|=2<<13; //存储器数据长度:32位 tmpreg|=3<<16; //最高优先级 tmpreg|=1<<21; //外设突发4次传输 tmpreg|=1<<23; //存储器突发4次传输 tmpreg|=(u32)4<<25; //通道选择 DMA2_Stream3->CR=tmpreg; tmpreg=DMA2_Stream3->FCR; tmpreg&=0XFFFFFFF8; //清除DMDIS和FTH tmpreg|=1<<2; //FIFO使能 tmpreg|=3<<0; //全FIFO DMA2_Stream3->FCR=tmpreg; DMA2_Stream3->CR|=1<<5; //外设流控制 DMA2_Stream3->CR|=1<<0; //开启DMA传输 } [/mw_shl_code]


设置有什么注意事项么

[mw_shl_code=c,true]void I2S2_TX_DMA_Init(u8* buf0,u8 *buf1,u16 num) { RCC->AHB1ENR|=1<<21; //DMA1时钟使能 while(DMA1_Stream4->CR&0X01);//等待DMA1_Stream4可配置 DMA1->HIFCR|=0X3D<<6*0; //清空通道4上所有中断标志 DMA1_Stream4->FCR=0X0000021;//设置为默认值 DMA1_Stream4->AR=(u32)&SPI2->DR; //外设地址为:SPI2->DR DMA1_Stream4->M0AR=(u32)buf0;//内存1地址 DMA1_Stream4->M1AR=(u32)buf1;//内存2地址 DMA1_Stream4->NDTR=num; //暂时设置长度为1 DMA1_Stream4->CR=0; //先全部复位CR寄存器值 DMA1_Stream4->CR|=1<<6; //存储器到外设模式 DMA1_Stream4->CR|=1<<8; //循环模式 DMA1_Stream4->CR|=0<<9; //外设非增量模式 DMA1_Stream4->CR|=1<<10; //存储器增量模式 DMA1_Stream4->CR|=1<<11; //外设数据长度:16位 DMA1_Stream4->CR|=1<<13; //存储器数据长度:16位 DMA1_Stream4->CR|=2<<16; //高优先级 DMA1_Stream4->CR|=1<<18; //双缓冲模式 DMA1_Stream4->CR|=0<<21; //外设突发单次传输 DMA1_Stream4->CR|=0<<23; //存储器突发单次传输 DMA1_Stream4->CR|=0<<25; //选择通道0 SPI2_TX通道 DMA1_Stream4->FCR&=~(1<<2); //不使用FIFO模式 DMA1_Stream4->FCR&=~(3<<0); //无FIFO 设置 DMA1_Stream4->CR|=1<<4; //开启传输完成中断 MY_NVIC_Init(0,0,DMA1_Stream4_IRQn,2); //抢占1,子优先级0,组2 } [/mw_shl_code]


最佳答案

查看完整内容[请看2#楼]

这方面,楼主可以看 stm32f4参考手册 dma章节的介绍。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-23 16:19:28 | 显示全部楼层
这方面,楼主可以看 stm32f4参考手册 dma章节的介绍。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2015-3-23
在线时间
11 小时
 楼主| 发表于 2015-3-23 16:47:56 | 显示全部楼层
多谢原子哥的回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 10:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表