LPC VS STM32 ,且看我如何选型
Cortex-M3是新兴起来的一种ARM7的核,而ARM7TDMI是一种传统的经典的ARM内核。我们就抛开这一切,来比较一下两则的异同。
我们就在以下平台上比较吧:
STMicoelectronics:STM32F101 36M极限频率,6到16K SRAM,32到128K flash , 1*12位ADC , 80个快速IO口。
NXP:LPC21303 ,、,70MHz, 8K SRAM, 2 UART , 2 I2C , 8*10位ADC ,32k FLASH。
而且价格上STM32要比NXP系列要贵。
这样看来是不是NXP2103占据一定的优势呢?它便宜,更快,有更多的AD转换,但是我们下面将从另外的方面来比较一下,看看NXP的优势真的是不是那么明显?
我们再比较一下ARM7TDMI同ARM Cortem-M3,我们将发现以下有趣的现象:
Cortex-M3主要针对价格第三的应用场合,主要是代替性能强大的8位或者十六位微控制器的市场。
最值得注意的地方是整数运算,Cortex是运行在 1.25 DMIPS/MHz,而ARM7TDMI则是在0.95(在thumb指令下是0.74)DMIPS/MHz,如果我们再交以 DMIPS/MHz写入,则会从ATM7TDMI得到66.5 DMIPS,而从Cortex得到62.5 DMIPS,如果ARM7需要运行在thumb模式(如果代码空间有限的话),ARM7TDMI仅仅才51.8 DMIPS,使Cortex运行显得更快了(如果代码空间足够的话就显现不出来)这就算两则打平了。
第二是看两则的电源管理和功耗。ARM7TDMI内核有0.28mW/MHz,而Cortex是0.19 mW/MHz,在片内,LCP2103在1.8V的时候是转换到了50mA,(如果我的排除一切外围电路,只留PLL工作),在Cortex内核中我们得到的是更小的电流。
第三,在内核结构方面,NXP是冯诺依曼结构,而Cortex则是哈佛结构,它将代码区和数据区分开了,多了分枝预测,在运行for等语句的时候有优势,故有一定的优势。而且,Cortex支持一些比如位翻转的DSP指令,这在运行比如DFT的时候显得无比的有用。Cortex还包含了分枝结构,较大地减少了中断等等时间(比ARM7TDMI改进了2.5倍),这无疑Cortex占据了优势。
还有一些其它的方面值得注意,比如:Cortex有一些片内集成的模块,但这些在LPC芯片上要在外围另外接。比如:LDO,片内温度传感器等,这些功能看起来不怎么样,但是如果我们的PCB板面积有限的话,为节省外部的空间,这些功能就很重要了。第二,频率也显得比较重要,Cortex提供了50M频率输出,但是LPC的PCC只能够提供内部时钟倍频。
结论:两则还是各有千秋,所以,我们在选择型号的时候还得慎重。
NXP的东西在汽车上用的很多。我从毕业就在车载行业混。车上用的东西,飞思卡尔的最多,英飞凌那是车厂级别的采用,就是所谓的前装标准.汽车收音机出了ST的TDA7540外,最大的还是NXP的、
ST的东西才是有不少BUG。比如STM32刚出来的时候,为了快速抢占市场,那些芯片问题很多的,只是说现在好很多。ST最成功的还是STM8
深圳车载行业以前用的MCU都8位的,厂家有很多,松下,瑞萨,东芝、、、、、自从STM8出来以后已下子都“叛变了”转投ST阵营。
我09年开始玩STM32,后来,用STM32的64脚,100脚的做了几个应用。感触如下:《仅个人之言。》
1.开发容易,借助于那个让人“爱”有让人“恨”的库,开发周期比较快。
2.管脚分配比较灵活。映射考虑的很周全。不像我现在用的NXP LPC1768那样,AD和UART放在同一个引脚上,只能选其一,我很想骂人。
明说8路AD,结果能真正用的只有4路,被占了4路。
3.STM32的很多功能都是好靠软件去实现的。比如:RTC时钟的日历功能,只能用户自己算。LPC1700的直接将年,月。日,星期写进去就行,硬件自己算。精度也很高、相当于DS1302那样。比较爽。LPC1700的UART带FIFO,数据量很大,也不会死。
4.I2C的控制,LPC1700做的很好。STM32的早期库有些问题,但是库的升级真的很麻烦。
5.LPC1700直接操作寄存器。这点很好,效率高,而且有助于我们深刻理解原理。
6.源于ARM V7的第二代内核,速度有了大幅提升,100M,关键是分开的内核总线,跑起来,不会有速度瓶颈。
7.LPC1700最复杂的地方就是时钟控制这一块,搞的像X86的时钟一样,有PLL0.PLL1,还有转给USB时钟的,但是这样也带来一个好处,待机功耗可以做的更低。
睡眠模式-----------》深度睡眠----------------》掉电模式----------------》深度掉电模式
10mA 0.45mA------------------>150uA------------------>470nA <实际测试的数据,可能有误差>
8.个人感觉STM32的AD精度还是不错的,LPC1700的AD很依赖PCB布局和走线,STM32的相比之下,比较随便。误差不是很大。
9.USB的开发,目前只能依赖STM32的库,要做的东西很多。速度也不是很快。LPC1700的快多了,速度快些,更重要的是升级固件的时候,很方便,不需要任何工具,会在系统下模拟一个U盘,然后将要升级的BIN文件,拖进去,然后重启就可以。ST的要搞得DFU的玩意。有时候还老是刷不成功。
10,最后感叹下STM32超强的定时器功能,做电机控制首先。
总结下:追求性价比的,上手快的,使用的外设要求多的,比如5个UART的,选STM32。
选择工业控制,外设使用不是特别多的,可靠性高的,找LPC1700
不要喷我啊 要是有什么不到位的地方 欢迎指出来
不喷,小编再来个stm选型解说就好了!
同意楼上观点,stm8和stm32f0,以及stm32f其他的型号太多了,不知道各自有什么区别