PWM(Pulse-Width Modulation)在电源管理、电机控制等场所的应用非常广泛。英创公司的嵌入式工控主板也充分地考虑到了这样的应用需求,所以在EM9000、EM9360、EM9260、EM9160及最新的EM9170中,均设计了一路或多路PWM信号输出。如需要更多的PWM通道,则可以使用ETA754模块再扩展出两路PWM信号输出。ETA754是基于精简ISA总线的扩展模块,可与英创公司的所有主板产品配合使用,ETA754扩展模块的核心是一片经典的82C54三通道可编程定时器芯片。
为了说明如何使用ETA754,以EM9170作为应用平台进行举例说明。由于82C54的特点,要使其输出PWM信号,需要使用两路计数器配合使用,即计数器0通道的输出连接到计数器1和计数器2的GATE信号上(相互之间可以互换)。所以一片82C54最多可以输出两路PWM信号,它的输出信号连接图如下所示:
基于上图的应用,存在几个特点需要注意:
1、两路PWM信号的输出频率是一样的
2、最低输出频率为153HZ
3、要使PWM信号的占空比分辨率达到1%,最高输出频率为100KHz
4、输出频率超过100KHz后,占空比分辨率为:(f/100KHz)%
基于EM9170测试时,一共只有三个函数,即打开、关闭、设置输出。函数说明如下:
/*
功能:ETA754初始化
输入参数:
无输入参数
返回值:
操作成功:
操作失败:-1
*/
int ETA754Init();
/*
功能:关闭ETA754
输入参数:
Channel:要设置工作模式的计数器通道,限Channel _1\ Channel _2有效。
返回值:
操作成功:
操作失败:-1
*/
int ETA754Close( unsigned char Channel );
/*
功能:在ETA754的计数器通道和通道上产生PWM信号输出,以下参数是计数器输入时钟频率为MHz
输入参数:
Channel:要设置的PWM通道,限Channel _1\ Channel _2有效。
PWMFrequency:输出的PWM信号频率,最小HZ,最高MHz
PWMDuty:输出的PWM信号的占空比,-99有效(在Hz-100KHz之间,占空比分辨率能达到%)
如输出频率超过KHz,则占空比的分辨率只能做到(x/100000)/100。
返回值:
操作成功:当前输出的频率
操作失败:-1
*/
int ETA754_PWM( unsigned char Channel, int PWMFrequency , int PWMDuty );
下面的例子就是从PWM1通道和PWM2通道输出相同频率、不同占空的代码:
ETA754Init(); // 初始化ETA754及所占用的ISA总线资源
ETA754_PWM( Channel_1 , 100000 , 50 ); // 从PWM1口输出100KHz、50%占空比的信号
ETA754Close(Channel_1); // 禁止PWM1口输出信号,这时为低电平
ETA754_PWM( Channel_2 , 100000 , 20 ); // 从PWM1口输出100KHz、20%占空比的信号
ETA754Close(Channel_2); // 禁止PWM2口输出信号,这时为低电平
全部0条评论
快来发表一下你的评论吧 !