打印

两个参数不是很明白

[复制链接]
618|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
司徒老鹰|  楼主 | 2016-4-15 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA, DM, rc, RS, ST
看DMA的数据手册的时候看到两个参数不是很明白,有点混淆,请高手指点明津,Burst count和Transfer count,谢谢了!
沙发
司徒老鹰|  楼主 | 2016-4-15 19:37 | 只看该作者
我看到手册里的这么一句话“For example, if you want to move 100 bytes of data from a 16-bit peripheral to a memory buffer, the burst count is set to 2 and transfer count is set to 100.”为什么要把“burst count ”设置为“2”呢?

使用特权

评论回复
板凳
dingy| | 2016-4-15 19:39 | 只看该作者
因为要传16-bit data啊, 一个burst 8-bit.

使用特权

评论回复
地板
司徒老鹰|  楼主 | 2016-4-15 19:40 | 只看该作者
这些天光看DMA,就是这两个参数搞的不是很明白。“burst count ”可以根据要传输的数据的大小随意设置吗?

使用特权

评论回复
5
pengf| | 2016-4-15 19:41 | 只看该作者
什么意思

使用特权

评论回复
6
司徒老鹰|  楼主 | 2016-4-15 19:43 | 只看该作者
比如传输一位的数据,就可以设置为“1”,16位的数据可以设置成“8”,可以设置成“16”吗?

使用特权

评论回复
7
renyaq| | 2016-4-15 19:45 | 只看该作者
没关注过。。。

使用特权

评论回复
8
司徒老鹰|  楼主 | 2016-4-15 19:46 | 只看该作者
哦,水知道"Burst count和Transfer count"是什么关系啊

使用特权

评论回复
9
supernan| | 2016-4-15 19:48 | 只看该作者
举一个例子来理解, DMA 的常规应用之一是将 ADC 的转换结果传送到 SRAM(某个数组), 假设我们的 DelSig ADC 的分辨率设为 16bit, 现在想用 DMA 将 100 个 ADC 转换结果(16bits = 2 bytes) 传送到内存数组 uint16 Array[100].
DMA 要完成上述操作, 一个方法就是每次从 ADC 的结果寄存器读取 2bytes 的转换结果传送到内存, 一共传送 100 次。 在这种配置下,我们就需要将 Burst count 设为 2(代表 DMA 一次传送的字节数, 这里 ADC 的转换结果是 2bytes, 所以应该设为 2); Transfer count 设为 200 (代表 DMA 这个 TD 一共传送的 数据量总数 100 * 2bytes = 200 bytes, 所以应设为 200)

使用特权

评论回复
10
supernan| | 2016-4-15 19:49 | 只看该作者

使用特权

评论回复
11
supernan| | 2016-4-15 19:51 | 只看该作者

使用特权

评论回复
12
栩栩如生| | 2016-4-15 19:53 | 只看该作者
图配文,很清晰

使用特权

评论回复
13
houcs| | 2016-4-15 19:54 | 只看该作者
解答了我一直的问题、

使用特权

评论回复
14
栩栩如生| | 2016-4-15 19:57 | 只看该作者
我想追问个问题、关于那个SRAM的destination是怎么设置的、是可以设置一个uint8的变量,然后直接将想存储的0x..的地址赋给变量、这样么、还有就是如果想将SRAM的数据在通过UART读取、是有UART的什么API函数么、THX

使用特权

评论回复
15
liuzaiy| | 2016-4-15 19:58 | 只看该作者
第一个理解是对的,就是定义一个变量,然后直接存储。 怎样用UART读变量的值,可以参照UART example project, Creator > File > Example Project.

使用特权

评论回复
16
司徒老鹰|  楼主 | 2016-4-15 19:59 | 只看该作者
楼上大神 膜拜ing

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

427

主题

3735

帖子

8

粉丝