12
返回列表 发新帖
楼主: 远去的车手

[已解决] KL参考指南TPM实验2的疑问?(已解决)

[复制链接]

该用户从未签到

27

主题

142

帖子

0

新手上路

Rank: 1

积分
329
最后登录
1970-1-1
 楼主| 发表于 2013-9-30 16:38:30 | 显示全部楼层

回复:KL参考指南TPM实验2的疑问?

IMG_20130930_163324.jpg
回复第 10 楼 于2013-09-30 15:17:03发表:
你好,问题问的很好。首先我要和你说文档中有个错误,在133页,This value represents 1Hz PWM
frequency in center-aligned PWM mode and ~4MHz clock from fast IRC.
这句话中,1HZ是错误的,其实是1khz,也就是一个PWM的周期其实是1ms。
下面来说你的问题,一个整的正弦,或者锯齿,方波,包含了64个PWM。而每个PWM的占空比是2个byte,所以,DMA的长度设的是128个字节,由DMA_DCRn[SMOD]设置,装PWM占空比的SRAM的起始地址作为DMA的起始地址,然后设置每次request地址偏移2个字节,注意,request不是只是地址的偏移,不产生DMA中断,因为你的BCR还没有降到0.DMA中断只有BCR降到0,DONE置1产生。下面再来说说为什么设置BCR为64000,我觉得是这样的,你要产生一个正弦波,总不会只产生一个周期对不对,肯定多产生几个周期,这个就由你自己去控制,它不是由DMA的长度来控制的。所以,当一个DMA长度跑完,而BCR没有为0,这时候不会DMA中断,而是DMA的地址自动转移到起始地址,再继续循环的跑,直到你BCR的字节跑完为止。希望我的回答能够帮到你。

 
 
 
 
谢谢大哥,每次问都夸我问得好,我都不好意思了,呵呵。根据您的回答,我重新修改了参考指南的函数。
我的目的:实现将一个8个元素的数组(uint16_t)里面的值通过DMA给TPM的寄存器TPM0_C2V,TPM溢出触发DMA传输,正确的波形我认为是连续8个占空比递增的波形。并且是连续出现这样的波形、
实际现象只有6个波形显示了,在附件显示。DMA设置如下。
 
        DMA_DCR0 |=(DMA_DCR_SSIZE(2)
                                          | DMA_DCR_DSIZE(2)
                                          | DMA_DCR_SINC_MASK
                                          | DMA_DCR_CS_MASK      //Cycle-Steal mode enabled
                                          | DMA_DCR_ERQ_MASK     //external requests enabled
                                          | DMA_DCR_EINT_MASK                                               
                                          | DMA_DCR_SMOD(1)
                                          );
  DMA_DSR_BCR0 = DMA_DSR_BCR_BCR(16);
这样设置是有问题的吗?却得不出想要的波形啊实际上
 
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2013-9-30 17:15:37 | 显示全部楼层

回复:KL参考指南TPM实验2的疑问?

看你波形,感觉差了2个,后面的两个PWM好像没有生成。要不你把你数组中的值都用一样的,比如都用第2个试试,然后看看是否连续?
回复 支持 反对

使用道具 举报

该用户从未签到

27

主题

142

帖子

0

新手上路

Rank: 1

积分
329
最后登录
1970-1-1
 楼主| 发表于 2013-9-30 17:21:09 | 显示全部楼层

回复:KL参考指南TPM实验2的疑问?

IMG_20130930_172236.jpg
回复第 12 楼 于2013-09-30 17:15:37发表:
看你波形,感觉差了2个,后面的两个PWM好像没有生成。要不你把你数组中的值都用一样的,比如都用第2个试试,然后看看是否连续?
 
 
效果还是一样的啊,我在想我这样是否是设置错了,我将DMA_DCR_SMOD(1)改成DMA_DCR_SMOD(2)8个波形是出来了,可是后面还跟了两个不相干的波形。这个寄存器是这是BUFFER的吧,我数组8个数组,不就是16byte,设置DMA_DCR_SMOD(1)难道不对 吗?
 
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 08:00 , Processed in 0.089416 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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