[ZLG-ARM] plc2132作精度0.1us的信号发生系统是否可行?

[复制链接]
3305|8
 楼主| zysunol 发表于 2007-3-20 13:27 | 显示全部楼层 |阅读模式
原来的单片机+汇编&nbsp;现在想要升级,但是不想看汇编了<br />请问精度0.1us的信号发生系统&nbsp;用plc2132&nbsp;+C语言&nbsp;是否可行?<br />有人做过类似开发吗?
arzhiy 发表于 2007-3-20 13:47 | 显示全部楼层

可否用PWM实现

可否用PWM实现,不知道PWM精度是否够
xwj 发表于 2007-3-20 13:50 | 显示全部楼层

不可能

  
zlgARM 发表于 2007-3-20 14:13 | 显示全部楼层

RE

zysunol:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Lpc2132的定时器是可以计数PCLK的,1个pclk计数值加1。而LPC2132的处理器频率最高可达60MHZ。您可以设定外设周期和CPU周期相等,则1个外设周期最短可达到1000000/(60*1000000)=1/60=0.0167us。即使令外设周期再翻倍,也可以达到0.0334us。<br />&nbsp;&nbsp;&nbsp;&nbsp;可以用C设置定时器,得到您需要的定时周期。
arzhiy 发表于 2007-3-20 14:29 | 显示全部楼层

我原来用LPC2114做PWM实验测试过输出PWM信号(示波器测试)

LPC2114用PWM产生时钟信号测试<br />采用Tektronix&nbsp;DPO7104数字示波器测试,条件<br />/*&nbsp;系统设置,&nbsp;Fosc、Fcclk、Fcco、Fpclk必须定义*/<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//晶振频率,10MHz~25MHz,应当与实际一至<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//系统频率,必须为Fosc的整数倍(1~32),且&lt=60MHZ<br />#define&nbsp;Fcco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;*&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz<br />#define&nbsp;Fpclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;/&nbsp;4)&nbsp;*&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//VPB时钟频率,只能为(Fcclk&nbsp;/&nbsp;4)的1、2、4倍<br />在该条件下,输出最高频率信号为Fpclk/2,即为22&nbsp;118&nbsp;400Hz<br /><br />下面是源程序:/*&nbsp;PWM周期及占空比设置值&nbsp;*/<br />#define&nbsp;&nbsp;CYCLE_DATA&nbsp;&nbsp;&nbsp;&nbsp;20000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置波形输出频率,频率设置为(Fpclk/&nbsp;PWMMR0),而PWMMR0必须<br />//为整数,所以PWM输出频率有限制,可能到达任何频率,即不连续<br />#define&nbsp;&nbsp;DUTY_CYCLE_DATA&nbsp;&nbsp;&nbsp;&nbsp;PWMMR0/2&nbsp;&nbsp;&nbsp;&nbsp;//定义输出波形占空比<br />void&nbsp;&nbsp;PWM_Init(void)<br />{&nbsp;&nbsp;&nbsp;PWMPR&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;不分频,计数频率为Fpclk<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMCR&nbsp;=&nbsp;0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置PWMMR0匹配时复位PWMTC<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMR0&nbsp;=&nbsp;Fpclk/CYCLE_DATA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置PWM周期<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMR6&nbsp;=&nbsp;DUTY_CYCLE_DATA;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置PWM占空比<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMLER&nbsp;=&nbsp;0x41;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWMMR0、PWMMR6锁存<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMPCR&nbsp;=&nbsp;0x4000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;允许PWM6输出,单边PWM<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMTCR&nbsp;=&nbsp;0x09;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;启动定时器,PWM使能<br />}<br />int&nbsp;&nbsp;main(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00080000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置PWM6连接到P0.9管脚<br />&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;其它管脚设置为GPIO<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;PWM_Init();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWM初始化<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;while(1);<br />&nbsp;&nbsp;&nbsp;return(0);<br />}<br /><br />
 楼主| zysunol 发表于 2007-3-20 17:27 | 显示全部楼层

谢谢各位

zlgARM&nbsp;arzhiy回答的很详细,谢谢
hotpower 发表于 2007-3-21 00:07 | 显示全部楼层

PWM简单些,方波就没什么PWM的精度问题了

  
qihao 发表于 2007-3-21 08:25 | 显示全部楼层

标记!

  
王紫豪 发表于 2007-3-21 12:44 | 显示全部楼层

加片cpld,emp240才18块不到!就简单多了

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

本版积分规则

14

主题

32

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部