智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 27598|回复: 54
打印 上一主题 下一主题

[讨论] K60 的 DMA 部分

  [复制链接]

10

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
619
威望
289
贡献
138
兑换币
184
注册时间
2012-12-13
在线时间
96 小时
跳转到指定楼层
1#
发表于 2013-2-16 11:45:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请问一下野火的DMA驱动里面的一些问题吗,一直在看数据手册的DMA部分,全是英文,看的真的不是很懂,好多纠结。

    源地址和目的地址的区别是啥啊,当数据来临时是目的地址进行相应的增加吗?如果我的目的地址和源地址设定为0X0003,通道每次传输字节数为4个字节,那DMA转换结束后,目的地址是会变成0X007吗?
    主循环和副循环是怎么区分的呢?如果的我的主循环次数为3,那就上面的例子,是不是指总共会造成12个字节的传输呢,最后的目的地址和源地址是什么啊?
    当前和起始主循环次数是什么意思啊,为什么主循环结束后要恢复源地址呢?
    DMA总共有16个通道,一个通道用来采集编码器的脉冲个数,另一个用来保存ADC对8个传感器的直接采样值(也就是说没有检波电路,>20KHz进行采样,我是电磁组的),这两个交替工作,能实现吗?


   DMA_NBYTES_MLNO(CHn) =   DMA_NBYTES_MLNO_NBYTES(BYTEs); // 通道每次传输字节数,这里设置为BYTEs个字节。注:值为0表示传输4GB */


    DMA_CITER_ELINKNO(CHn)  = DMA_CITER_ELINKNO_CITER(count); //当前主循环次数
    DMA_BITER_ELINKNO(CHn)  = DMA_BITER_ELINKYES_BITER(count);//起始主循环次数

/* 配置 DMA 传输结束后的操作 */
    DMA_SLAST(CHn)      =   0;                              //调整  源地址的附加值,主循环结束后恢复  源地址
    DMA_DLAST_SGA(CHn)  =   (u32)( (cfg & 0x20) == 0 ? (-count)  : 0 ); //调整目的地址的附加值,主循环结束后恢复目的地址或者保持地址

4

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
威望
138
贡献
69
兑换币
85
注册时间
2015-11-9
在线时间
23 小时
毕业学校
电子科大
55#
发表于 2016-1-22 16:36:10 | 只看该作者
我想用DMA传输的数据是在PTC0~PTC7并行到达的,我设置源地址为PTC0的数据结果寄存器的地址,接收一个字节,源地址偏离量设为,两脚的偏移量,会不会导致在一个引脚采集完一个字节才偏啊,还有我在中文手册里面的那一节内容能找到这些地址?最后DMA通道可以随便设吗?还是会有对应?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
18
威望
12
贡献
6
兑换币
5
注册时间
2015-12-21
在线时间
0 小时
毕业学校
阿斯蒂芬
54#
发表于 2016-1-22 13:33:53 | 只看该作者
好东西
回复 支持 反对

使用道具 举报

5

主题

84

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
QQ
威望
596
贡献
313
兑换币
379
注册时间
2015-1-27
在线时间
127 小时
毕业学校
北华大学
53#
发表于 2015-11-30 17:56:18 | 只看该作者
能给个中文的看看嘛,谢谢啦
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1193
威望
724
贡献
267
兑换币
238
注册时间
2013-11-17
在线时间
101 小时
毕业学校
北华大学
52#
发表于 2014-8-8 09:39:53 | 只看该作者
一誓灬千年 发表于 2014-8-3 16:41
怎么用DMA提取脉冲数啊?能具体说说吗?我现在卡在DMA触发源这块...

你用的哪个库?我用的野火的库,那个库里面有一个DMA计数函数,直接用那个就可以,而且可以几路同时用。
回复 支持 反对

使用道具 举报

5

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1562
威望
699
贡献
619
兑换币
463
注册时间
2014-7-13
在线时间
122 小时
毕业学校
江苏科技大学
51#
发表于 2014-8-6 10:01:40 | 只看该作者
好帖子
回复 支持 反对

使用道具 举报

16

主题

310

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2194

活跃会员奖章优秀会员奖章

威望
1065
贡献
569
兑换币
675
注册时间
2014-1-7
在线时间
280 小时
50#
发表于 2014-8-3 16:41:20 | 只看该作者
TuTuready 发表于 2014-3-18 12:37
我们 用dma 测一路脉冲,好使,可是测两路脉冲,他好像总是从一块地址上取东西,测得都是一样的值,我自己 ...

怎么用DMA提取脉冲数啊?能具体说说吗?我现在卡在DMA触发源这块...
回复 支持 反对

使用道具 举报

4

主题

78

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1732
QQ
威望
899
贡献
461
兑换币
323
注册时间
2012-3-6
在线时间
186 小时
49#
发表于 2014-7-23 13:24:08 | 只看该作者
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
77
威望
50
贡献
19
兑换币
17
注册时间
2014-3-21
在线时间
4 小时
毕业学校
南京工程学院
48#
发表于 2014-7-9 13:44:29 | 只看该作者
yangkuanqaz8598 发表于 2013-2-18 21:20
下面就是ADC结果寄存器的相关宏定义了,但是看来看去还是不能理解,到底哪个才等价于ADC0_RA的实际地址值 ...

我想问下,这个问题解决了吗?
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
793
威望
411
贡献
216
兑换币
260
注册时间
2014-3-7
在线时间
83 小时
47#
发表于 2014-6-10 11:09:40 | 只看该作者
hzlaliugang 发表于 2013-4-16 23:12
DMA_Source 是指触发源,像一些硬件模块SPI等,通过DMA来传输数据的话,就要在DMA触发源里面写SPI触发源, ...

如果我把DMA_Source设置为DMA_ADC0;也就是说我不用设置触发方式了吗;我用的是野火的库,代码中有这么一段,然后我再在ADC中设置转换完成后发出DMA请求,不知道我理解的对不......

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-29 23:11 , Processed in 0.096585 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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