Darth Nihilus · 1 天前

【灵动Mini-F5375-OB开发板评测】(一)

(一)灵动Mini-F5375-OB开发板开箱及官方介绍

灵动MM32F5370Mini-F5375-OB开发板.jpg

开箱

本次测评的上海灵动微电子股份有限公司推出的灵动Mini-F5375-OB开发板。目前本产品暂未对外公开售卖,因此目前暂不清楚具体的发行价格。
灵动Mini-F5375-OB开发板外包装为开盖牛皮纸盒。盒内仅包含灵动Mini-F5375-OB开发板本体。
关于该开发板的相关技术资料可通过访问极术社区官网(https://aijishu.com/a/1060000...)或上海灵动微电子股份有限公司官网(https://www.mindmotion.com.cn...)获取。

灵动Mini-F5375-OB开发板官方介绍

MM32F5370微控制器官方介绍

MM32F5370框图.jpg
MM32F5370 微控制器搭载了由安谋科技授权的 ARM®v8-M 架构“星辰”STAR-MC1 (兼容 Cortex®-M33)处理器,内置 L1 ICache、DCache,同时具备高性能和低功耗的特点, 最高工作频率可达 180MHz,性能可达 4.02 CoreMark ®/MHz,内置数字信号处理器 (DSP)、浮点运算单元(FPU)和三角函数运算加速单元(CORDIC)辅助算法加速。

  • 512KB Flash,支持 ECC
  • 128KB SRAM,32KB 支持 ECC
  • 3 个 3MSPS 的 12 位 ADC,2 个 12 位的 DAC
  • 3 个模拟比较器,4 个支持 PGA 模式的运算放大器
  • 4 个 16 位超级定时器,8 个 208ps 高精度 PWM 输出,2 个 16 位高级定时器,2 个 16 位和 2 个 32 位通用定时器,2 个 16 位基础定时器, 1 个低功耗定时器,1 个实时时钟(RTC)
  • 1 个 QSPI 接口
  • 2 个 I2C,3 个 SPI / I2S,5 个 USART,1 个低功耗 UART
  • 1 个集成了内部 PHY 的 USB 2.0 全速 Device/Host 控制器
  • 2 个支持 CAN-FD 模式的 FlexCAN 接口
  • 工作电压为:1.8V ~ 5.5V,多个 IO 口支持 5V 容忍
  • 工作温度范围:-40℃ ~ 105℃
  • 封装形式: LQFP48,LQFP64 和 LQFP100

多种应用场合:

  • 变频器
  • 步进电机
  • PLC
  • 微型打印机
  • 电梯主控
  • 扫地机主控
  • 电池管理
  • 家电主控
  • 储能电源
  • 开关电源
    (本部分内容来自于上海灵动微电子股份有限公司官网:https://www.mindmotion.com.cn...

    灵动Mini-F5375-OB开发板官方介绍

    Mini-F5375-OB.png
    目标芯片:MM32F5375G7PV

接口:

  • USB:
    -- USB-C 接口: 评估 MCU 的 USB 模块功能
    -- USB-C 接口: USB 转 UART(串口打印/调试)
  • CAN 接口

板载资源:

  • MM32LINK-OB 仿真器
  • 用户 LED x2
  • 用户按键 x2
  • 复位按键 x1
  • 2Kbit EEPROM
  • 32Mbit Flash
  • 电位器 x2
  • CAN 收发器

供电:

  • Type-C 接口
    (本部分内容来自于上海灵动微电子股份有限公司官网:https://www.mindmotion.com.cn...

    (二)灵动Mini-F5375-OB开发板开发环境搭建

    1.下载MM32 系列 KEIL 设备支持包(官方下载地址:https://www.mindmotion.com.cn...)。

    环境搭建_1.PNG

    2.下载MM32F5370 库函数与例程(官方下载地址:https://www.mindmotion.com.cn...)。

    环境搭建_2.PNG

    3.解压“MM32F5370 库函数与例程:LibSamples_MM32F5370_V0.10.3.zip”文件。

    环境搭建_3.PNG

    4.解压“MM32_KEIL_Pack_2.27.zip”文件。

    环境搭建_4.PNG

    5.在Keil中导入“MindMotion.MM32F5370_DFP.0.4.3.pack”。

    环境搭建_5.PNG

    6.在Keil中打开“LibSamples_MM32F5370_V0.10.3\Samples\LibSamples\”路径下“LibSamples_WorkSpace.uvmpw”工程文件。

    环境搭建_6.PNG

    7.点击编译,若顺利通过编译则开发环境配置完成。

    环境搭建_7.PNG

    (三)灵动Mini-F5375-OB开发板串口输出Hello World

    1.修改main.c中内容如下:

    #include <stdio.h>
    #include "platform.h"
    
    int main(void)
    {
      while (1)
      {
          printf(""Hello World!\r\n");
      }
    }

    串口输出_1.PNG

    2.根据“Mini-F5375-OB (LQFP64) 原理图”文件(官方下载地址:https://www.mindmotion.com.cn...),修改platform.c中内容如下:

    Mini-F5375-OB_SCH-3.jpg

    /***********************************************************************************************************************
    * @brief  Initialize console for printf
    * @note   none
    * @param  Baudrate : UART3 communication baudrate
    * @retval none
    *********************************************************************************************************************/
    void PLATFORM_InitConsole(uint32_t Baudrate)
    {
      GPIO_InitTypeDef GPIO_InitStruct;
      USART_InitTypeDef USART_InitStruct;
    
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    
      USART_StructInit(&USART_InitStruct);
      USART_InitStruct.USART_BaudRate   = Baudrate;
      USART_InitStruct.USART_StopBits   = USART_StopBits_1;
      USART_InitStruct.USART_Parity     = USART_Parity_No;
      USART_InitStruct.USART_Mode       = USART_Mode_Rx | USART_Mode_Tx;
      USART_Init(USART3, &USART_InitStruct);
    
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
    
      GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_7); // TX
    
      GPIO_StructInit(&GPIO_InitStruct);
      GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_10;
      GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
      GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
      GPIO_Init(GPIOC, &GPIO_InitStruct);
    
      USART_Cmd(USART3, ENABLE);
    }
    /***********************************************************************************************************************
    * @brief  redefine fputc function
    * @note   for printf
    * @param  ch
    * @param  f
    * @retval ch
    *********************************************************************************************************************/
    int fputc(int ch, FILE *f)
    {
      USART_SendData(USART3, (uint8_t)ch);
    
      while (RESET == USART_GetFlagStatus(USART3, USART_FLAG_TC))
      {
      }
    
      return (ch);
    }

    串口输出_2.1.PNG
    串口输出_2.2.PNG

    3.重新对代码进行编译。

    串口输出_3.PNG

    4.接入灵动Mini-F5375-OB开发板USB-DBG的USBType-C接口,终端出现新增盘符,即为连接成功。

    串口输出_4.PNG

    5.在Keil中打开魔法棒工具,Debug中选择“CMSIS-DAP ARMv8-M Deugger”。

    串口输出_5.PNG

    6.下载代码至灵动Mini-F5375-OB开发板。

    串口输出_6.PNG

    7.打开串口调试工具,看到循环输出Hello World即为成功。

    串口输出_7.PNG

    (四)灵动Mini-F5375-OB开发板UART输出Hello World

    1.打开“LibSamples_MM32F5370_V0.10.3\Samples\LibSamples\USART\USART_9BitDataCommunication\MDK-ARM”文件夹下“USART_9BitDataCommunication.uvprojx”文件。

    UART输出_1.PNG

    2.修改main.c中内容如下:

#include <stdio.h>
#include "platform.h"
#include "usart_9bitdatacommunication.h"

int main(void)
{
    const char* message = "Hello World";
    uint8_t i = 0;
    USART_Configure(115200);
    while (1)
    {
        for (i = 0; message[i] != '\0'; i++)
        {
            USART_SendData(USART3, message[i]);
            while (RESET == USART_GetFlagStatus(USART3, USART_FLAG_TC));
        }
    }
}

UART输出_2.PNG

3.根据“Mini-F5375-OB (LQFP64) 原理图”文件(官方下载地址:https://www.mindmotion.com.cn...),修改usart_9bitdatacommunication.c中内容如下:

Mini-F5375-OB_SCH-5.jpg
Mini-F5375-OB_SCH-7.jpg

/***********************************************************************************************************************
    @file    usart_9bitdatacommunication.c
    @author  FAE Team
    @date    31-Jul-2024
    @brief   THIS FILE PROVIDES ALL THE SYSTEM FUNCTIONS.
  **********************************************************************************************************************
    @attention

    <h2><center>&copy; Copyright(c) <2023> <MindMotion></center></h2>

      Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
    following conditions are met:
    1. Redistributions of source code must retain the above copyright notice,
       this list of conditions and the following disclaimer.
    2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
       the following disclaimer in the documentation and/or other materials provided with the distribution.
    3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or
       promote products derived from this software without specific prior written permission.

      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *********************************************************************************************************************/

/* Define to prevent recursive inclusion */
#define _USART_9BITDATACOMMUNICATION_C_

/* Files include */
#include <stdio.h>
#include "platform.h"
#include "usart_9bitdatacommunication.h"

/**
  * @addtogroup MM32F5370_LibSamples
  * @{
  */

/**
  * @addtogroup USART
  * @{
  */

/**
  * @addtogroup USART_9BitDataCommunication
  * @{
  */

/* Private typedef ****************************************************************************************************/

/* Private define *****************************************************************************************************/

/* Private macro ******************************************************************************************************/

/* Private variables **************************************************************************************************/

/* Private functions **************************************************************************************************/

/***********************************************************************************************************************
  * @brief
  * @note   none
  * @param  none
  * @retval none
  *********************************************************************************************************************/
void USART_Configure(uint32_t Baudrate)
{
    GPIO_InitTypeDef  GPIO_InitStruct;
    USART_InitTypeDef USART_InitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

    USART_StructInit(&USART_InitStruct);
    USART_InitStruct.USART_BaudRate   = Baudrate;
    USART_InitStruct.USART_WordLength = USART_WordLength_9b;
    USART_InitStruct.USART_StopBits   = USART_StopBits_1;
    USART_InitStruct.USART_Parity     = USART_Parity_No;
    USART_InitStruct.USART_Mode       = USART_Mode_Rx | USART_Mode_Tx;
    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_Init(USART3, &USART_InitStruct);

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

    GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_7);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_10;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOC, &GPIO_InitStruct);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_11;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_FLOATING;
    GPIO_Init(GPIOC, &GPIO_InitStruct);

    NVIC_InitStruct.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStruct);

    USART_ITConfig(USART3, USART_IT_PE, ENABLE);
    USART_ITConfig(USART3, USART_IT_ERR, ENABLE);

    USART_Cmd(USART3, ENABLE);
}

/***********************************************************************************************************************
  * @brief
  * @note   none
  * @param  none
  * @retval none
  *********************************************************************************************************************/
void USART_9BitDataCommunication_Sample(void)
{
    FunctionalState State    = DISABLE;
    FunctionalState WorkMode = DISABLE;
    uint16_t Data = 0;

    printf("\r\nTest %s", __FUNCTION__);

    USART_Configure(115200);

    if (ENABLE == WorkMode)
    {
        while (1)   /* receiver */
        {
            if (SET == USART_GetFlagStatus(USART3, USART_FLAG_RXNE))
            {
                Data = USART_ReceiveData(USART3);

                USART_SendData(USART3, Data);

                while (RESET == USART_GetFlagStatus(USART3, USART_FLAG_TC))
                {
                }
            }
        }
    }
    else
    {
        while (1)   /* transmitter */
        {
            State = (State) ? DISABLE : ENABLE;

            if (ENABLE == State)
            {
                USART_SendData(USART3, Data | 0x0100);
            }
            else
            {
                USART_SendData(USART3, Data & 0x00FF);
            }

            while (RESET == USART_GetFlagStatus(USART3, USART_FLAG_TC))
            {
            }

            Data = (Data + 1) % 256;

            PLATFORM_DelayMS(200);
        }
    }
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/********************************************** (C) Copyright MindMotion **********************************************/

UART输出_3.PNG

4.重新对代码进行编译。

UART输出_4.PNG

5.接入灵动Mini-F5375-OB开发板USB-DBG的USBType-C接口,终端出现新增盘符,即为连接成功。

6.下载代码至灵动Mini-F5375-OB开发板。

UART输出_5.PNG

7.根据“Mini-F5375-OB (LQFP64) 原理图”文件(官方下载地址:https://www.mindmotion.com.cn...),将C10连接烧录器RX,将C11连接烧录器TX。

Mini-F5375-OB_SCH-5.jpg
Mini-F5375-OB_SCH-7.jpg

8.打开串口调试工具,看到循环输出Hello World即为成功。

UART输出_6.PNG

推荐阅读
关注数
0
文章数
1
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息