本帖最后由 犹豫的大三 于 2016-8-2 21:13 编辑
STM32L432xx是STM32L4系列的最新产品,相比STM32L476具有更低的功耗。STM32L432xx是基于Cortex-M4处理器,最高主频可达80MHz。Cortex-M4内核包含一个单精度的浮点单元(FPU),支持ARM所有单精度数据类型和指令,支持完整的DSP指令。此外还有一个内存保护单元(MPU),可以有效地提升应用的安全性。STM32L432xx的片上资源也很丰富,可以满足用户的不同需求。
初见STM32L432
最近拿到该系列STM32L432-Nucleo-32板一块,该开发板和ST传统Nucleo-32系列包装相同。
打开包装后,仅有一快主板和一张使用说明卡片。采用了目前主流智能手机所用的USB接口作为调试和下载接口。和以往ST开发板一样,板上集成了ST-Link调试和下载器,通过一个手机USB线就可以调试和下载了。在卡片的背面有简要的使用说明、支持的系统和开发工具链。
开发板正面是主MCU和外围电路,背面是ST-Link电路。电路布线很紧凑,但并没有给人拥挤的感觉。扩展出的引脚支持ArduinoTM Nano,可以很方面用户DIY。
[size=10.5000pt]
开发板详解
由于ST Nucleo-32系列采用多型号通用设计,和其他所有的Nucleo-32开发板相比,除了主MCU不同,其他完全相同。STM32L432 Nucleo-32MCU不仅UFQFPN32封装,而且支持LQFP32封装。此举大大方便我们进行DIY了,满足了广大工程师的“折腾”的胃口。
STM32L432KC UFQFPN32封装MCU
ArduinoTM Nano接口
USB Micro-B接口
板载ST-Link V2.1,可作为三种设备使用:SWD调试器、大容量存储器、虚拟串口
多种电源供电方式:USB、外部VIN、外部5V、外部3.3V
三个LED,其中一个用户LED
一个复位按键
32.768kHz低速晶振
支持MDK、IAR、基于GCC的其他IDE和Mbed在线编程
主要资源如下图:
[size=10.5000pt]
STM32L432KC片上资源很丰富,下图是他的内部原理框图。
高达256KB的FLASH和64KB的SRAM,以及QSPI接口,方便扩展外部存储
一个高达5Msps的16bit ADC和两个12bit DAC
一个内部运算放大器、两个超低功耗比较器和一个温度传感器
USB、SPI、I2C、UART等各种通讯接口
26个IO以及一个触摸传感器控制器
一个SAI接口
[size=10.5000pt]
上点测试:
用USB mini型接口线和电脑相连。首次和ST开发板连接时会自动安装驱动,如驱动安装失败,可到ST官网下载驱动文件STSW-LINK009手动安装。下载地址:
http://www.st.com/content/st_com/zh/products/embedded-software/development-tool-software/stsw-link009.html
上电后会运行demo程序,用户LED3会以2Hz的频率闪烁。去除GND和D2之间的跳帽,用户LED3以1Hz的频率闪烁。LED2亮说明电源是5V经U3 LDO输出的3.3V,不是直接3.3V给MCU供电的
[size=10.5000pt]
低功耗特性
STM32L432xx具有比STM32L4x6更低的功耗,我们这里根据官方的数据进行对比一下:
| [size=10.5000pt]STM32L432xx | [size=10.5000pt]STM32L4x6 | | | [size=10.5000pt]100uA/Mhz | [size=10.5000pt]Standby with RTC | | | | | | | | | 由此可见,STM32L432xx系列在超低功耗性能上超过了STM32L4x6系列。
[size=10.5000pt]
代码测试
STM32的Nucleo系列支持多种IDE。利用STM32CubeMX可以很方便的配置各个功能模块,并可生成对应的工程文件,比如MDK-ARM V5、MDK-ARM V4、EWARM等等。大家可以到ST官网下载STM32CubeMX,下载地址:
http://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html
安装过程很简单。注意:没有安装JDK的电脑会提示安装缺少JDK,下载安装最新JDK即可。我们写个简单的测试程序,通过一个PIN的电平高低控制LED3的亮灭。
第一步,打开STM32CubeMX
点击“New Project”新建一个STM32CubeMX工程
第二步,选择芯片
选择合适的芯片型号STM32L432KC,点击“确定”后弹出工程界面。芯片的封装和引脚可以很直观的看到。
第三步,配置系统时钟
点击“Clock Configuration”,可以看到STM32L432整个时钟树。STM32L432 Nucleo-32没有外部晶振,只有一个32.768kHz的低速晶振。我们使用16MHz内部高速晶振HSI,通过PLL倍频到80MHz。
第四步,配置GPIO
从原理图上知道PB3控制LED3,PB3要配置成推挽输出。检测引脚选择PA9,PA9要配置成输入。ST-Link是SWD模式,所以还需要将PA4配置成SYS_JTCK-SWCLK,PA13配置成SYS_JTMS-SWDIO。
第五步,生成工程
点击菜单栏的“Project”里的“Generate Code”,弹出“Project Settings”对话框,写入工程名称和工程保存目录。在“Toolchain/IDE”里可以选择要生成的工具链或IDE类型,我们使用keil5编译环境,所以选择MDK-ARM V5。
第六步,增加测试代码
使用MDK-ARM V5.16打开工程,在while循环内添加测试内码。
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == GPIO_PIN_SET)
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
else
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
点击程序后,下载到STM32L432 Nucleo-32开发板里。使用一根杜邦线将PA3与GND相连,LED3灭。
[size=10.5000pt]
将PA3与3.3V相连,LED3点亮。
结尾
STM32L432KC小封装,功耗更低,适合于对空间有严格要求的应用上。利用STM32L432 Nucleo-32开发板可以有效地评估STM32L432KC各功能模块。利用STM32CubeMX可以很方便的生成多种工程,可以大大缩减了开发时间。
[size=10.5000pt]
|