打印
[应用相关]

专注于模拟外设与电机控制——STM32F303RE评测(转自测评版块)

[复制链接]
1343|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
稳稳の幸福|  楼主 | 2016-7-29 20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

STM32F30x是ST公司推出的基于Cortex-M4内核的高性能MCU,主要面向于模拟外设应用和电机控制设备,其拥有大量针对模拟应用和电机控制特有的片上资源和外设。

今天介绍的就是STM32F30x系列的一款开发板——Nucleo F303RE,是ST公司Nucleo-64系列开发板中的一员,在家族中的位置如图所示:


1. 开发板外观


万年不变的白色透明塑料外壳,不知道小伙伴们有没有看腻。

拆开几个特写照


正面是主要元件和插接件


背面没什么东西,就是些焊盘电阻和排针


来个不一样的角度,好像也没什么特别的。

2. 板载资源

看完了外观,我们再来看内在,看看开发板提供了那些资源:


STN32F303RE LQFP64封装MCU

Arduino Uno R3 接口

ST Morpho接口

板载ST-LINK V2-1:SWD调试器,大容量存储器,虚拟串口

多种电源:USB,外部VIN,外部5V和3.3V

三个LED,其中一个用户LED

用户按键,复位按键

支持MDK,IAR和基于GCC的其他类等多种编程IDE和Mbed在线编程

接下来就是真正的猪脚啦,开发板的核心,主控MCU:


3. 芯片特性

STM32F303RET6,LQFP 64引脚封装

ARM CortexM4内核,带浮点运算单元和DSP指令

硬件除法器,MPU

512KB flash + 80KB SRAM

14个定时器

CAN,I2C,USART,SPI等通信接口

看到这里,好像也没什么特别的,为什么说是面向模拟应用和电机控制的呢?接着看下面的外设资源:

4 个ADC,最多达40个通道,这是不是很牛A了,一般就1个最多两个,16通道

2 个DAC,其他系列都是一个或者没有

7 个超快速轨到轨模拟比较器,这个就更加牛C哄哄了

4 个可编程增益运算放大器,我已经无法用语言形容了

最多24 个通道可支持触摸按键和旋转触摸传感器

最多3个高级定时器以用于电机控制(100引脚以上,64引脚2个)

看了以上功能,你还会怀疑题目的正确性吗?以上资源配合FPU浮点运算和DSP指令的高性能运算处理能力,对于模拟应用,这一系列的MCU可以说是再适合不过了。

说了那么多,一切都是空谈,下面我们就来测试一下。

4. 例程测试

首先,按照上一篇**“STM32F030——32位MCU的低价新宠”中讲述的方法,安装好STM32CUBEMX和STM32CUBEF3,安装好后是这样子的,各个文件夹的内容如图所示


先看一个简单的例子,选择喜欢的IDE打开STM32Cube_FW_F3_V1.6.0\Projects\STM32F303RE-Nucleo\Examples\GPIO\GPIO_EXTI下的工程,


可以看到这个例程首先初始化HAL库,接着初始化了LED和系统时钟,最后配置EXTI外部中断,等待中断到来,具体看看中断:


开发板上按键所接的引脚被配置为上升沿触发中断模式,配置了中断优先级,最后使能中断。void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)是中断回调函数,当中断发生后会调用该函数,函数里做的就是反转用户LED。

所以整个例程实现的功能就是:用户按一下按键,LED就翻转一次(如灭变亮),再按一次就再翻转一次(如亮变灭)。

编译工程,下载实际测试一下:


下载完之后记得按一下黑色复位按键,程序就开始运行,结果与前面分析的一样,按一下按键LED就亮,再按一次灭,如此循环!


下面再看一个高级一点的例子,定时器产生PWM波形。PWM波常用于电机控制,LED调光灯场合。


沙发
稳稳の幸福|  楼主 | 2016-7-29 20:05 | 只看该作者

打开STM32Cube_FW_F3_V1.6.0\Projects\STM32F303RE-Nucleo\Examples\TIM\TIM_PWMOutput下的工程,


从程序注释中我们可以知道:

本例使用TIM3的通道1,2,3,4产生4路PWM波形,频率都是36kHz,占空比分别为 50%,37.5%,25,%,12.5%


4路PWM分别从PC端口的6,7,8,9引脚输出,待会运行程序我们将使用逻辑分析仪观察波形。

程序中还是首先初始化HAL库,接着配置系统时钟和初始化LED,计算定时器预分频系数,

接下来初始化定时器,配置预分频系数,周期,技术模式等参数。

然后是分别配置了每一个通道的参数,设置不同的Pulse脉宽,从而实现不同的占空比。

最后分别打开每一个通道,使能PWM输出,运行程序就能在对应的引脚检测到PWM波形。下面按前面的步骤编译和下载进开发板,运行程序:


用一个简易逻辑分析仪(某宝的便宜货,不要在意细节)的通道0,1,2,3分别接到PC6,7,8,9引脚,检测定时器TIM3通道1,2,3,4的波形输出,如图所示:


TIM3_CH1:

频率 36.036 kHz

占空比 49.70%


TIM3_CH2:

频率 36.036 kHz

占空比 37.387%


TIM3_CH3:

频率 36.036 kHz

占空比 24.775%


TIM3_CH4:

频率 36.036 kHz

占空比 12.312%

从数据可以看出,实测数据与理论设计基本吻合,当然由于仪器精度等原因,会存在一定的误差。

从这个实验可以知道,定时器功能非常强大,PWM使用也很方便,当然,这里用的TIM3是通用定时器而不是高级定时器,前面提到过,STM32F303系列最多有多大3个高级定时器,其功能之强大相信用过的工程师绝对会赞不绝口。

综合前面的介绍和实验,相信读到这里的你已经对STM32F303RE Nucleo这块开发板和芯片有了一定的了解,希望本文对读者选择学习或者原型开发的工具有一定帮助。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

187

主题

3282

帖子

8

粉丝