灵动微电子

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易于实现等显著优点,被诸多电子设备包括消费电子、家用电器、安防器材等广泛采用,如智能手环、机顶盒、3D眼镜、智能扫地机、空调、电扇、通道闸、红外栅栏等,近年来也越来越多的应用到计算机和手机系统中。

灵动股份推出的MM32L0130系列MCU具有片上IRM红外调制器,该模块使用片上的定时器和串口,实现数据的 FSK/ASK 调制,以满足红外发码的需求。

1、IRM介绍

1.1 IRM功能框图

“使用MM32L0130

1.2 IRM主要特征

● 支持 APB 接口

● 两个调制信号源,分别为通道 1 和通道 2

● 通道 1 和通道 2 调制信号源均可选,来源包含

1)恒 0

2)恒 1

3)TIM3 的 OC1 通道

4)TIM4 的 OC1 通道

5)TIM16 的 OC1 通道

6)TIM17 的 OC1 通道

● 基带信号源可选,来源包含

1)IRM 数据寄存器

2)UART1_TX

3)UART2_TX

4)LPUART_TX

● 可实现数据的 ASK、FSK 调制,调制方式可选

● 输出信号极性可选

2、功能概述

2.1 波形产生单元

调制信号选择功能:两个通道, channel_1 和 channel_2,通过寄存器配置可选择通道输入为恒 0、恒1、 TIM3 的 OC1 通道、 TIM4 的 OC1 通道、 TIM16 的 OC1 通道、 TIM17 的 OC1 通道。

基带信号选择功能:被发送的红外信号对应源数据,可以通过寄存器配置选择源为 IRM_DR、 UART1_TX、UART2_TX、 LPUART1_TX。

调试方式:可选 FSK 或 ASK。

极性可选,输出可为正常或反相波形。

2.2 调制功能说明

2.21 FSK 调制

用不同的频率来表示不同的符号。本模块为二进制频移键控(2FSK)。信号可以看成是频载为 f1 和 f2的两个振幅键控信号的合成。该功能模式下,调制信号源为频率为 f1、 f2 的两个方波:被调制信号为 0,则对应输出 f1;被调制信号为 1 则对应输出 f2。
波形如下:

“FSK
FSK 调制波形

2.22 ASK 调制

用不同的幅度来表示不同的符号。本模块为 OOK(On-Off Keying)调制,是 ASK 调制的一个特例,把一个幅度取为 0,另一个幅度为非 0,就是 OOK。又名 2ASK(二进制振幅键控)。该功能模式下,通道 1 信号源应为恒 0,通道 2 信号源应该频率为 f2 的方波:被调制信号为 0,则对应输出 0;被调制信号为 1 则对应输出 f2。
波形如下:

“ASK
ASK 调制波形

3、实验

本次实验使用MM32L0130片上IRM驱动红外发射管实现红外发码。硬件使用灵动股份设计的EVB-L0136开发板,红外模块原理图如下:

“使用MM32L0130

原理图中PA9连接D1(红外发射管)、PA10连接D2(红外接收头),红外发射电路使用T1(N-MOS管)控制红外发射管的导通或截至,在导通的时候,红外发射管会发射出红外光,反之,不会发射出红外光。要使两者通信成功,收/发红外波长与载波频率需一致,在这里波长就是940nm,载波频率就是38KHz。当红外接收头接收到红外载波信号时,其OUT引脚输出低电平,反之,OUT引脚输出高电平。

3.1 实验1:实现数据FSK调制

程序中配置PA9作为IRM红外调制器的发送引脚,配置调制信号通道1选择TIM3_OC1,调制信号通道2选择TIM4_OC1,基带信号源选择UART1_TX信号,调制方式选择FSK调制,以实现红外发码。主要代码如下:

3.11 IRM配置

void IRM_FSK_Config(void)
{
    IRM_InitTypeDef IRM_InitStruct;

    RCC_APB1PeriphClockCmd(RCC_APB1ENR_IRM, ENABLE);
    IRM_FSK_Clock_Init(TIM3, TIM4);
    IRM_StructInit(&IRM_InitStruct);
    IRM_SetIRMData(0);
    IRM_InitStruct.IRM_Polarity = IRM_Polarity_Normal;
    IRM_InitStruct.IRM_Modulation = IRM_Modulation_FSK;
    IRM_InitStruct.IRM_DataSelectSource = IRM_DataSource_UART1_TX;
    IRM_InitStruct.IRM_Channel1ClockSource = IRM_Channel1ClockSource_TIM3OC1;
    IRM_InitStruct.IRM_Channel2ClockSource = IRM_Channel2ClockSource_TIM4OC1;

    IRM_Init(&IRM_InitStruct);
    UART1_NVIC_Init(600);

    IRM_StartCmd(ENABLE);
}

3.12 调制信号配置

配置TIM3输出PWM,频率为38KHZ(和载波频率一致),占空比为1/2

配置TIM4输出PWM,频率为3.8KHZ(一个非载波频率),占空比为1/2

void IRM_FSK_Clock_Init(TIM_TypeDef* chan1_tim, TIM_TypeDef* chan2_tim)
{
    u32 ui_tim_value;

    ui_tim_value = (u32)((RCC_GetSysClockFreq()) / IRM_FREQUENCE);

    TIM_Init(chan1_tim, (ui_tim_value) - 1, 0);
    TIM_Init(chan2_tim, (ui_tim_value) * 10 - 1, 0);

}

定义IRM_FREQUENCE为38000

#define IRM_FREQUENCE                   38000

3.13 配置UART1 RX中断

void UART1_NVIC_Init(u32 baudrate)
{
    UART_InitTypeDef UART_InitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;

    RCC_UART_ClockCmd(UART1, ENABLE);

    NVIC_InitStruct.NVIC_IRQChannel = UART1_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPriority = 3;
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStruct);

    UART_StructInit(&UART_InitStruct);
    UART_InitStruct.BaudRate = baudrate;
    UART_InitStruct.WordLength = UART_WordLength_8b;
    UART_InitStruct.StopBits = UART_StopBits_1;
    UART_InitStruct.Parity = UART_Parity_No;
    UART_InitStruct.HWFlowControl = UART_HWFlowControl_None;
    UART_InitStruct.Mode = UART_Mode_Rx | UART_Mode_Tx;

    UART_Init(UART1, &UART_InitStruct);
    UART_ITConfig(UART1, UART_IT_RXIEN, ENABLE);
    UART_Cmd(UART1, ENABLE);

    UART1RX_GPIO_Init();
}

3.14 IRM收发测试

void IRM_Transmit_Test(void)
{

    u16 i, getcount;
    u8 irm_string[] = {0xFF, 0xFF, 0x55, 0xAA, 0xF0, 0x0F, 0x80, 0x01};
    u8 getbyte;
    IRM_Initialize();
    while(1) {
        getcount = 0;
        for(i = 0; i < sizeof(irm_string); i++) {
            Output_Byte(UART1, irm_string[i]);
            if(SUCCESS == UART1_CheckRxdByte(&getbyte, 10000)) {
                if(getbyte == irm_string[i]) {
                    getcount++;
                }
            }
            delay_x_cycle(1000);
        }
        if(getcount == sizeof(irm_string)) {
            __NOP();
        }
        else {
            __NOP();
        }
    }
}

定义数组irm_string[]存放需要IRM调制的数据,IRM对数据进行FSK调制后,通过IRM_TX引脚发送,控制MOS管驱动红外发射管以发射红外光,红外接收头对红外光进行解码后,由UART1_RX引脚接收,将收到的数据与数组irm_string[]中的数据进行比对,看收/发数据是否一致,并进行统计。

FSK模式下,调制信号源为频率为38K、3.8K的两个方波:被调制信号为0时,则对应输出38KHZ;被调制信号为1时,则对应输出3.8KHZ,逻辑分析仪获取一段数据如下:

“使用MM32L0130

通道4为IRM_TX发出的调制信号。

通道5是UART1_RX接收到的数据,符合红外接收头特性。

观察串口调试助手打印数据,和irm_string[]中的数据一致。

“使用MM32L0130

3.2 实验2:实现数据ASK调制

程序中配置PA9作为IRM红外调制器的发送引脚,配置调制信号通道1为恒1,调制信号通道2选择TIM4_OC1,基带信号源选择UART1_TX信号,调制方式选择ASK调制,以实现红外发码。

该实验与前面实验1相比,只是选择IRM的另一种调制模式,代码只需在实验1的基础上改动即可,主要代码如下:

3.21 IRM配置

void IRM_ASK_Config(void)
{
    IRM_InitTypeDef IRM_InitStruct;

    RCC_APB1PeriphClockCmd(RCC_APB1ENR_IRM, ENABLE);
    IRM_ASK_Clock_Init(TIM4);
    IRM_StructInit(&IRM_InitStruct);
    IRM_SetIRMData(0);
    IRM_InitStruct.IRM_Polarity = IRM_Polarity_Normal;
    IRM_InitStruct.IRM_Modulation = IRM_Modulation_ASK_PSK;
    IRM_InitStruct.IRM_DataSelectSource = IRM_DataSource_UART1_TX;
    IRM_InitStruct.IRM_Channel1ClockSource = IRM_Channel1ClockSource_KeepHigh;              
    IRM_InitStruct.IRM_Channel2ClockSource = IRM_Channel2ClockSource_TIM4OC1;

    IRM_Init(&IRM_InitStruct);
    UART1_NVIC_Init(600);

    IRM_StartCmd(ENABLE);
}

3.22 调制信号配置

配置TIM4输出PWM,频率为38KHZ(和载波频率一致),占空比为1/2

void IRM_FSK_Clock_Init(TIM_TypeDef* chan1_tim, TIM_TypeDef* chan2_tim)
{
    u32 ui_tim_value;
    ui_tim_value = (u32)((RCC_GetSysClockFreq()) / IRM_FREQUENCE);
    TIM_Init(chan1_tim, (ui_tim_value) - 1, 0);
}

定义IRM_FREQUENCE为38000

#define IRM_FREQUENCE                   38000 

其余代码同实验1,下载运行。

ASK模式下,被调制信号为1时,则对应输出38KHZ;被调制信号为0时,则对应输出0,截取逻辑分析仪的一段数据分析:

“使用MM32L0130

通道4为IRM_TX发出的调制信号。

通道5是UART1_RX接收到的数据,符合红外接收头特性。

观察串口调试助手打印数据,和irm_string[]中的数据一致。

“使用MM32L0130

实验简单演示了使用MM32L0130片上IRM模块实现红外发码,并判断收发数据的一致性。IRM模块使用片上的定时器和串口,实现数据的 FSK/ASK 调制,满足红外发码的需求。

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 65

MM32F5270 系列控制器支持 I2S 总线接口,本章节在接下来会对 MM32F5270 I2S进行介绍,并使用 MM32F5270 和 CS4344 芯片进行 I2S 通信来演示播放一段声音。

I2S 简介

I2S ( Inter—IC Sound ) 总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。在飞利浦公司的 I2S 标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。

在 MM32F5270 中,SPI 与 I2S 共用引脚。在 I2S 的描述中,支持半双工通信,也支持全双工模式。I2S 与 SPI 区别在于,I2S 主模式的控制逻辑使用独立的时钟分频处理单元。在半双工模式下,可使用 MCK 引脚输出驱动时钟,用于驱动外部音频组件。在全双工模式下,为了能同时进行数据的收发,MCK 驱动时钟只能从专用的 MCK 功能引脚输出。I2S 的功能框图如图 1 所示,包括时钟单元,寄存器控制单元,主从模式控制单元等。

“图1.
图1. I2S 功能框图

MM32F5270 中 I2S 主要特征

● 支持半双工通信(仅发射机或接收机)和全双工通信(SD,extSD 的数据方向根据主/从模式配置决定)两种通信方式

● 9 位可编程线性预分频器,以达到精确的音频采样频率( 8KHz 到 192KHz)

● 数据帧格式可以是 16 位、 24 位或 32 位

● 数据包帧固定为 16 位(16 位有效数据)或 32 位(16 位、 24 位、 32 位有效数据)

● 可编程时钟极性(稳定状态)

● 发射模式下的下溢标志(仅从机),接收模式下的上溢标志(主和从机)和接收/发射模式下的帧错误标志(仅从机)

● 用于传输和接收的 32 位寄存器为两个声道分时复用

● 支持 I2S 协议

▶ 飞利浦标准

▶ MSB 对齐标准(左对齐)

▶ LSB 对齐标准(右对齐)

▶ PCM 标准(在 16 位信道帧上具有短帧和长帧同步或扩展到 32 位信道帧的 16 位数据帧)

● 数据方向始终是 MSB 优先

● DMA 传输能力

● 可配置输出 MCLK 来驱动外部音频组件,比率固定在 256× FS(其中 FS 为音频采样频率)

I2S 信号接口

I2S 和 SPI 共用三个公共管脚:

● 串行时钟 CK

映射在 SCK 引脚上,也叫位时钟 BCLK,是主模式下的串行时钟输出以及从机模式下的串行时钟输入。SCLK 频率 = 2 x 采样频率 x 采样位数

● 帧时钟 WS

映射在 NSS 引脚上,是主模式下的串行时钟输出以及从机模式下的串行时钟输入。用于切换左右声道,LRCK 频率 = 采样频率

● 串行数据 SD

映射在 MOSI 管脚上,二进制补码表示的音频数据,用于发送或接收两次多路数据通道(仅在半双工模式下)。

● 当某些外部设备需要主时钟输入时,可以使用一个附加的管脚输出时钟到音频设备

● 主时钟 MCLK

映射在 MISO 引脚或专用 MCK 引脚上,当 I2S 配置为主模式时使用此时钟。MCLK 频率 = 256 x 采样频率 Fs

● I2S 引脚信号如图 2 所示。

“图2.
图2. I2S 引脚信号

数据格式

三线总线处理音频数据,必须经过分时复用两个声道:右声道和左声道。因为只有一个 32 位寄存器用于传输或接收,所以软件应依次配置寄存器 TXREG 为各声道的数据,或依次读取寄存器 RXREG 为各声道的数据。按照 I2S 协议,总是先发送左声道,然后发送右声道。

数据格式可以采用以下格式进行发送:

● 16 位数据打包在 16 位帧中

● 16 位数据打包在 32 位帧中

● 24 位数据打包在 32 位帧中

● 32 位数据打包在 32 位帧中

当使用 32 位帧上发送 16 位数据时,前 16 位(MSB)是有效的位,16 位 LSB 制为 0,无需任何软件操作,通过硬件实现,其他格式相似。

通信标准

I2S 接口支持四种音频标准,通过配置寄存器 SPI_I2S_I2SCFGR 中的 I2SSTD[1:0]、PCMSYNC 位进行切换;数据格式则通过配置 DATLEN[1:0]、CHLEN 来进行选择。对于所有通信标准及数据格式,总是先发送最高位(MSB 优先)。

● 飞利浦标准

对于飞利浦标准,WS 信号用于指示正在传输的声道。发射器在 CK 的下降沿锁存数据,接收器并在 CK 的上升读取数据。WS 信号也在 CK 的下降沿被锁定。对于这种标准 I2S 格式的信号,无论有多少位有效数据,数据的最高位总是出现在 WS 变化(也就是一帧开始)后的第 2 个 CK 脉冲处,如图 3 所示。

“图3.
图3. 飞利浦标准示意图

● MSB 对齐标准

对于 MSB 对齐标准,第一个数据在 WS 变化后的第一个沿有效,如图 4 所示。

“图4.
图4. MSB 对齐标准示意图

● LSB 对齐标准

对于 LSB 对齐标准,每个数据包帧的最低有效位总(LSB 位)是出现在 WS 变化前的 1 个 CK 脉冲周期处,如图 5 所示。

“图5.
图5. LSB 对齐标准示意图

● PCM 标准

对于 PCM 标准,不需要使用声道信息。PCM 有两个模式:短帧模式和长帧模式,通过配置SPI\_I2S\_I2SCFGR 寄存器的 PCMSYNC 位进行切换。在 PCM 模式下,输出信号(WS, SD)在 CK 信号的上升沿进行采样。输入信号(WS, SD)在 CK 下降沿被捕获。注意在主模式下, CK 和 WS 被配置为输出,如图 6 所示。

“图6.
图6. PCM 对齐标准示意图

I2S 配置

I2S 的配置主要包括主从模式选择,时钟极性,全双工半双工模式选择,采样频率和通信标准的配置,从而进行数据传输。

主模式

I2S 功能的主模式下,选择全双工工作时,SD 引脚作为主机发送接口,extSD 作为主机接收接口,SCK 和 WS作为主机的输出信号,同时 MCK 向外部提供可选的驱动时钟(配置 SPI_I2S_I2SCFGR.MCKOE 位为 ‘1’ 使能 MCK 输出),如图 7 所示。

“图7.
图7. I2S 主模式全双工通信

基于 MM32F5270 的声音播放实验

CS4344 芯片是实现本次实验功能的重要器件之一。CS4344 是一种立体声音频数模转换器 (DAC) ,可使用单个 +3.3 V 或 +5 V 电源,仅需要最小的支持电路。该系列线性模拟低通滤波器和自动速度模式检测,当自动选择 2 kHz 和 200 kHz 之间的采样率,使用采样率和主时钟速率方法。

本实验的基本原理是 MM32F3270 读取正弦波采样计算出的左右声道的数组数据,通过 I2S 接口将 PCM 信号传输给 CS4344,再经过 TS4871(音频功率放大器)连接到耳机接口,可以接入耳机等音频播放装置。

硬件设计

如图 8-9 是 PLUS-F5270 的 I2S 电路部分,完整原理图可以通过官网下载。其中,引脚信号对应分别为:

▶ I2S2_SD 对应于引脚 E6

▶ I2S2_CK 对应于引脚 D3

▶ I2S2_WS 对应于引脚 E4

▶ I2S2_MCK 对应于引脚 E5

“图8.
图8. I2S 电路图(1)

“图9.
图9. I2S 电路图(2)

GPIO 初始化 BOARD_InitPins()

配置 I2S 引脚,I2S_CK 为 PD3 引脚,I2S_SD 为 PE6 引脚,I2S_WS 为 PE4 引脚,I2S_MCK 为 PE5 引脚,复用通道为 AF5 。

void BOARD_InitPins(void)
{
    /* PB7 - UART1_TX. */
    GPIO_Init_Type gpio_init;
    gpio_init.Pins  = GPIO_PIN_6;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_PushPull
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_7);

    /* PB6 - UART1_RX. */
    gpio_init.Pins  = GPIO_PIN_7;
    gpio_init.PinMode  = GPIO_PinMode_In_Floating; //GPIO_PinMode_In_Floating
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_7);

    /* PD3 - I2S_CK. */
    gpio_init.Pins  = GPIO_PIN_3;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_In_PushPull
    gpio_init.Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOD, &gpio_init);
    GPIO_PinAFConf(GPIOD, gpio_init.Pins, GPIO_AF_5);

    /* PE6 - I2S_SD. */
    gpio_init.Pins  = GPIO_PIN_6;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_In_PushPull
    gpio_init.Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOE, &gpio_init);
    GPIO_PinAFConf(GPIOE, gpio_init.Pins, GPIO_AF_5);

    /* PE4 - I2S_WS. */
    gpio_init.Pins  = GPIO_PIN_4;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_In_PushPull
    gpio_init.Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOE, &gpio_init);
    GPIO_PinAFConf(GPIOE, gpio_init.Pins, GPIO_AF_5);

    /* PE5 - I2S_MCK. */
    gpio_init.Pins  = GPIO_PIN_5;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_In_PushPull
    gpio_init.Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOE, &gpio_init);
    GPIO_PinAFConf(GPIOE, gpio_init.Pins, GPIO_AF_5);
}

I2S 配置初始化 app_i2s_master_init()

初始化 I2S,配置时钟频率、采样率、数据长度、通信协议、传输模式及是否使能 MCLK 。

void app_i2s_master_init(void)
{
    /* setup I2S master module. */
    I2S_Master_Init_Type i2s_master_init;

    i2s_master_init.ClockFreqHz  = BOARD_I2S_FREQ;
    i2s_master_init.SampleRate   = BOARD_I2S_SAMPLE_RATE;
    i2s_master_init.DataWidth    = BOARD_I2S_DATA_WIDTH;
    i2s_master_init.Protocol     = BOARD_I2S_PROTOCOL;
    i2s_master_init.EnableMCLK   = true;
    i2s_master_init.Polarity     = BOARD_I2S_CPOL;
    i2s_master_init.XferMode     = I2S_XferMode_TxOnly;

    I2S_InitMaster(BOARD_I2S_PORT, &i2s_master_init);

    /* enable I2S. */
    I2S_Enable(BOARD_I2S_PORT, true);
}

● Protocol

通信标准格式选择,可选 I2S Philips 标准、左对齐标准、右对齐标准、 PCM 短帧标准或 PCM 长帧标准,它设定 SPI\_I2S\_I2SCFGR 寄存器 I2SSTD位和 PCMSYNC位的值。一般设置为 I2S Philips 标准即可。

● DataWidth

数据格式选择,设定有效数据长度和帧长度,可选标准 16bit 格式、扩展 16bit( 32bit 帧长度) 格式、 24bit 格式和 32bit 格式,它设定 SPI\_I2SCFGR 寄存器 DATLEN 位和CHLEN 位的值。对应 16bit 数据长度可选 16bit 或 32bit 帧长度,其他都是 32bit 帧长度。

● EnableMCLK

主时钟输出使能控制,可选使能输出或禁止输出,它设定 SPI_I2SPR 寄存器 MCKOE 位的值。为提高系统性能一般使能主时钟输出。

● SampleRate

采样频率设置,标准库提供采样采样频率选择,分别为 4KHz、8kHz、 11kHz、12KHz、16kHz、22kHz、32kHz、44kHz、48kHz、96kHz、192kHz 以及默认 2Hz,它设定 SPI\_I2S\_SPBRG 寄存器的值。

● Polarity

空闲状态的 CK 线电平,可选高电平或低电平,它设定 SPI\_I2S\_CCTL 寄存器 CPOL位的值。一般设置为低电平即可。

左右声道数据

采样函数 f (t) = A *sin( B*t ) , t 为采样时间,单位: s。采样位宽为 16bit,采样频率为 8 khz,系数 A 为10000,B 为2000π。

/* i2s left channel xfer data. */
const int16_t sound_buf_left[SOUND_BUF_SIZE] =
{
    0, 3535, 5000, 3535, 0, -3535, -5000, -3535,
    0, 3535, 5000, 3535, 0, -3535, -5000, -3535,
};

/* i2s right channel xfer data. */
const int16_t sound_buf_right[SOUND_BUF_SIZE] =
{
    0,  3827,  7071,  9238,  10000,  9238,  7071,  3827,
    0, -3827, -7071, -9238, -10000, -9238, -7071, -3827
};

左右声道数据传输

/* put data into left channel. */
void app_i2s_put_data_left(void)
{
    I2S_PutData(BOARD_I2S_PORT, (uint32_t)sound_buf_left[sound_buf_index_left]);
    sound_buf_index_left++;
    if (sound_buf_index_left >= SOUND_BUF_SIZE)
    {
        sound_buf_index_left = 0;
    }
}

/* put data into right channel. */
void app_i2s_put_data_right(void)
{
    I2S_PutData(BOARD_I2S_PORT, (uint32_t)sound_buf_right[sound_buf_index_right]);
    sound_buf_index_right++;
    if (sound_buf_index_right >= SOUND_BUF_SIZE)
    {
        sound_buf_index_right = 0;
    }
}

main() 函数

main() 函数结合上述操作,串口打印 "i2s_master_basic" ,初始化 I2S 后,将发送数组数据到左右声道缓冲区,进行声音播放。

int main(void)
{
    BOARD_Init();

    printf("i2s_master_basic.\r\n");

    app_i2s_master_init();

    while (1)
    {
        while(0u != (I2S_GetStatus(BOARD_I2S_PORT) & SPI_I2S_CSTAT_TXFULL_MASK) )
        {}

        app_i2s_put_data_left(); /* sending left channel data. */

        while(0u != (I2S_GetStatus(BOARD_I2S_PORT) & SPI_I2S_CSTAT_TXFULL_MASK) )
        {}
        app_i2s_put_data_right(); /* sending right channel data. */
    }
}

实验演示

本实验以搭载 MM32F5277E9PV 的 PLUS-F5270 开发板为平台,其扬声器将会播放左声道数据,演示视频如下:

演示1. 播放左声道数据

“

音响数据的采集、处理和传输是多媒体技术的重要组成部分。众多的数字音频系统已经进入消费市场,例如数字音频录音带、数字声音处理器。对于设备和生产厂家来说,标准化的信息传输结构可以提高系统的适应性。

本文介绍了 MM32F5270 中通过 I2S 和 CS4344 芯片进行通信来演示播放一段声音,后续将进行 MP3 的播放,未完待续!

来源:瑞萨MCU小百科
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 337

本文将介绍在使用 MM32F0140 系列 MCU 实现 UDS Bootloader 过程中涉及到的 FlexCAN、UDS 和 Bootloader 等相关基本概念。

MM32F0140 简介

MM32F0140 使用高性能的 Arm® Cortex-M0 内核的 32 位微控制器,最高工作频率可达 72MHz,内置 64KB Flash 和 8KB SRAM,有丰富的增强型 I/O 端口和包括 FlexCAN 在内等多种外设,适用于汽车诊断仪,后装汽车协控制器和消防监控等多种应用场合。

“图
图 1 MM32F1040 简介

什么是 FlexCAN?

CAN 是控制器域网 (Controller Area Network, CAN) 的简称,是一种功能丰富的车用总线标准,被设计用于在不需要主机(Host)的情况下,允许网络上的单芯片和仪器相互通信。是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发了,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。FlexCAN 是 CAN 协议的一个高完成度版本。

MM32F0140 系列 MCU 内嵌的 FlexCAN,符合 ISO 11898-1 标准,支持 CAN 2.0B 版本协议,位速率高达 1 Mbps,具有非常灵活的用于传输和接收的邮箱系统,可以接收和发送 11 位标识符的标准帧,也可以接收和发送 29 位标识符的扩展帧,主要被设计用作车载串行总线,可满足实时处理、车辆在电磁干扰环境下的可靠操作、成本效益、带宽等要求。

什么是 UDS?

UDS(Unified Diagnostic Services,统一诊断服务)是一种用于汽车电子控制器 ECU (Electronic Control Units) 环境下的一种诊断通信协议,可实现诊断、固件更新、日常测试等功能,在 ISO 14229 中规定了其实现标准。

在本实例中,UDS 通信是在客户端-服务端关系中执行的。客户端是上位机下载软件运行于 PC 机,服务端是 MM32F0140 系列 MCU。例如,将 CAN 总线接口连接到 MCU,并将 UDS 请求发送到 MCU。当 MCU 支持 UDS 服务时,它将根据客户端发出的请求做出相应的响应。

为什么用 Bootloader?

对于 ECU 而言,如果程序内置有基于FlexCAN Bootloader,则每次更新 ECU 的固件可不必再使用烧录器进行烧录,而可直接通过 CAN 总线来更新程序,而且随着汽车智能化的普及,甚至可以对 ECU 进行远程升级。有无 Bootloader 功能程序结构对比如图 2 所示:

“图
图 2 程序结构对比框图

为什么要基于 UDS?

为了规范 Bootloader 的全过程。因 UDS 在设计时考虑了 Bootloader 的需求,并为 Bootloader 提供了相关服务以供使用,故主机厂普遍会要求在 UDS 规范的基础上完成 Bootloader 功能。

使用到哪些 UDS 服务?

● 在 Bootloader 中,使用到 UDS 的 $10、$11、$27 和 $3E 基础诊断服务,$22、$2E 读写 DID 服务,$31、$34、$36 和 $37 固件数据传输相关服务。

● 在 APP 中,使用到 UDS 的 $85 和 $28 服务,保证暂停 CAN 正常通信,暂停记录 DTC,让被升级设备升级。

UDS 提供的服务概览如图 3 所示:

“图
图 3 UDS 服务概览

CAN、UDS 和 OSI 模型之间的关系

为了更好的理解 UDS, 让我们了解一下 CAN 总线、UDS 和 OSI 模型之间的关系。

CAN 对应于 OSI 模型中的数据链路层和物理层描述(根据 ISO 11898)。

与 CAN 相比, UDS (ISO 14229) 是一种 “更高层协议”, 在 OSI 模型中使用到会话层和应用层,如下图 4 所示:

“图
图 4 UDS 与 OSI 模型对应图

UDS 的消息结构

PDU

Network_Protocol Data Unit, 网络层协议数据单元

PDU 是用于建立对等实体间的通信,是一组信息和数据的集合,表示了发送发和接收方对等实体之间传递的信息和数据。由地址信息(CAN ID)、协议控制信息(PCI) 和数据构成。

图 5 为 UDS 消息结构示意图,图 6 为 UDS 消极响应示意图。

“图
图 5 UDS 消息结构

“图
图 6 UDS 消极响应示意

PCI

Protocol Control Information,协议控制信息

PCI 字段本身与 UDS 请求本身没有关系,但是对于在 CAN 总线上发出的诊断 UDS 请求是必需的。PCI 字段可以长达 1 ~ 3 字节,并且包含与传输不适合单个 CAN 帧的消息有关的信息。

SID

Service ID,服务标识符

当希望使用特定的 UDS 服务时,UDS 请求消息应该在数据有效负载中包含 UDS 服务标识符 (SID)。标识符分为请求 SID 和响应 SID。

SFB

Sub Function Byte,子函数字节

在一些 UDS 请求帧中使用,在一些 UDS 服务中,如 0x22,子函数字节没有使用。一般来说,当一个请求被发送到 ECU 时,ECU 可以做出正向或负向的响应。在响应为正向的情况下,测试人员可能想要抑制响应(因为它可能是不相关的)。这是通过在子函数字节中将第 1 位设置为 1 来完成的。负向的反应是无法被抑制的。剩下的7位可以用来定义最多 128 个子函数值。例如,当通过 SID 0x19(读取诊断信息)读取 DTC 信息时,子函数字节可用于控制报告类型。

DID

Data Identifier,数据标识符

在大多数 UDS 请求服务中,各种类型的请求数据参数用于提供 SID 和可选子函数字节以外的请求进一步配置。

ISO-TP 标准

ECU 固件更新通常涉及大量有效载荷的通信,而 ISO-TP 标准(ISO 15765 )就是为了解决基于 CAN 的车辆诊断的大量有效载荷问题而提出。该标准指定了基于CAN 的车辆网络传输协议和网络层服务,最常见的用例就有 UDS (ISO 14229-1)。

ISO-TP 标准概述了如何通过分段、流量控制和重组来传输高达 4096 字节的 CAN 数据有效载荷。ISO-TP 定义了用于通信的 CAN 帧,如下图 7 所示。

“图
图 7 ISO-TP 帧类型

通过使用 ISO-TP 标准将 UDS 的消息结构 PDU 分为了四种类型:

SF (Single Frame, 单帧)

描述单帧传输。

FF (First Frame, 首帧)

描述多帧传输的起始。

CF (Consecutive Frame,连续帧)

用于在多帧传输中传输数据。

FC (Flow Control Frame,流控帧)

用于在多帧传输过程中,对报文流控制。

UDS 的单帧通信和多帧通信:

单帧通信如图 8 所示:

“图
图 8 单帧通信

多帧通信过程如图 9 所示:

“图
图 9 多帧通信

基于 UDS Bootloader 实现更新 APP 流程框图

MM32F0140 系列 MCU 使用 FlexCAN 实现基于 UDS Bootloader 更新 APP 的流程框图如10所示:

“图10
图10 更新 APP 流程

结语

本文以 MM32F0140 系列 MCU 的 FlexCAN 为例,简要介绍了在使用 MM32F0140 系列 MCU 实现 UDS Bootloader 过程中涉及到的 FlexCAN、UDS 和 Bootloader 等相关基本概念,并介绍了 UDS 的消息结构和 ISO-TP 标准,以及展示了 MM32F0140 系列 MCU 使用 FlexCAN 实现 UDS Bootloader 更新 APP 的流程框图。

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 495

今年七月份以来,全国大范围持续高温,多地突破7月历史极值,最高温度在40度以上。灵动微夏日送清凉,推出升级版家用空调内风机方案。相比上一代方案,硬件平台和软件平台同步升级。

来源:灵动微电子
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 21

随着科技的发展,越来越多的领域需要用到双电机,然而,在市场上为双电机设计的控制芯片大多为M4内核,成本为比较高,得益于灵动微电子为电机控制设计的SPIN0280的超高性能,我们可以用M0内核来实现双电机的控制。

来源:灵动微电子
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 52

1、MindSDK概述

MindSDK(mm32-mcu-sdk)是由灵动官方的软件团队开发和维护的基于灵动微控制器的软件开发平台。

● MindSDK包含灵动微控制器所必须的芯片头文件、启动程序、连接命令脚本等源码,以及灵动微控制器外设模块的驱动程序源码,以及大量便于用户使用的软件组件源码和开发工具。

● MindSDK提供了丰富的样例工程和综合演示工程,便于用户在具体的应用场景中了解驱动程序和软件组件的API的用法,并且可以直接在MindSDK支持的硬件开发板上运行,演示实际的工作情况。

● MindSDK在灵动主流的微控制器系列间实现了跨平台兼容,同一份样例工程,可以在不同平台之间无缝移植,方便用户在产品选型阶段快速完成评估,选择最具性价比型号的微控制器。

● MindSDK的驱动代码经过充分的测试,稳定可靠的软件支持。(这里留个彩蛋,后续文章中也会介绍到灵动软件研发的先进测试框架)

MindSDK使用层次模型组织架构和实现内容,如图1所示。

“图1
图1 MindSDK系统框图

目前,MindSDK已经支持的众多的主流开发工具:

● 支持开发主机操作系统:Windows、Linux

● 支持编译工具链:Keil MDK、IAR for Arm和ARMGCC

● 支持主流的调试器:Segger JLink和DAPLink

2、MindSDK官方支持的开发板

MindSDK已经支持灵动官方发布的开发板,包括PLUS-F3270、PLUS-F5270、EVB-L0130等,还有众多正在支持的开发板将在不断更新的版本中陆续开放。有部分支持的开发板,如下图所示。

图2
图2 MindSDK支持PLUS-F3270开发板

“图3
图3 MindSDK支持的PLUS-F5270开发板

“图4
图4 MindSDK支持的EVB-L0130开发板

3、获取和使用MindSDK

MindSDK通过专门的SDK在线发布平台发布最新的MindSDK代码包:

https://mindsdksdk.mindmotion.com.cn

从MindSDK网站上打包下载专属软件包的步骤非常简单,从登录到下载到需要的代码包,最多使用4步。如图5所示。

“图5
图5 MindSDK获取软件包

这里还可以通过浏览一小段demo,了解订制MindSDK软件包、编译工程创建可执行文件、下载可执行文件到开发板并运行的全过程。如视频所示。

“”
演示使用MindSDK

4、MindSDK的组件与样例工程

从MindSDK的目录结构中可以看到已经支持的驱动组件、功能组件、应用样例工程和驱动样例工程。如图6所示。

“图6
图6 在MindSDK目录结构中查看已支持的组件

MindSDK的绝大多数代码存放在二级目录下,层级简单,整齐。如图7所示。

“图7
图7 MindSDK单个工程的文件组织

展示在Keil中打开MindSDK样例工程。如图8所示。

“图8
图8 在Keil中打开MindSDK样例工程

5、MindSDK的应用案例

使用MindSDK的两种典型用法。以MindSDK作为框架搭建应用程序,或者以MindSDK作为BSP包支持大软件平台。

MindSDK作为主要工程框架,包含其他组件:

● 适合新项目,以MindSDK的工程作为基础,逐步添加新功能。

● 在MindSDK框架下进行开发,可以借鉴MindSDK的编码和文件组织规范

MindSDK作为组件,融入其他工程框架:

● 集成至大型软件、开发平台、开源项目当中,例如:MicroPython、RTOS、Zephyr …

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 77

2022年7月29日,上海灵动微电子股份有限公司(以下简称“灵动微电子)发布低功耗 MM32L0130 系列 MCU 产品。MM32L0130 搭载 Arm Cortex-M0+ 处理器,集成段码 LCD 驱动,功耗可低至 100nA,适用于多种低功耗应用场景。

“灵动微电子发布低功耗

L0130 系列特色

1、丰富的资源配置

● Arm® Cortex-M0+ 内核,工作频率可达 48MHz

● 高达 64KB Flash,8KB SRAM

● 3 个 UART接口(包含 1 个 LPUART 接口)、2 个 SPI 接口、2 个 I2S 接口、1 个 I2C 接口

● 多达 40x4 或 36x8 个段码 LCD 驱动器

● 1 个红外信号调制模块 IRM,支持 ASK、PSK 或 FSK 调制

● 5 通道 DMA

● 5 个 16 位定时器

● 硬件日历 RTC

● 1 个 12 位 SAR ADC,配置 15 个外部通道,转换速率可达 1MSPS

● 1 个低功耗比较器

● 工作电压为 1.8V - 5.5V

● 支持的温度范围为 -40℃ - 85 ℃

● 多种省电工作模式支持低功耗应用的需求

● 提供 LQFP64 和 LQFP48 封装

“灵动微电子发布低功耗

2、先进的 LCD 控制器

● 可支持在待机状态下使用,最低功耗仅 1.5uA

● 可驱动多达 40x4 或 36x8 个段码。帧率和对比度可调节,可选段码进行闪烁

● 可通过内部重映射矩阵,实现 COM 和 SEG 的任意映射,提供单层 PCB 搞定 LCD 布线的选项

● 内置电荷泵,可在 1.8~5.5V 下工作。在 MCU 电源电压下降时依然可保持液晶屏的清晰

● 多种占空比和偏压模式可供选择,适配各种屏幕

3、出色的低功耗表现

L0130产品出色的低功耗模式,可在低功耗、短启动时间和多种唤醒事件之间达到最佳平衡。以下列举主要的几种模式,供参考:

● 低功耗运行模式

CPU、所有芯片外设包括 CPU 外设如 NVIC、 SysTick 等运行。在1MHz主频时功耗仅有 270uA;最高可运行在 2MHz

● 睡眠模式

CPU 停止,所有芯片外设包括CPU的外设仍可运行。运行功耗在57uA/MHz,最高可运行在 48MHz

● 深度停机模式

CPU 及绝大部分外设时钟都停止,在保持寄存器和RAM的内容的同时提供 LPUART 收发数据、RTC 日历计时和 LCD 显示的能力。最低功耗可达 400nA

● 待机模式

除备份域外的所有内容丢失,可支持 RTC 日历计时和 LCD 显示。最低功耗可达 300nA

● 关机模式

仅 POR、 PMU 部分逻辑、NRST PIN和 IO 唤醒逻辑正常工作。最低功耗可达 100nA,可供一粒 CR2032 电池使用 200 年!

L0130选型指南与购买渠道

MM32L0130 现已开始送样,提供 LQFP64 和 QFP48 两种可选封装形式,全系列提供 -40~85℃ 产品型号。主流开发设计工具和编程器厂家也已实现对 MM32L0130 的支持。有关芯片购买事宜,请洽灵动的销售、官方代理商和方案设计公司。

同时推出的还有 EVB-L0130 开发板,该开发板搭载 MM32L0136C7P 芯片,板载段码 LCD 屏等外设模块,用于 MM32L0130 系列 MCU 的评估。

“灵动微电子发布低功耗

在软件支持方面,灵动全新推出的软件开发平台 MindSDK 也将在 8 月份支持 MM32L0130 系列,敬请期待。

更多详细信息,请访问灵动官网 www.mm32mcu.com

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 36

4月12日,上海灵动微电子股份有限公司(以下简称“灵动微电子)联合安谋科技发布高性能MM32F5系列MCU产品。此款产品在架构和外设设计上做了多处创新以适应高端应用市场。

“灵动微电子发布高性能MM32F5系列MCU产品"

全系标配安谋科技“星辰”STAR-MC1处理器

近年来,人工智能、物联网、工业自动化领域市场发展飞速,特别是安防、民生和智能家居等行业发展迅速,其年增长率超1500%;在疫情后,非接触的人机交互设备以及对于语音和视觉的技术需求增长也越来越快;在过去的三年内,据一些数据统计,国内工业企业的增长率已超过200%,包括常见的工业自动化升级改造。现在国内的工业企业不单是为了满足国内的需要,更占据不少海外的市场份额。

我们从中看到一个大的问题:虽然国产的MCU产品的市占率比几年前提高了很多,但在高性能MCU产品上,国产的市占率还是非常低。主要原因是:国内企业对高性能产品的支持和布局还不够完善。另外,MCU的开发和应用环境有非常多差异化的生态要求。碎片化的生态加上不同算法的门槛,这些都是国产高性能MCU面临的挑战,所以灵动微电子经过严谨的评估后选用了安谋科技Armv8-M Mainline架构的“星辰”STAR-MC1内核来开发高性能MM32F5系列MCU产品。

“灵动微电子发布高性能MM32F5系列MCU产品"

安谋科技“星辰”STAR-MC1内核优势

Armv8-M Mainline架构的“星辰”STAR-MC1内核优势:

  • 相对于Arm Cortex-M4,在同等工艺和功耗前提下“星辰”STAR-MC1内核有约20%的性能提升,Cortex-M4的MIPS是1.15DMIPS/MHz,“星辰”STAR-MC1内核能做到1.5 DMIPS/MHz & 4.02 Coremark/MHz;
  • 灵活的扩展接口,“星辰”STAR-MC1处理器搭载了接近Cortex-M7的内存系统总线结构,并且具备v8M独有的可定制指令接口,可以灵活地去定制用户特定指令,以提升系统效率。同时,客户也可以用这套机制去做一些差异化,来保证自己的知识产权;
  • “星辰”STAR-MC1处理器的生态系统不仅有Arm自家的DS和Keil MDK工具,也包含第三方的IAR、SEGGER、Lauterbach等一些工具链。“星辰”STAR-MC1处理器在各类第三方编译器、操作系统、仿真器也受广泛支持,便于工程师在开发设计时快速上手。

“灵动微电子发布高性能MM32F5系列MCU产品"

为什么选择“星辰”STAR-MC1内核?

灵动之所以选择“星辰”STAR-MC1处理器,是因为STAR-MC1内核作为由安谋科技的本土团队打造的处理器架构系列,在性能上比Cortex-M3/M4提升了很多,其4.02的Coremark的跑分在Arm架构的MCU领域里名列前茅;在系统架构上,通过更高性能的存储器架构(如独立的Cache和TCM),MM32F5系列MCU能提供系统层面的更高的系统级多并发;还有Arm 的软硬件生态是业界公认的,MM32F5基于STAR-MC1内核,也适用于各类现有的编译工具,对于软件开发人员来说,可以非常快速地从一种Arm架构的开发转至STAR-MC1。对于灵动来说,MM32的产品已有成千上万的用户在使用,因此平台化和易用的编译工具也是至关重要的,MM32F5系列可以作为灵动的新老客户在产品升级上的一种选项;最后,在目前的大环境下,保持供应链的独立和安全性也是需要考虑的方面,在这一点上,STAR-MC1也能提供相应的保障。在供应链安全性问题上,除了内核本身,像FAB厂、封装测试厂等,都会保证灵动MM32系列产品生产的安全性。

结合内核性能和存储器架构性能的提升,基于安谋科技“星辰”STAR-MC1内核的MM32F5系列平台,不仅在整体性能上比Cortex-M3/M4产品高出50%左右,芯片的系统层面性能的提升其实更高。

  • 丰富的通信接口:MM32F5系列集成了以太网、USB、 FlexCAN接口和多达14组的串行通信接口,特别适合工业和汽车相关应用。
  • 大容量存储:MM32F提供了从256KB到2MB的Flash选项,并使用了双分区配置,可提高系统运行的稳定性。
  • 在模拟功能上,提升了SAR ADC和定时器的配置。3Msps采样率和256倍过采样设计的12b ADC,及支持8路的互补PWM输出的定时器,让灵动专业的电机控制技术更进一步。
  • 在MM32F5系列上,灵动的研发团队引入了独创的专业功能模块,如MindSwitch,它是一种在任意外设和GPIO之间实现独立互联的机制,结合多路组合逻辑处理单元CLU,完成更多无需CPU干预和处理的互联功能。

MM32F5系列平台布局

在MM32F5系列平台中现有三个系列的规划布局:

  • MM32F52系列,120MHz“星辰”处理器,主流升级
  • MM32F53系列,150MHz“星辰”处理器,产能扩充
  • MM32F55系列,200MHz“星辰”处理器,应用拓展

这三个系列构成了灵动在今后高性能平台上的主线,面向日益智能化的嵌入式系统需要。

“灵动微电子发布高性能MM32F5系列MCU产品"

灵动将会在本季度双首发两款MM32F52系列产品,分别是MM32F5270和MM32F5280,其主要差别是存储容量及部分外设配置,对于内核、高级通信接口等功能两款产品是一致的。

“灵动微电子发布高性能MM32F5系列MCU产品"

MM32F5系列配套软硬件平台

作为灵动的一款全新的高性能MCU系列,灵动同步发布配套的新的软硬件平台。在开放评估板上,灵动推出了面向MM32F系列的Plus Board,为用户提供更全面的评估开发体验。主要的接口功能都能在一块开发板上进行评估,如以太网、USB、FlexCAN、SD卡、选配的LCD彩屏显示、舵机接口、传感器模块等。

“灵动微电子发布高性能MM32F5系列MCU产品"

在软件上,灵动新推出MindSDK开发套件,包含驱动程序、功能组件、样例工程及演示工具等。从整个MindSDK组成来说,除了提供相应的兼容CMSIS-Core和CMSIS-DSP的架构外,还会提供专门的基于HAL或是基于操作系统层面的软件驱动,以及对应的样例工程和丰富的集成化参考设计。在软件的驱动程序案例库里,除了基本的调用,还会针对中断方式或者DMA等方式来提供样例。随着智能化的需求增多,电子系统的设计日益复杂化,软件的功能和复杂程度将会越来越大,灵动新推出的MindSDK开发套件可以解决这些问题,满足高性能系统的开发需求。

“灵动微电子发布高性能MM32F5系列MCU产品"

MM32F5作为一个通用高性能的MCU平台,对于不同的应用场景和项目需要,客户可以从中选择所需的功能接口。同时,灵动也提供不同封装形式如64,100和144pin,以及-40~105℃的扩展工业级产品选项供客户选择。若要了解更多关于灵动MM32F5产品的信息,请登录灵动官网查看:
https://www.mindmotion.com.cn/products/mm32mcu/mm32f/mm32f_performance/

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 60

刚刚,灵动微电子日前宣布,全球知名半导体MCU领域专家Geoff Lees于近日正式加入灵动,担任战略和创新资深副总裁。

“重磅!全球MCU顶级大神加盟本土MCU灵动微电子"

Geoff Lees曾任恩智浦半导体资深副总裁兼边缘处理事业部总经理。在此期间,他带领产品和研发部门推动微控制器、应用处理器和网络处理器业务的高速增长,并使其成为嵌入式系统行业的巨头。在此之前,Geoff曾任飞思卡尔半导体资深副总裁,负责微控制器和应用处理器业务。

作为MCU领域元老,Geoff Lees专注于MCU三十余年,他曾推出业界第一款32位闪存MCU,主导开发并推出了第一款Cortex-M0和双核M0/M4架构的MCU,首创了异构非对称Arm多核架构,并推出了i.MX RT系列跨界处理器概念。此外,Geoff还推动了i.MX应用处理器成为汽车、工业、电子阅读器和大众市场中最受欢迎的基于Arm的处理器。

灵动微电子创始人兼董事长吴忠洁博士对Geoff给予高度评价:“对于灵动来说,Geoff Lees的加盟具有非凡的价值。他是嵌入式系统的杰出领导者,带来的不仅是专业经验,还有声望和人脉。Geoff的加入有助于灵动微电子将MM32打造成更前沿的产品,扩大 MM32 在中国和全球市场的知名度,在更多客户中扩展并提高占有率,并制定MM32 MCU在高端工业、IoT微控制器和汽车电子领域未来长期的发展战略。”

近年来,随着智能化的深入以及国产替代的东风,很多本土MCU获得了大发展,很多公司年增长率高达5倍,10倍以上。不过看统计数据,本土MCU在市场占比只有10%左右,大部分市场依然被国外大品牌占据。2020年,全球MCU市场份额前五企业营收合计占行业总营收75.6%。目前,本土MCU虽然进入了智能表计、高端智能家电等领域,但是中高端应用领域工控、高端家电、医疗、汽车依然被日系、欧美系厂商把持。本土MCU要获得长足发展,就必须向高端冲击!如何向高端冲击?而吸收优秀的国际专家加盟,以国际化的视野运营本土MCU 是推动本土MCU走向高端的一条捷径,全球MCU领域的顶级大神Geoff Lees加盟本土灵动微电子 这不是第一个,也不是最后一个,未来本土MCU一定会吸引更多全球大神加盟,加油!

以下英文公告:
Geoff Lees joins MindMotion Microelectronics
Shanghai, China, March 2022 – MindMotion Microelectronics announced that Geoff Lees, the world-famed MCU leader, joined MindMotion as Senior Vice President of Strategy and Innovation.
Geoff Lees was Senior VP and GM of Edge Processing Business Unit in NXP Semiconductors, who led the product and R&D teams to drive the high growth of microcontroller, application processor and networking processor businesses and built NXP the giant in the embedded system industry. Prior to that, Geoff was Senior Vice President in Freescale Semiconductors and took charge of microcontroller and application processor businesses. Geoff is a veteran in MCU with over 30 years of expertise. He introduced the first 32-bit Flash memory MCU, led the development and launch of the first Cortex-M0 and dual core M0/M4-based MCU, innovated the Arm-based heterogeneous asymmetric multicore architecture, launched the crossover processor concept with i.MX RT families. Geoff also drove the i.MX application processor as the most popular Arm-based one in Automotive, Industrial, e-readers, and mass markets.
“Geoff’s join in MindMotion is of extraordinary value. As an outstanding leader in the embedded system industry, Geoff brings us not only professional experience, but fame and connections as well.” Geoff is spoken highly of by Dr. Zhongjie Wu, founder and president of MindMotion. “With Geoff’s participation to MindMotion, it’s helpful for building MM32 into a cutting-edge product portfolio, making MM32 well-known in China and globe, extending its presence and increasing its market share among more customers. It can also be a boost for us to develop a long-term strategy towards future growth for MM32 MCU in high-end industrial, IoT microcontrollers and automotive electronics.”

来源:电子创新网张国斌
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 181

页面

订阅 RSS - 灵动微电子