OpenEdv-开源电子网

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

小弟新手请求各位牛人帮忙解决有关于TIM1和DMA结合实现输出SPWM问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-8-15
在线时间
0 小时
发表于 2013-8-15 10:56:49 | 显示全部楼层 |阅读模式
各位stm32牛人,求帮小弟解答一个有关STM32的TIM和DMA应用的问题:

小弟我在制作一个逆变器,要在TIM1的CH1和CH2通道上输出SPWM波,通
过DMA的Channel5响应TIM1_UP的中断把SPWM波数组按顺序传递给TIM1的CH1输出完整的SPWM脉冲,但是CH2没有办法相应DMA了,不知道各位有没有合适的办法解决这个问题?

具体部分程序如下



RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM1 ,ENABLE);


  
TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = TimerPeriod-1;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

        TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 0;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);
TIM_Cmd(TIM1, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
 
DMA_DeInit(DMA1_Channel5);
  DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)TIM1_CCR1_Address;
  DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&Duty_Cycle_sinewavetable;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_BufferSize =SPWM_COUNT;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(DMA1_Channel5, &DMA_InitStructure); 

  DMA_Cmd(DMA1_Channel5, ENABLE);

其实我看论坛里也曾经有人遇到这个问题,不知道哪位仁兄解决了没有?http://www.openedv.com/posts/list/9367.htm
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-8-15 11:13:04 | 显示全部楼层
这种应用,你得搞2个定时器吧。
两路SPWM是不同的吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-8-15
在线时间
0 小时
 楼主| 发表于 2013-8-15 12:20:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
其实板子设计成用TIM1的CH1和互补通道CH1N,CH2和CH2N来实现的,现在感觉要重新话了,用TIM8CH1来代替TIM1CH2,但是查了手册TIM8又没有DMA传输的功能!所以现在就特纠结,不知道怎么办了!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-8-15 14:23:35 | 显示全部楼层
回复【3楼】crui7246:
---------------------------------
可以不用DMA嘛?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-5
在线时间
0 小时
发表于 2013-9-1 15:02:29 | 显示全部楼层
回复【3楼】crui7246:
---------------------------------
楼主解决了吗?TIM8不是有DMA2传输的功能吗?我也不太清楚,最近也正在头疼这事,不知道楼主实现了没?
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-22
在线时间
5 小时
发表于 2015-7-22 20:35:39 | 显示全部楼层
求程序!两路互补带死区的SPWM
学海无涯!沧海一粟!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-7-20
在线时间
3 小时
发表于 2017-7-31 15:29:00 | 显示全部楼层
TIM1_CCR1_Address这个地址是怎么得来的?
回复 支持 反对

使用道具 举报

37

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
485
金钱
485
注册时间
2015-5-5
在线时间
34 小时
发表于 2021-6-17 17:38:36 | 显示全部楼层
我现在是调了4个通道了。
DMA1_Channel 2----->TIM2_CH1------>PA0

DMA1_Channel 3----->TIM3_CH3------>PB0

DMA1_Channel 7----->TIM4_CH1------>PB6

DMA2_Channel 2----->TIM5_CH2------>PA1
想把TIM1和TIM8的调出来。我一共需要6路。请教一下,你的TIM1好用吗?计划用
DMA1_Channel 5----->TIM1_CH1------>PA8
DMA2_Channel 1----->TIM8_CH1------>PC6
我这边调了好些时间没有调出来TIM1,TIM8的
弹起华丽的乐章 撕下最后的伪装
回复 支持 反对

使用道具 举报

37

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
485
金钱
485
注册时间
2015-5-5
在线时间
34 小时
发表于 2021-6-17 17:43:29 | 显示全部楼层
hapyy 发表于 2017-7-31 15:29
**** 作者被禁止或删除 内容自动屏蔽 ****

看STM32中文参考手册、或者英文参考手册。里面的2.3节 存储器映像,可查阅相关地址
弹起华丽的乐章 撕下最后的伪装
回复 支持 反对

使用道具 举报

37

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
485
金钱
485
注册时间
2015-5-5
在线时间
34 小时
发表于 2021-6-17 17:47:06 | 显示全部楼层
楼主问题解决了吗?TIM1_CH1 DMA PWM 好用吗
弹起华丽的乐章 撕下最后的伪装
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 19:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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