两个参数不是很明白

[复制链接]
263|12
手机看帖
扫描二维码
随时随地手机跟帖
stly|  楼主 | 2019-2-15 08:13 | 显示全部楼层 |阅读模式
DMA, DM, rc, RS, ST
看DMA的数据手册的时候看到两个参数不是很明白,有点混淆,请高手指点明津,Burst count和Transfer count,谢谢了!
stly|  楼主 | 2019-2-15 08:16 | 显示全部楼层
我看到手册里的这么一句话“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| | 2019-2-15 08:20 | 显示全部楼层

因为要传16-bit data啊, 一个burst 8-bit.

使用特权

评论回复
stly|  楼主 | 2019-2-15 08:22 | 显示全部楼层
这些天光看DMA,就是这两个参数搞的不是很明白。“burst count ”可以根据要传输的数据的大小随意设置吗?

使用特权

评论回复
pengf| | 2019-2-15 08:25 | 显示全部楼层
什么意思

使用特权

评论回复
stly|  楼主 | 2019-2-15 08:28 | 显示全部楼层
比如传输一位的数据,就可以设置为“1”,16位的数据可以设置成“8”,可以设置成“16”吗?

使用特权

评论回复
renyaq| | 2019-2-15 08:31 | 显示全部楼层

没关注过。。。

使用特权

评论回复
stly|  楼主 | 2019-2-15 08:34 | 显示全部楼层

哦,水知道"Burst count和Transfer count"是什么关系啊

使用特权

评论回复
supernan| | 2019-2-15 08:37 | 显示全部楼层

举一个例子来理解, 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)

使用特权

评论回复
houcs| | 2019-2-15 08:39 | 显示全部楼层

解答了我一直的问题、

使用特权

评论回复
xxrs| | 2019-2-15 08:42 | 显示全部楼层
我想追问个问题、关于那个SRAM的destination是怎么设置的、是可以设置一个uint8的变量,然后直接将想存储的0x..的地址赋给变量、这样么、还有就是如果想将SRAM的数据在通过UART读取、是有UART的什么API函数么、THX

使用特权

评论回复
liuzaiy| | 2019-2-15 08:45 | 显示全部楼层
第一个理解是对的,就是定义一个变量,然后直接存储。 怎样用UART读变量的值,可以参照UART example project, Creator > File > Example Project.

使用特权

评论回复
stly|  楼主 | 2019-2-15 08:49 | 显示全部楼层
楼上大神 膜拜ing

使用特权

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

本版积分规则

433

主题

7058

帖子

0

粉丝