tag 标签: 实用单片机系统

相关博文
  • 热度 21
    2013-7-16 18:43
    1043 次阅读|
    4 个评论
    之前上传实用单片机系统,由于附件太多,MS5没有上传成功,今天重新上传。
  • 热度 39
    2013-1-7 19:30
    2809 次阅读|
    23 个评论
    经常看到21ic论坛还有这么多人支持,也经常有网友联系我要之前的一些版本,让我觉得应该进一步完善与发展“实用单片机系统”,把这几年自己的一些项目经验融合进这个系统里面来,给大家一个参考,以感谢大家的支持! 多次想引入RTOS的任务切换,但当对客户的需求层层精确分析后发现,实际上根本不需要,并且引入RTOS,引入自己不熟悉的东西,系统稳定性更难控制,公司做linux、wince经验的同事,都反对我引入,觉得99%的工业项目或者小项目根本不需要,不应该随大流,还是进一步深入发掘应用为好,所以最后也都没有往RTOS的思路走,而是朝清晰化、简洁化编程思路设计,并且打算引入FPGA,实现真正的纯并行。 MS系统发展到现在,本质可以归纳为是一个前后台结构,最急的用中断(如各种保护),次之用高速系统时钟(如AD采样等),再次之用分频后的系统时钟,如按键、数码管刷新、显示刷新等。它们都可以抛出消息,快的抛出来,让慢的来处理,慢的抛出来,让Main主循环处理。这些可以满足绝大多数项目需求。而对于更复杂的项目,我现在也不考虑RTOS,而是采用扩展CPLD、FPGA,或者多MCU,中间用CAN通讯。因为本质上CPU永远是单线程的,RTOS只是让一个系统模拟的像多个并行的系统,但永远只有一个在运行,当在一些高可靠项目中,比如伺服电机等,要求多个保护,又有主程序运行,他们都要求第一优先级的,会导致系统比较复杂,而这个时候用FPGA可以很好的解决这些问题,可以说是彻底的并行,彻底的RTOS,这是做高可靠大功率数字电源的基础。现在正在解决CAN通讯问题,希望在今后的设计中,把大项目分解为一个个的小项目多MCU设计思路。 现在正在学习STM32F103,打算把MS4(第一版基于NXP LPC1343,用于高频焊接机)开始移植到STM上,因为要基于MS4做一套网络化的PLC系统,也就是分布式PLC,这个是一个比较重要的项目,需要做1年多时间,今后将长期维护,做成一套通用性的平台市场化。网络基于CAN总线,可以是STM32F103内带的,也可以采用MCU模拟的,目前CAN模拟已经成功,但还需要进一步完善。 之前基于MS4做了超高频涡流焊接机,功率是6KW,频率在1MHz,大功率,干扰很大的,系统运行非常可靠,目前已经量产、规模使用,软硬件都没有问题,火花机也是采用MS4。这个里面,本人基于界面需要,设计了基于消息机制的界面开发体系,觉得非常不错,是把函数指针跟消息比较好的结合起来了,类似显卡,当数据有变化的时候,系统时钟扫描到,再定时刷新,这样系统编程清晰度非常高,今后将在MS4基于STM32版本上发布出来,到时候请各位指正。 今后MS系统的一个发展方向将是结合CPLD或者是FPGA,因为本人最近都在开发FPGA,觉得需要把他跟ARM整合起来,看成一体,而软件呢,也要基于CPLD做一些功能扩展,这个将会在网络化PLC中有体现。 MS5版本说明:  MS5基于STM32F103设计开发,可以在Keil下软件仿真调试,不需要实物硬件板子,UART1作为人机窗口。硬件测试是基于正点原子的miniSTM32F103RBT6板子测试,资料是开源的。MS5主要基于MS4(基于NXP Cortex M3)升级而来,因为在2011年基于MS4做了6KW高频焊接机,增加了界面部分,采用函数指针加消息机制,感觉比较简单而有效,性能比较不错,尤其是针对工业产品,系统节拍分时设计有进一步的体会,把这两点融入到MS5中,同时修改了串口UART发送系统等待问题,先把串口数据放到一个buff中,系统节拍去检测buff,当有数据时,每个节拍发送一个,这样就避免了以前发送的时候,需要很长的等待问题。  升级为MS5的根本目的作者是为了设计一款仿西门子S7系列的分布式PLC,应用在自己公司的自动化控制领域及工业电源设备上。同时考虑到今后这个PLC系统需要推向市场,所以选择了STM32这颗比较通用的芯片来设计。作者把这个PLC系统叫做msPLC,初级版本开源设计,包括软硬件。今后关于PLC的一些开发,都会在MS5中得以体现,也希望MS5发展成为针对工业控制领域的系统平台。  读者需要明确的是,MS5是一个系统平台,它不是一个RTOS,它是一个为了简单、可靠、看得懂代码,容易上手,缩短开发周期而构建的平台。MS5是一个前后台系统,作者也曾多次想上RTOS之类的,但对于工业产品深入分析后,发现绝大部分是没必要的,并且引入了自己不了解,代码把握不了的RTOS,一旦出现问题无法解决。所以就退回到了MS系统上来,尤其发现工业设备,采样速度是要求较高的,但执行可以慢一些,这样可以把中断作为紧急不可延时高速采样,系统节拍设定为万分之一秒用于AD,IO常规采样,节拍分频后获得百分之一秒用于按键、数码管,分频为十分之一秒用于数据显示刷新,分频为一秒用于RTC时钟。中断获取的数据,可以在万分之一的节拍中处理,也可以在更低速的地方处理,更可以在main主程序中处理。这就是所谓的,高速采样,低速处理,系统可以设计的非常有条理。  
  • 热度 29
    2012-5-3 14:59
    2722 次阅读|
    11 个评论
    2001年大学毕业时,就想着基于MCU51做一个属于自己的开发平台,这样今后的项目都基于这个平台开发,既可以提高效率,又可以提高这个平台的扩展性、复用性及稳定性。 想法只是想法,那个时候单片机也只有汇编的水平,只做过半个项目,但这个理念是很好的,现在还感叹自己当时竟然有这个理念。 2002年觉得自己不懂软件光有想法不行,来到了深圳从事手机软件开发,一般人应聘往往采用自己的特长去应聘,而我这一次是用自己不会的去应聘,目的只有一个:学习。 因为有朋友介绍,所以不会也成功了,手机软件开发半年后,基础水平大涨,那个时候稍微闲一些,就开始考虑那个MCU51平台。 首先了zlg的DP51板子,先按zlg提供的例子一个个的学,学了2,3个觉得这样没什么意义,任何一个例子都是独立的,相当于一个子函数,不具备系统性,就如风清扬说的,各个剑招分开是死的,只有融合起来才行,于是就开始自己谋划这个平台: 1:手机平台是当时自己最熟悉的,并且也是最先进实用的,尤其是内部的软件定时器用的非常漂亮,软件定时器可以解决硬件定时器资源不足问题,尤其可以实现游戏,闹钟,按键声等等,更进一步说还可以实现类似RTOS的任务,所以这个软件定时器被我采用了。 2:以前大学的时候学过VB,虽然没操作几下,但觉得它的事件触发机制很好,事件驱动型,说穿了就是消息机制,这个也应用到我的平台中 3:那段时间比较火RTOS,其实无论那个RTOS,在MCU51这个资源非常少的环境中,意义都不大,甚至反而把开发弄得复杂了。但他的系统节拍的概念在手机平台上也有体现,并且非常实用,于是把它也引入了。(那个时候还没有系统学过RTOS) 4:Trace系统在手机平台上应用非常广泛,以前很多人开发MCU51都是用仿真器,但手机开发是不用仿真器的,而是用Trace,用printf从串口打印信息出来跟踪调试,这个非常好,起码不用买仿真器了。 5:独特的按键处理方式,别的都可以说模仿的,但这个是本人自创的,非常棒。 基于以上5点,综合起来,就成了第一版的“实用单片机系统”,当时发表在21ic上被认可,之后2004年改进为第二版(MS2),这个版本相对比较简单明了,一般C语言基础的一看就懂,(MS3)版本发布在2006年,相对复杂一些,指针比较多,并且实现了软件定时器的伪任务模式。 华禹工控开发的很多单片机项目都是基于MS2、MS3开发的,创易电子的彩色触摸LCD屏开发板也是采用MS3开发的,尤其是软件定时器应用于触摸上,非常妙,获得宏晶单片机老板姚永平的赞赏。 MS3经常被我用来面试,考核应聘者的软件水平及思维能力,其中max(负责华禹工控wince平台的,21ic驱动版版主,代号high)4年前就是看了MS3后马上决定过来的。 不同的人看MS系统,感觉完全不同,这个取决于他本身的水平,本人希望读者从结构上入手考虑,之后各个部分的深入。 当然MS毕竟是基于MCU51的,不可能很复杂,若看过uCOSII之类的RTOS,那么MS就是一个小儿科,所以本人推荐MCU51入门或者提高的人学习即可。 MS作为本人软件方面的最高水平,算是本人软件的一个积累,虽然谈不上多少成就,但起码留下了一个成熟的东西,这是最重要的。 MS4是最新基于NXP Coretx M3的LPC13**系列下开发的MS3的升级版本,支持32位系统,性能更好