技术热线: 0755-86643915

新闻动态

国产的32位单片机有哪些

更新时间: 2023-10-13 15:44:17
阅读量:

1.国产32位mcu有哪代理芯海

深圳鼎盛合科技系芯海一级代理商,代理芯海高精度ADC芯片,SOC芯片,wifi及蓝牙模块

2.国产32位mcu性能比较

“技塑未来” 专注嵌入式与无线硬核技术、职业发展、实战项目分享,欢迎关注一同成长STM32F030是意法半导体(ST)公司推出的一款ARM CortexM0架构的32位MCU代理芯海意法半导体(ST)公司的集成电路产品众多,STM32系列的MCU应当是应用最为广泛且最为知名的产品系列。

3.主流32位mcu

下图是意法半导体官方网站的产品类型,STM32就位于其中的“微控制器与微处理器”中

4.32位mcu芯片市场需求资讯

STM32系列MCU之所以应用广泛,应当还是从开发者的角度看,代理芯海它提供了完备的嵌入式开发硬件套件、嵌入式开发软件SDK、以及统一而且规范的驱动API接口和详细的说明文档所以入门嵌入式MCU,选择STM32是非常适合的。

5.国产32位mcu芯片厂排名

而对于实际开发而言,因为STM32的总体开发风格和套件都风格统一,所以选择CortexM0,还是CortexM4,就代理芯海根据自己产品所需的性能要求和外设能力去选择,而嵌入式软件开发知识这块基本可以平移,不会因为切换芯片而要重新学习基础的编程接口。

6.32位mcu芯片价格

本文基于ARM CortexM0的STM32F030,及其对应的开发板“stm32f0308-discovery”,对STM32F030的基本框架和功代理芯海能进行介绍一 开发板STM32提供了许多入门级开发板,如Discovery系列和Nucleo系列。

7.国产的32位单片机有哪些

stm32f0308-discovery就是Discovery系列开发板中的一个,上面的芯片就是STM32F030Discovery系列开发板的基本功能和特性应当都相差不大,代理芯海区别应当是上面芯片的能力会有所差异。

8.32位mcu芯片概念股

stm32f0308-discovery的设计特点如下:便捷的IO口引出:只要有一根USB线连接到PC即可进行开发,stm32f030这颗IC的IO口都从开发板引出,便于用杜邦线连接到不同的其他设备调试接口:

9.国产32位mcu哪家质量好代理芯海

该开发板板载swd的debug接口,是用ST的另一颗cortex-m3的IC实现的(目前市面上的v9版本的JLINK应当也都是用ST的cortex-m3的IC来实现的)这个swd debug接口可以通过短路帽的连接单独使用,也就是说stm32f0308-discovery可以作为一个单独的swd调试代理芯海器使用。

10.32位mcu国产品牌

灵活供电:开发板本身通过USB供电,不过开发板上有电压转换电路,可以输出5V和3V的电源供外部设备使用(注意供电电流还是有限的),一般的小模块小接口都可以直接用它供电板级外设:因为是入门级的低成本开发板,板载外设很简单,两个button和4个LED。

两个button代理芯海中,一个用于reset,一个是用户可编程设定的button4个LED中一个是电源指示,一个是swd debug状态指示,剩下的两个可以编程来控制所以实际上可供编程控制的板载外设就是一个user button,两个user LED。

二 系统框架STM32F030为ARM CortexM0架构,系统框架代理芯海部分将简要介绍STM32的特色实现,而ARM CortexM0的通用架构设计,可参看ARM的CortexM0的设计文档STM32F030 内部系统框架可简单划分为2个master和4个slave系统。

这里的master和slave概念是相对于Busmatrix而言的:MastersCortex-M0代理芯海 core AHB busGP-DMASlaves内部SRAM内部FlashAHB2APBAHB到GPIO ports

那么2个master和4个slave的关系,下图有更具体的图示,并进行了标注:

对于其中的AHB2APB Bridge,如果要使用APB bus连接到的peripherals,必须要调代理芯海用RCC_AHBENR之类的寄存器先使能该peripheral的时钟,peripheral即外设驱动,这些细节在ST的驱动API里一般会处理好。

三 Memory的概述程序,数据,register(寄存器), IO端口等都统一映射在4G的地址空间中(32bit机器)STM32F030的memory m代理芯海ap详细划分,其datasheet上面有非常详细的介绍。

3.1 SRAM对于STM32F030的SRAM,有8K byte大小,可以用byte, word, half-word为单位访问,这部分的作用,就是存放编译链接后的代码的.data, .bss数据,程序运行中的堆栈也会在这区域中,程序运行时,代理芯海数据会不断的被读或写入到这片SRAM中。

3.2 FlashSTM32F030一般使用其内部flash就足够了,因为其IC定位就是如此,选用合适的资源,做合适的事情64K的用户Flash空间Flash在芯片内部,会称为内部Flash,有时也会用ROM(ROM和Flash的区别,应当是ROM是用户无法擦代理芯海除,在芯片流片时固化,而Flash则能随时擦写。

当然ROM的好处应当是能耗更低,制造成本也更低)STM32F030的内部Flash其实是又分为了两类:64K用户Flash空间:用来下载用户编译链接后所生成的.bin代码Info Flash,这部分其实又分了两种:

option byte:可以写入数据,代理芯海对IC的某些功能进行配置System memory:这是IC系统的memory,里面放了一段在IC流片时就固化了的代码,这份代码肯定是不开源的,只能大概猜测其做法对于System memory的作用,就是当做一个内嵌的bootloader,其实一般debug不会用到。

一般的用法是,用一个调试器通过s代理芯海wd接口连接到IC,然后代码下载调试很方便做到,但是,对于产品来说,就很可能不会将swd接口引出,此时只需要通过某些用到的串行接口,透过IC内部的System memory的bootloader将已经调试完成的产品.bin代码下载到用户Flash并运行,这是当前比较流行的固件更新的大概流程。

对于Sy代理芯海stem memory的bootloader,STM肯定会给出接口和使用Demo的,可以找到很多相关说明文档,都是说明如何使用其内部的bootloader的3.3 boot配置前面说的透过swd debug,称为“在系统编程”的方式,而使用bootloader加载和启动程序,应当是属于“在应用编程”代理芯海的范畴。

对于boot,不同的应用场景可能有不同的需求,因此stm有3中可以配置的boot方式boot方式配置首先有boot pin,将这个boot pin连接到高电平,或者接地,芯片刚起来时就会判断这个boot pin电平情况,从而切换到对应boot模式。

另外在option byte中也有个nBOO代理芯海T1,配置对应的boot方式即可boot方式的分类有3种,从用户Flash boot,这个应当最常见,编译链接完,下载,然后reset,就运行自己的Flash代码,就是这种。

另外是System memory boot,这就是上面说的用IC内部bootloader来boot以及SRAM boot四 时代理芯海钟(clock)介绍时钟clock是芯片的心跳,是芯片活动阶段所有事务处理正常进行的基本保证。

芯片的时钟可能会有不同的时钟源:其中HSI(High Speed Internal),称为高速内部时钟,由RC振荡器构成其中HSE(High Speed External),称为高速外部时钟,可外接石英/陶代理芯海瓷谐振器,或者接外部时钟源。

其中LSI(Low Speed Internal),称为低速内部时钟,RC振荡器构成,频率较低,STM32F030的为40kHz其中LSE(Low SpeedExternal),称为低速外部时钟,一般外接频率为32.768kHz的石英晶体。

另外PLL,是锁相环倍频输出。4代理芯海.1 STM32F030的clock框架STM32F030的时钟的框架实现如下,应当大部分STM的芯片都适用。

编辑 STM32F030xx时钟框架除了上面提到的5个时钟源外,STM32F030还有一个HSI14 RC时钟源,可以单独用来给ADC使用没有特别说明的peripheral一般都是用的PCL代理芯海K,这里根据具体的code将需要使用AHB/APB使能的情况简单列出:。

用AHB作时钟源:GPIOA-F, TS, CRC, FLITF, SRAM, DMA1用APB1做时钟源:TIM2, TIM3, TIM6, TIM14, WWDG, SPI2, USART2, I2C1, I2C2, PWR代理芯海, DAC, CEC。

用APB2做时钟源:SYSCFG, ADC1, TIM1, SPI1, USART1, TIM15, TIM16, TIM17, DBGMCU4.2 Clock的应用HSE:范围在4~32MHz之间的外部时钟源,可以外接HSE crystal和HSE bypass的方式。

对于H代理芯海SE crystal方式,OSC_IN和OSC_OUT都要占用,而HSE bypass只要占用OSC_IN,另外一个可配置为GPIO使用在启动时,HSE如果被使能,还会有一个HSERDY bit用来标示HSE是否已稳定,并可配置在稳定时产生一个中断。

HSE的CSS用来监视时钟,当HSE失效时会启动H代理芯海SIHSI:HSI是内部的8 MHz RC oscillator产生,其启动比HSE快,而且要节约成本一些,因为没有额外器件,不过HSI需要标定,因为其精度不如HSE。

与HSE类似,HSI也有HSERDY bit用来标示HSI是否已稳定PLL:输出范围在16~48MHz使能PLL前必须要将输入时钟,代理芯海分频和倍频参数都设置好要修改PLL配置要按照如下的步骤:PLLON置零禁止PLL;。

等待到PLLRDY被清掉,这时才说明PLL真正停止;设置PLL参数;PLLON置1使能PLLLSE:32.768KHz,给RTC提供时钟源类似于HSE的使用,不过时钟频率低很多有对应的LSERDY和LSEON等控制b代理芯海it。

LSI:内部RC时钟,能在Stop和Standby模式下工作,时钟范围在40KHz附近(30KHz到60KHz之间)4.3 低功耗的管理STM32F030低功耗模式有三种,Stop mode, Standby mode, 。

deep sleep modeStop mode和Standby mo代理芯海de会将所有MCU时钟关闭(包括PLL, HSI, HSI14, HSE)deep sleep mode的进入要等到APB相关操作完成才会延迟进入。

4.4 Clock的使用示例通过RCC寄存器配置Clock的代码stm在system_stm32f0xx.c中提供,涉及的函数为SystemInit和S代理芯海ystemCoreClockUpdate在reset后,cortex m0 core默认使用8M HSI作为系统时钟源,接着会在SystemInit()函数中配置要使用的系统时钟。

因为使用的stm32f0308-discovery板子没有外接晶振,因此只能使用HSI作为系统时钟源了每次HCLK改变时代理芯海,都要调用SystemCoreClockUpdate函数五 复位(reset)介绍。

复位(reset)是MCU系统启动的关键部分,IC开始执行程序就要从reset开始,是系统上电后的第一步5.1 CortexM0的Reset工作机制在cortex-m0的启动文件中,都会看到有reset_handle代理芯海r,处于vector table的第一个,cortex-m0的地址是0x0000 0004,cortex-m0一开始工作的PC值就是这个。

reset_handler中一般会调用用户实现的SystemInit函数,该函数中将对系统需要的各个部件的Clock进行好设置,便于之后系统中正常工作接着会调用库代理芯海中的__main入口,这里应当会对C运行时库做些初始处理,堆栈进行设置。

5.2 Reset的类型STM32F030的reset类型有三大类,Power reset, System reset和RTC domain resetPower reset是和IC的供电相关的,上电以及从待机中唤醒会触发该re代理芯海set,reset后开始系统初始化。

System reset是由系统触发的,即此时供电是正常的,但是如有按下reset按钮,软件写对应register复位,以及Watch dog触发等,这种reset发生时,和Power reset唯一不同就是RCC_CSR寄存器中用来表示是何种reset源的相关b代理芯海it不会复位,其余register都会复位为刚上电的状态了。

RTC domain reset的触发也是软件触发方式,通过写RCC_BDCR寄存器对应bit来触发,不过这类reset只会影响RTC以及LSE晶振等六 低功耗-Low Power Mode前面介绍STM32F030的时钟-Clock时有提代理芯海到低功耗相关管理,这里对STM32F030的低功耗详细实现进行展开说明。

STM32F030正常是运行在Run mode下,这种mode是在reset之后的默认模式Low Power Mode,即低功耗模式,用于在IC空闲时可以考虑选择进入,使系统耗能降低,在必要的时候通过唤醒在进入Run mode正代理芯海常工作。

Low Power Mode,在嵌入式系统中考虑的很多,也很关键,因为一般都是用移动电源供电,合理使用Low Power Mode,会很好的提高设备的续航能力6.1 Low Power Mode方式Sleep Mode:CPU时钟关闭,所有peripheral时钟运行;

Stop Mode:所代理芯海有时钟均停止;Standby Mode:1.8 V domain power-off,这里domain power-off应当是相当于关闭了给IC供电的电源另外,如果在Run Mode下,也可以通过如下手段来降低功耗:。

深圳鼎盛合科技系芯海一级代理商,代理芯海高精度ADC芯片,SOC芯片,wifi及代理芯海蓝牙模块

降低System Clock的速度,即通过Clock的配置,利用分频的作用,将系统Clock从最高的48MHz降低,这部分的配置可以参考Clock相关文档或文章;当不使用APB或AHB peripheral时,使用门控时钟的方式。

在peripheral配置使用时,一般会先通过RCC_AH/P代理芯海BClockCmd(xx,Enable)之类的接口来使能peripheral时钟,有时候,可能这个peripheral并没有再使用了,那可以通过RCC_AH/PBClockCmd(xx,Disable)的接口将其关闭,也可以省些电。

这里的RCC_AH/PBClockCmd()是stm32的固件库中提代理芯海供的,需要了解细节的可以看下stm32固件库,其中主要是通过对RCC_APBENR和RCC_AHBENR register操作来使能/禁止某项peripheral的时钟的。

几种Low Power Mode的比较如下:

6.2 Sleep Mode如何进入Sleep Mode?执行WFI (Wait F代理芯海or Interrupt) 指令或WFE (Wait for Event)指令进入Sleep Mode的机制可以通过Cortex-M0 System Control register的SLEEPONEXIT bit来选择:。

Sleep-now:SLEEPONEXIT bit置零,在WFI/WFE指令代理芯海执行之后立即进Sleep Mode;Sleep-on-exit:SLEEPONEXIT bit置1,在MCU退出了最低优先级的ISR之后,即系统没有任何ISR在处理时,就会进入Sleep Mode。

如何退出Sleep Mode?退出Sleep Mode的方式和使用的进入Sleep Mode的指令WF代理芯海I和WFE有关,使用WFI进入Sleep Mode,任何中断的发生都会导致退出Sleep Mode,而WFE指令进入的Sleep Mode,在event发生时会退出Sleep Mode,对于WFE指令进入Sleep Mode的方式,需要使用如下两种方式配置其退出Sleep Mode:

使能一个peri代理芯海pheral中断(非NVIC中断),使能Cortex-M0 System Control register的SEVONPEND bit,当MCU从WFE Sleep Mode醒来时,需要清掉peripheral interrupt pending bit和peripheral NVIC IRQ ch代理芯海annel pending bit ;

配置一个外部或内部EXTI line为event模式。Sleep Mode进入退出场景比较

6.3 Stop Mode比Sleep Mode更进一步,IC内部Clock应当都停止了,SRAM和register,IO口状态是保持在上一刻进入Stop Mode时的状态代理芯海Stop Mode进出场景比较。

6.4 Standby Mode比Stop Mode更省电,SRAM和register只有部分维持数据(需看下register表,应当有标明为Standby Circuitry的)Standby Mode进出场景比较。

在上面的Stop Mode和Standby Mod代理芯海e中, 貌似IWDG,RTC,LSI和LSE还是由这几个peripheral各自的register编程设定而受控制的,因为即使是进入了Low Power Mode,RTC的功能还是需要的,因为要计时,这很重要。

6.5 Low Power Mode下的debug问题因为进入Stop Mode和Stan代理芯海dby Mode后,Cortex M0其实已经停止了(Clock关闭了),因此用swd此时应当是没办法debug的,不过STM32F030通过设置DBGMCU_CR register的一些配置,还是可以debug的。

不过对于STM32F030,在进入Low Power Mode后,我觉得也没必要去d代理芯海ebug,因为Stop Mode和Standby Mode本来就没有代码在执行了,除非是stm自己在开发和验证IC时,可能需要做些debug,所以这里对使用者来说,应当不用关注。

6.6 Low Power Mode的RTC唤醒方式RTC alarm方式可以用来唤醒Stop mode和Standby 代理芯海Mode,RTC时钟源可以选择LSE,也可以是LSI,这两个低速时钟都适合用于低功耗的。

对于RTC alarm唤醒Stop Mode,需要:配置EXTI line 17为上升沿;配置RTC可产生RTC alarm对于RTC alarm唤醒Standby Mode,则只需要RTC可产生RTC alar代理芯海m即可。

七 STM32F030的硬件CRCCRC,即循环冗余码校验,是一种对传输/存储数据的完整性进行检查的校验算法因为在许多地方可能都会用到,所以STM32F030就将这个算法用一个CRC硬件计算单元实现在了IC中,当有应用要用到CRC时,那么就可以通过软件来控制该硬件单元实现需求(当然CRC也可代理芯海以软件来实现,但是速度肯定比不上硬件CRC)。

7.1 CRC计算单元框图如下:

具体的实现是在IC内部的,因此只需要知道如何使用即可,而且使用上很简单将需要进行计算的源数据从Data register(input)写入,启动CRC计算单元计算,就能在Data register(output)中读到计算代理芯海后的结果。

其实STM32F030的CRC Data register的input和output使用的是同一个register,因为必须先输入,再得到输出,然后才能继续下一个输入从这个过程可以看到,input和output并不是同时在使用的,那么直接用一个register复用两种功能就可以。

该regi代理芯海ster可以32 bit操作,也可16 bit, 8 bit的操作,这样可满足不同的需求八 关于STM32F030的GPIOGPIO对于每颗MCU都需要了解,常见的如LED和Button的控制,GPIO就是用来供MCU输入和输出用。

STM32的ARM CortexM 系列IC的GPIO设计大体相同,代理芯海其他家的GPIO做法会不一样,GPIO也是由电路构成,不同的IC厂商会有自己的hardware电路的具体实现,包括开出的register和peripheral map都会不同。

STM的IC推广很好,对于其GPIO的了解,大体流程以及基本的概念和其他家的都会是相通的,会大有裨益这款IC的GPIO对所有代理芯海pin用port来归类,PortA,PortB等,每一组port有基本的register:

4个配置寄存器:GPIOx_MODER(配置GPIO模式,输入输出等), GPIOx_OTYPER(输出模式,开漏推挽等), GPIOx_OSPEEDR(输出速度配置), GPIOx_PUPDR(上拉,下拉配置代理芯海);

2个数据寄存器:GPIOx_IDR, GPIOx_ODR(存放Port要输入/输出的数据,是以port为单位的,IDR只读,ODR可读可写);1个set/reset寄存器:GPIOx_BSRR(简单的将对应pin置1或清0,是ODR的位操作形式。

BRR用来set,即置为1BSRR用来reset,代理芯海即置为0);另外:portA和portB有个locking register--GPIOx_LCKR,和2个可选功能寄存器--GPIOx_AFRH, GPIOx_AFRL。

8.1 GPIO的模式GPIO是配置用来输入输出的,但是只能是输入或输出中的某一种模式,如果同时输入又输出,那就乱掉了通过寄存器代理芯海可以将GPIO模式配置为如下:Input floating Input pull-up。

Input-pull-downAnalogOutput open-drain with pull-up or pull-down capabilityOutput push-pull wit h pull-up 代理芯海or pull-down capability

Alternate function push-pull with pull-up or pull-down capabilityAlternate function open-drain with pull-up or pull-down capabi代理芯海lity

这其中关于push-pull, pull-up,pull-down等概念还是比较重要的,可以看下相关电路,在使用GPIO时许多时候都是需要清楚是用推挽,上拉,下拉,开漏等模式的,不然由于设置不对,可能会造成IO工作与预期不符:

如下为GPIO的IO pin的电路结构图:

所有Port都有外部中断代理芯海的功能,中断部分内容这里不详述。8.2 GPIO输入配置配置为输入模式时电路如下

8.3 GPIO输出配置配置为输出模式时电路如下

8.4 GPIO复用模式配置与基本的输入输出没有什么区别,只是在IC内部实际连接的是Alternate function output/input,不再连接到IDR和ODR代理芯海了具体复用到何种periperal IO,得看对应的peripheral的功能。

8.5 GPIO模拟方式配置前面的方式都是数字的方式和外设进行通信,数字方式最终表现在IO pin的输入输出都是0和1,数据通过register来读取或写入,而模拟方式则是将IO pin连接到模拟电路,通过电压、电流的方代理芯海式和外设进行通信了。

其配置电路如下:

对于模拟方式而言,Analog input/output在IC内部会连接上ADC/DAC设备的,GPIO的这种Analog模式大概也只有ADC/DAC主要会用到,因为目前的IC的core处理器都是数字模式工作,不可能直接操作Analog信号的。

8.6 GPIO速率代理芯海配置一点思考GPIO的Speed配置,从code看分为2M, 10M和50M三种,一般选择50M,但GPIO部分的spec并没有对这里的说明感觉这里和RCC配置应当是相关的,在discovery开发板,将HSI作为系统时钟源,配置PLL 12倍频HSI/2,得到48M的SYSCLK,AHB 1倍分频代理芯海,因此HCLK==SYSCLK也为48M,APB 也1倍分频,PCLK==HCLK也为48M。

某GPIO pin时钟源设置为RCC_AHBPeriph_GPIOC,即该GPIO是以HCLK做时钟源,因为每个AHB clock cycle从IO pin采数据到IDR/ODR寄存器,因此其速度应当实际为代理芯海48M。

可配置的GPIO速度2M, 10M, 50M中,50M最接近不过还是得实际验证才行 通过以上的内容,基本对STM32F030的功能、框架等就有了一个全局的了解,接下来就可以使用开发版,或者自己设计的电路板,通过ST提供的驱动包进行开发了。

深圳鼎盛合科技系芯海一级代理商,代代理芯海理芯海高精度ADC芯片,SOC芯片,wifi及蓝牙模块