智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 16167|回复: 46
打印 上一主题 下一主题

飞思卡尔智能车S12XS128PWM控制程序编写

  [复制链接]

11

主题

54

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1434
威望
572
贡献
432
兑换币
0
注册时间
2011-3-1
在线时间
215 小时
跳转到指定楼层
1#
发表于 2011-6-3 13:16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

[size=+0]对于飞思卡尔智能车,电机和舵机的控制通常使用的都是以PWM脉冲宽度调制的方法实现的,其可行性基于电机可以由占空比控制转速,而舵机也由脉宽控制摆动。PWM 调制波有 8 个输出通道,每一个输出通道都可以独立的进行输出。每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。每一个 PWM 输出通道都能调制出占空比从 0—100% 变化的波形。

PWM控制程序的编写一般按照以下的一种流程:

1,禁止PWM模块;//这是由于改变周期和脉宽等操作需要在PWM禁止的情况下才能被设置

2,PWM级联选择,是否级联通道67,45,23,01;//最多单独使用8个8位和级联使用4个16位

3,给通道选择时钟源控制位;//0,1,4,5通道可选择ClockA和ClockSA;2,3,6,7通道可选择ClockB和ClockSB

4,给时钟源A\B预分频;//可对总线时钟进行预分频,确定ClockA和ClockB,满足1,2,4,8,16,32,64,128这8个分频量

5,根据时钟源A\B确定时钟源SA\SB;//由ClockA和ClockB、分频设值来确定ClockA和ClockB,满足1-255的分频量

6,输出极性的选择;//也就是选择输出极性先低后高还是先高后低

7,对齐方式的选择;//可设置为左对齐或者中间对齐方式

8,实际通道频率的计算;//也就是周期的设定

9,占空比寄存器的设置;//占空比常数的设定,可以以此决定占空比

10,使能PWM模块。//你已经首尾呼应了,有木有!!!

接下来通过寄存器的介绍,以上面流程为大纲,详细地说明一下该如何操作~~

【PWME】寄存器

PWME = (PWME~7 | PWME~6 | PWME~5 | PWME~4 | PWME~3 | PWME~2 | PWME~1 | PWME~0)

将每一位设置为1即可使能该位,0对应的既是禁止。要注意的是,当选择了级联方式输出的话,1,3,5,7分别是级联单元的控制字,也就是接下来的操作需要对应这些位才可生效。

现在把8个通道都禁止,得到语句 PWME = 0x00;

【PWMCTL】寄存器

PWMCTL = (CON67 | CON45 | CON23 | CON01 | PSWAI | PFRZ | 0 | 0)

若CON67 = 1,那么通道6和7即是级联输出,新单元由通道7的控制字决定属性。若CON67 = 0,那么两者还是相互分立的8位输出通道。其他级联通道操作也是同理。

为保持简洁性,对某些位的赋值略过,PSWAI和PFRZ通常设为0。

现在将8个通道两两相级联,得到语句 PWMCTL = 0xF0;

【PWMCLK】寄存器

PWMCLK = ( PCLK~7 | PCLK~6 | PCLK~5 | PCLK~4 | PCLK~3 | PCLK~2 | PCLK~1 | PCLK~0)

其中0,1,4,5通道可选择ClockA和ClockSA;2,3,6,7通道可选择ClockB和ClockSB。

若将某位设值为1,则该位选择的是ClockSA或ClockSB时钟。

现在全部选择ClockSA或ClockSB时钟,则得到语句 PWMCLK = 0xFF;

【PWMPRCLK】寄存器

PWMPRCLK = (0 | PCKB2 | PCKB1 | PCKB0 | 0 | PCKA2 | PCKA1 | PCKA0)

PCKA2 PCKA1 PCKA0分别对应ClockA预分频系数的三个数位,假设其分别为1 0 0,则对应十进制数是4,也就是分频系数为2~4=16,若总线频率16MHz,则ClockA = BusClock/(2~4) = 16MHz/16 = 1MHz;

PCKB2 PCKB1 PCKB0分别对应ClockB时钟,设值方法同上。

ClockA = BusClock/(2~na)

ClockB = BusClock/(2~nb)

现在设值预分频系数都为1,得到语句 PWMPRCLK = 0x00;

【PWMSCLA&PWMSCLB】寄存器

可以认为是纯数值寄存器,一共八位。如果ClockA为24MHz,现需要600KHz的ClockSA,则通过ClockSA = ClockA / (2*PWMSCLA)可得,PWMSCLA = ClockA/(2*ClockSA)= 24MHz/(2*0.6MHz) = 20;

PWMSCLB的设值也同上,二者的公式相同:

ClockSA = ClockA / (2*PWMSCLA)

ClockSB = ClockB / (2*PWMSCLB)

上面例子可以得到语句 PWMSCLA = 20;

【PWMPOL】寄存器

PWMPOL = (PPOL~7 | PPOL~6 | PPOL~5 | PPOL~4 | PPOL~3 | PPOL~2 | PPOL~1 | PPOL~0)

分别对每个通道的极性进行设置。若置1则先输出高电平,遇到触发置位变为低电平;置0则相反。

现在设置所有通道为先低后高极性,则得到语句 PWMPOL = 0x00;

【PWMCAE】寄存器

PWMCAE = (CAE~7 | CAE~6 | CAE~5 | CAE~4 | CAE~3 | CAE~2 | CAE~1 | CAE~0)

分别对每个通道进行输出方式设置。输出方式分为两种:左对齐和居中对齐。

这里的区别将在占空比寄存器之后详细地说明。

【PWMPERXX】寄存器

共有八个这样的寄存器,名字PWMPER0 - PWMPER7;若级联使用,则为PWMPER01,PWMPER23,PWMPER45,PWMPER67。


【PWMDTYXX】寄存器

共有八个这样的寄存器,名字PWMDTY0 - PWMDTY7;若级联使用,则为PWMDTY01,PWMDTY23,PWMDTY45,PWMDTY67。

上面提到的对齐方式区别在于:

左对齐方式:计数器PWMCNT从0开始对时钟信号递增计数,当PWMCNT = PWMDTY时,比较器1输出有效,触发器置位,输出电平翻转。当PWMCNT = PWMPER时,比较器2输出有效,触发器复位,输出电平翻转。同时PWMCNT复位,一个周期结束。

输出周期 = 通道周期*PWMPERx

居中对齐方式:计数器PWMCNT从0开始对时钟信号递增计数,当PWMCNT = PWMDTY时,比较器输出有效,触发器置位,输出电平翻转。当PWMCNT = PWMPER时,PWMCNT从当前值开始递减计数,当再次满足PWMCNT = PWMDTY时,比较器输出有效,触发器复位,输出电平翻转。

输出周期 = 2*通道周期*PWMPERx

同时占空比的计算方法:

PPOL = 0(先低后高):占空比 = [(PWMPERx-PWMDTYx)/PWMPERx]*100%

PPOL = 1(先高厚):占空比 = [(PWMDTYx)/PWMPERx]*100%



1

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
威望
298
贡献
66
兑换币
2
注册时间
2010-6-14
在线时间
7 小时
2#
发表于 2011-6-10 13:43:03 | 只看该作者
感谢!
回复 支持 反对

使用道具 举报

4

主题

326

帖子

0

精华

高级会员

Rank: 4

积分
902
威望
545
贡献
293
兑换币
0
注册时间
2010-11-1
在线时间
32 小时
3#
发表于 2011-6-15 14:12:53 | 只看该作者
感谢!
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
QQ
威望
244
贡献
42
兑换币
0
注册时间
2011-5-16
在线时间
4 小时
4#
发表于 2011-6-16 17:44:10 | 只看该作者
膜拜LZ大大
回复 支持 反对

使用道具 举报

1

主题

34

帖子

0

精华

禁止发言

积分
409
威望
289
贡献
56
兑换币
6
注册时间
2011-9-14
在线时间
32 小时
5#
发表于 2011-10-30 13:37:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
威望
166
贡献
42
兑换币
0
注册时间
2011-9-27
在线时间
1 小时
6#
发表于 2011-11-7 14:34:37 | 只看该作者
谢了
回复 支持 反对

使用道具 举报

1

主题

206

帖子

0

精华

高级会员

Rank: 4

积分
610
QQ
威望
348
贡献
196
兑换币
0
注册时间
2011-10-5
在线时间
33 小时
7#
发表于 2011-11-20 17:43:47 | 只看该作者
gao.
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

注册会员

Rank: 2

积分
177
威望
136
贡献
25
兑换币
0
注册时间
2011-11-25
在线时间
8 小时
8#
发表于 2011-11-29 13:12:40 | 只看该作者
果然是狠人~~
回复 支持 反对

使用道具 举报

8

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
579
威望
397
贡献
86
兑换币
0
注册时间
2012-2-14
在线时间
48 小时
9#
发表于 2012-2-16 17:45:42 | 只看该作者
今天下午看了一下午的英文资料。。 早知道看看版主的就不要那么费事了。。
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2604
威望
1500
贡献
760
兑换币
525
注册时间
2011-9-7
在线时间
172 小时
10#
发表于 2012-2-24 14:16:04 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 18:39 , Processed in 0.181794 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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