给STC的建议
2024-7-27 14:35 来自 baiyu 发布 @ 综合讨论
最近一直在使用STC,对STC芯片有一个非常强烈且极为有益的建议:普遍而系统地加强STC芯片现有的各模块之间的联动能力。
其实,在加强模块联动能力方面,STC一直在做。
先说一说各模块联动的好处,以及STC在这些方面的努力和进步。
例如,以前,STC芯片的ADC模块与定时器模块是没有联动的,也就是没有PWM触发ADC转换的功能。这就导致一个问题:当希望ADC以一个固定且无抖动的周期等间隙采样时,STC芯片就无法做到。但现在,很多新出的STC型号,其ADC模块都已经实现了与定时时器的联动,也就是实现了PWM触发ADC转换的功能。这就使得STC芯片的ADC能轻松实现固定且无抖动的周期等间隙采样,这是一个非常重要的进步。
又如,以前,STC的某些芯片,其ADC是没有与DMA联动的,这就导致一个问题:当需要使用ADC连续高速采样时,ADC会频繁产生中断,占用大量的CPU时间,导致STC芯片对ADC采样数据的实时处理能力偏低。但现在,很多新出的STC型号,其ADC模块都已经实现了与DMA模块的联动。这就使得STC芯片在执行ADC的连续高速采样时,不再频繁产生中断,而可以等待多个ADC数据采集完毕之后再统一处理,这极大地提高了STC芯片对ADC采样数据的处理能力。
不仅如此,很多新出的STC型号,还将LCM、I2C、SPI、I2S、UART等多种功能模块都是DMA模块联动了起来,同时也将SRAM模块与DMA模块联动了起来,甚至通过DMA将SRAM与SRAM也联动起来,这些联动,一下子将STC的极限数据处理能力提高了好几倍。
但是我认为,STC做得还不够,远远不够,因为在“联动”这个方向上,STC芯片还有很大的发展空间。
我的观点是:既然各功能模块一旦实现联动,就能让STC芯片的性能提高好几个档次,那么为何不更加系统地审视和规划STC芯片的联动能力,从而进一步提高STC芯片的能力呢?
不应局限于仅将ADC与定时器联动起来,还应普遍地、系统地将STC内部的所有功能模块都相互联动起来,这将使STC获得前所未有的性能提升!
注意,我说的是硬件级的联动,无需CPU干预的硬件自运行式的联动。
具体地说,就是要按照以下思路去设计联动框架:
首先,将DMA模块与定时器模块联动起来,允许通过定时器或PWM模块,定时触发DMA执行特定动作(类似于通过PWM定时触发ADC转换,现在的STC芯片,DMA有了,但是DMA没有与定时器联动)。
其次,将DMA模块与其它的所有功能模块联动起来,除了前面已经实现的ADC、LCM、I2C、SPI、I2S、UART模块外,还应将每个IO端口也视为一个通信模块与DMA联动起来,甚至将FLASH也与DMA模块联动起来(呃,FLASH这个要慎重)。
其三,还应当允许各功能模块也相互联动起来,形成具有“组合”或“级联”效果的复合联动。例如,允许将任意两个IO端口组成成一个16位的IO端口,或者允许将两字节的SPI通信(或其它通信)组合成一次16位数据的通信,允许将一个IO端口的数据定时读取出来自动传送到SRAM缓存,再允许定时将SRAM数据定时读取出来自动传送到IO端口寄存器,以及允许读取某个寄存器的值并将该值作为地址偏移量自动读取对应SRAM地址的SRAM单元的数据,自动送到某个IO端口寄存器中。
这样做有什么好处呢?
答案是:可以极大地提高STC芯片在测量、控制和数据处理、以及软硬件协调方面的极限能力(至少提升十倍),甚至可以让STC芯片实现部分硬件级数字逻辑电路、CPLD电路、FPGA电路的功能!如果实现了这样的STC芯片,谁还敢说STC芯片不够强大呢,谁还敢小瞧51内核呢?
作者有一个判断:MCU的性能瓶颈不仅在于主频、位宽和内部功能模块,更关键的还在于有没有实现内部各功能模块的硬件级联动!将STC芯片的主频从305MHz提升到150MHz很难,但也不过只能提升4倍的性能而已;将STC芯片从8位宽度提升至32位宽度,性能也不过只能提升数倍;但如果将外设的硬件级联动搞好,则STC芯片的性能可以轻松提升10倍以上!如果三管齐下,则STC芯片的性能可以提高数十倍乃至上百倍。
(1)IO组合端口
①设计一个名为P16CFG的8位寄存器,其复位值为0x00,它的位和位分别表示组成16位IO端口的低八位和高八位端口的编号。当低八位和高八位的端口编号相同时,表示所组成的16位IO端口的低八位和高八位是同一个IO端口。P16CFG的位,用于指示对于组合端口中被P16MSK排除掉的那些IO引脚(不妨称为冲突引脚)在被传统寄存器操作时的影响:00-传统寄存器可以操作该IO端口中的所有IO引脚;01-传统寄存器仅能操作该IO端口中的有冲突引脚;10-传统寄存器仅能操作该IO端口操作中的无冲突引脚;11-传统寄存器不能操作该IO端口中的任何IO引脚。
②再设计一组名为P16、P16M0、P16M1、P16PU、P16NCS、
其实,在加强模块联动能力方面,STC一直在做。
先说一说各模块联动的好处,以及STC在这些方面的努力和进步。
例如,以前,STC芯片的ADC模块与定时器模块是没有联动的,也就是没有PWM触发ADC转换的功能。这就导致一个问题:当希望ADC以一个固定且无抖动的周期等间隙采样时,STC芯片就无法做到。但现在,很多新出的STC型号,其ADC模块都已经实现了与定时时器的联动,也就是实现了PWM触发ADC转换的功能。这就使得STC芯片的ADC能轻松实现固定且无抖动的周期等间隙采样,这是一个非常重要的进步。
又如,以前,STC的某些芯片,其ADC是没有与DMA联动的,这就导致一个问题:当需要使用ADC连续高速采样时,ADC会频繁产生中断,占用大量的CPU时间,导致STC芯片对ADC采样数据的实时处理能力偏低。但现在,很多新出的STC型号,其ADC模块都已经实现了与DMA模块的联动。这就使得STC芯片在执行ADC的连续高速采样时,不再频繁产生中断,而可以等待多个ADC数据采集完毕之后再统一处理,这极大地提高了STC芯片对ADC采样数据的处理能力。
不仅如此,很多新出的STC型号,还将LCM、I2C、SPI、I2S、UART等多种功能模块都是DMA模块联动了起来,同时也将SRAM模块与DMA模块联动了起来,甚至通过DMA将SRAM与SRAM也联动起来,这些联动,一下子将STC的极限数据处理能力提高了好几倍。
但是我认为,STC做得还不够,远远不够,因为在“联动”这个方向上,STC芯片还有很大的发展空间。
我的观点是:既然各功能模块一旦实现联动,就能让STC芯片的性能提高好几个档次,那么为何不更加系统地审视和规划STC芯片的联动能力,从而进一步提高STC芯片的能力呢?
不应局限于仅将ADC与定时器联动起来,还应普遍地、系统地将STC内部的所有功能模块都相互联动起来,这将使STC获得前所未有的性能提升!
注意,我说的是硬件级的联动,无需CPU干预的硬件自运行式的联动。
具体地说,就是要按照以下思路去设计联动框架:
首先,将DMA模块与定时器模块联动起来,允许通过定时器或PWM模块,定时触发DMA执行特定动作(类似于通过PWM定时触发ADC转换,现在的STC芯片,DMA有了,但是DMA没有与定时器联动)。
其次,将DMA模块与其它的所有功能模块联动起来,除了前面已经实现的ADC、LCM、I2C、SPI、I2S、UART模块外,还应将每个IO端口也视为一个通信模块与DMA联动起来,甚至将FLASH也与DMA模块联动起来(呃,FLASH这个要慎重)。
其三,还应当允许各功能模块也相互联动起来,形成具有“组合”或“级联”效果的复合联动。例如,允许将任意两个IO端口组成成一个16位的IO端口,或者允许将两字节的SPI通信(或其它通信)组合成一次16位数据的通信,允许将一个IO端口的数据定时读取出来自动传送到SRAM缓存,再允许定时将SRAM数据定时读取出来自动传送到IO端口寄存器,以及允许读取某个寄存器的值并将该值作为地址偏移量自动读取对应SRAM地址的SRAM单元的数据,自动送到某个IO端口寄存器中。
这样做有什么好处呢?
答案是:可以极大地提高STC芯片在测量、控制和数据处理、以及软硬件协调方面的极限能力(至少提升十倍),甚至可以让STC芯片实现部分硬件级数字逻辑电路、CPLD电路、FPGA电路的功能!如果实现了这样的STC芯片,谁还敢说STC芯片不够强大呢,谁还敢小瞧51内核呢?
作者有一个判断:MCU的性能瓶颈不仅在于主频、位宽和内部功能模块,更关键的还在于有没有实现内部各功能模块的硬件级联动!将STC芯片的主频从305MHz提升到150MHz很难,但也不过只能提升4倍的性能而已;将STC芯片从8位宽度提升至32位宽度,性能也不过只能提升数倍;但如果将外设的硬件级联动搞好,则STC芯片的性能可以轻松提升10倍以上!如果三管齐下,则STC芯片的性能可以提高数十倍乃至上百倍。
(1)IO组合端口
①设计一个名为P16CFG的8位寄存器,其复位值为0x00,它的位和位分别表示组成16位IO端口的低八位和高八位端口的编号。当低八位和高八位的端口编号相同时,表示所组成的16位IO端口的低八位和高八位是同一个IO端口。P16CFG的位,用于指示对于组合端口中被P16MSK排除掉的那些IO引脚(不妨称为冲突引脚)在被传统寄存器操作时的影响:00-传统寄存器可以操作该IO端口中的所有IO引脚;01-传统寄存器仅能操作该IO端口中的有冲突引脚;10-传统寄存器仅能操作该IO端口操作中的无冲突引脚;11-传统寄存器不能操作该IO端口中的任何IO引脚。
②再设计一组名为P16、P16M0、P16M1、P16PU、P16NCS、
免责声明:
本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;
上一篇: 咨询供货问题