打印

基于FPPA的多路PWM输出

[复制链接]
2607|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
工控秀才|  楼主 | 2007-10-29 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RS232串口在一些控制场合依然还有很大的市场应用, RS232协议十分简单,操作方便,但是目前低端的4位,8位MCU都不具有串口硬件.所以有不少技术人员开始使用软件模拟技术,但是,串口发送倒是比较简单,只要屏蔽中断,计算好波特率,模拟串口的发送一般都不会有问题,但是串口的接收就不一样了,即使使用IO口电平变化中断,但是中断的响应和中断优先级,中断嵌套等,都可能造成软件模拟的串口接收数据会不稳定.

    而FPPA的诞生,却在软件模拟方面解决了很多的难题,模拟真正的全双工串口也可以模拟好几组,这是传统的MCU望尘莫及的.如下的RS232互动DEMO,正是利用多核心的优势,使用串口控制6路PWM的应用方案,

    6路PWM的主要特性如下:

    周期公式:(PWM周期数(|=0) + 15) * t

       脉宽公式:(PWM脉宽(|=0)   + 5 ) * t

备注:t为FPP的指令执行周期,一般为1us或0.5us.

当PWM脉宽参数为0时,无脉宽输出,即PWM输出为恒定低电平信号。

当PWM脉宽参数大于或等于PWM周期参数时,输出恒为高电平。

因此PWM在临界位置存在死区,如当PWM脉宽参数为0时,PWM输出恒为低电平,当PWM脉宽数为1时,PWM直接输出了6t的脉冲宽度。其实这一点死区也许永远都用不着的,因为可调的脉宽已经到了3~97%之间了,而且不包括恒定电平的输出.

 

别说6路这样的PWM,传统的MCU能够模拟一路都几乎是不可能的了.不信自己可以回家练练看看,呵呵.

 

既然是串口互动,就需要能够通过串口来控制MCU的运行了.所以选择了一个超级终端作为一种调试工具来用.超级终端有个好处就是可以把键盘的响应通过串口将键值的ASCII码发送出去,而且本身也提供串口的输入显示功能.也正是这样,我的6路PWM都可以通过PC端来控制了,呵呵.新手值得一试!

起初6路PWM都是控制各控制一个单色LED的,这样PWM的占空比只能通过观察LED的强弱来判断,实在比较费力.后来就取其中的3路PWM来控制全彩LED,呵呵,这下好了,人眼对颜色的反映还是很灵敏的,可惜我的相机太差了,无法反映真实的色彩.

随便发2张给各位看看吧:



 

留意椅子板面的颜色,呵呵.



       三基色的混色原理就不说了,想想看3路250几的分辨率可以混成多少种颜色呀,250*250*250,呵呵,这比简单的7彩是否强多了呢.

        

  也把超级终端拿来秀一下:

                             

    看看上面这些字符,都是通过FPPA在接收到键盘值后反馈回来的,因为FPPA有8和核心,所以就用了一个专门接收串口的键盘值,另外一个专门发送数据到PC端,其他6路就用来产生6路分辨率为1us左右的PWM了.

    能够造出上面图片中的整齐字符命令,你必须要懂得几个特殊的ASCII码值,比如:

    回车键:   0X0D

    换行符:   0X0A

   BACKSPACE:  0X08

   BACKSPACE主要用在输入出错时,利用它清除之前的输入,而在MCU端接收时只需要将接收BUF的指针前移一个,并且不保存该键值就可以了.如下:

                                                   

    很多朋友学习单片机都是从点LED开始的,但是,如果你也能通过PC端来控制你的LED的话,无疑你的这一起步比别人大多了. 好了,这样的DEMO方案,欢迎任何使用8位MCU的朋友来挑战一下,别忘了,软件模拟哟. 当然有些朋友可能会说,我有硬件,干嘛需要软件模拟呢,问得好,如果你使用硬件的成本比FPPA更低,使用更灵活,的确可以不考虑,虽然我们是8核,但我们依然低价格.

   

相关帖子

沙发
ayb_ice| | 2007-10-29 15:02 | 只看该作者

模拟232当学习还可以,真正用还是不好。。。

使用特权

评论回复
板凳
工控秀才|  楼主 | 2007-10-29 17:35 | 只看该作者

IIC,可以用,232就不行吗?

其实都一样,以前不能用,是处理没有那么方便!
软件模拟同样可以做到高速可靠的.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

286

帖子

11

粉丝