使用灵动MM32F5270 MCU UART配置实现LIN通信

2024-02-23 MindMotion(灵动MM32MCU公众号)
MCU,MM32F5270,MindMotion MCU,MM32F5270,MindMotion MCU,MM32F5270,MindMotion MCU,MM32F5270,MindMotion

本文主要简述MM32F5270 MCU UART是如何实现LIN通信的。


1、LIN总线简介

LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议,其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信。LIN总线采用单主多从的组网方式,没有CAN总线那样的仲裁机制,辅以简单驱动程序便可实现LIN协议。LIN节点由控制芯片和LIN收发器构成,一般通过芯片搭载的UART模块来实现,主节点控制传输时刻,控制整个网络的通信,从节点按照主节点的调度进行通信。


2、LIN报文结构

LIN总线上有“显性”和“隐性”两种互补的逻辑电平。显性电平是逻辑 0,隐性电平是逻辑1,总线上实行“线与”。一帧LIN报文由帧头(Header)和应答(Response)两部分组成。主机任务负责发送帧头,从机任务接收帧头并对帧头所包含信息进行解析,然后决定是发送应答,还是接收应答,还是不作任何反应。帧在总线上的传输如下图所示:

帧头包括同步间隔段、同步段以及受保护ID段(PID)。应答包括数据段和校验和段。LIN报文帧整体结构如下图所示。

同步间隔段同步间隔段标志一帧的开始,由同步间隔(Break)和间隔符(Break Delimiter)构成。同步间隔段至少有13个显性位,间隔符至少有一个隐形位。


同步段同步段固定一个字节,值固定为0x55。在LIN帧中,除了同步间隔段,后面各段都是通过字节域的格式传输的。LIN的字节域就是指标准的UART数据传输格式,字节域包括1位起始位(显性)+8位数据位+1位停止位(隐性)。数据传输都是先发送LSB,最后发送 MSB。LIN总线将下降沿作为判断标志,通过字节0x55(01010101b)进行同步,从机节点上可以采用非高精度时钟,如果存在偏差,可以通过同步场来调整,使从机节点数据的波特率与主机节点一致。


受保护ID段:受保护ID段由6位帧ID和2位奇偶校验位组成,帧ID范围为0x00~0x3F共64个。

帧ID标识了帧的类别,从机任务根据帧头ID作出反应(接收/发送/忽略应答),其中P0与P1效验如下:


P0 = ID0⊕ID1⊕ID2⊕ID4

P1 = ¬(ID1⊕ID3⊕ID4⊕ID5)


其中“⊕”代表“异或”运算,“¬”代表“取非”运算。由公式可以看出,PID 不会出现全 0 或全 1 的情况,如果从机节点收到了“0xFF”或“0x00”,可判断传输错误。LIN总线根据帧ID的不同,将报文分为信号携带帧、诊断帧、保留帧。

应注意从机应答帧是一个完整的帧,与帧结构中的“应答”不同。


数据段:数据段包含1~8个字节,可以分为两种数据类型:信号和诊断消息。信号由信号携带帧传递,诊断消息由诊断帧传递。LIN协议规定可传输的LIN字节数为2、4、8,并不是1~8内任意一个数字。一般应用方面会统一字节数,通常是每帧传输8个字节。


校验和段:校验和段是为了对帧传输内容进行效验。效验分为标准型校验与增强型校验。


将校验对象的各字节作带进位二进制加法(当结果大于等于256 时就减去255),并将所得最终的和逐位取反,以该结果作为要发送的校验和。接收方根据校验和类型,对接收数据作相同的带进位二进制加法,最终的和不取反,并将该和与接收到的校验和作加法,如果结果为0xFF,则校验和无误。这在一定程度上保证了数据传输的正确性。


采用标准型还是增强型是由主机节点管理,发布节点和收听节点根据帧ID来判断采用哪种校验和。

3、LIN通信实验:

MM32F5270的UART支持LIN协议下收发断开符号,通过配置UART,根据总线特征编写LIN驱动程序,实现LIN总线通信。相关代码参考灵动官网的LibSamples或在此基础上修改。


3.1 LIN驱动程序

同步间隔段

配置UART支持LIN协议下收发断开符号:

void LIN_MASTER_Break(void)
{
    LIN_MASTER_TXBRK_InterruptFlag = 0;

    UART_LINCmd(UART1, ENABLE);
    UART_SendBreak(UART1);

    while (0 == LIN_MASTER_TXBRK_InterruptFlag)
    {
    }


同步段

主机发送0x55:

void LIN_MASTER_SyncByte(void)
{
    LIN_MASTER_SendData(0x55);
}


受保护ID段

uint8_t LIN_FrameIDToPID(uint8_t FrameID)
{
    uint8_t i  = 0;
    uint8_t P0 = 0, P1 = 0, PID = 0xFF;
    uint8_t ID_BIT[6] =
    {
        0, 0, 0, 0, 0, 0
    };
    if (FrameID < 0x40)
    {
        PID = FrameID;
        for (i = 0; i < 6; i++)
        {
            if (FrameID & (0x01 << i))
            {
                ID_BIT[i] = 1;
            }
            else
            {
                ID_BIT[i] = 0;
            }
        }
        P0 =  (ID_BIT[0] ^ ID_BIT[1] ^ ID_BIT[2] ^ ID_BIT[4]) & 0x01;
        P1 = ~(ID_BIT[1] ^ ID_BIT[3] ^ ID_BIT[4] ^ ID_BIT[5]) & 0x01;
        if (P0)
        {
            PID |= 0x40;
        }
        if (P1)
        {
            PID |= 0x80;
        }
    }
    return (PID);
}


数据段

主机发送数据:

void LIN_MASTER_SendData(uint8_t Data)
{
    UART_SendData(UART1, Data);
    while (RESET == UART_GetFlagStatus(UART1, UART_FLAG_TXC))
    {
    }
}


从机发送数据:

void LIN_SLAVE_SendData(uint8_t Data)
{
    UART_SendData(UART1, Data);

    while (RESET == UART_GetFlagStatus(UART1, UART_FLAG_TXC))
    {
    }
}


校验和段

标准型校验:

uint8_t LIN_ClassicChecksum(uint8_t *Buffer, uint8_t Length)
{
    uint8_t  i = 0;
    uint16_t Checksum = 0;
    for (i = 0; i < Length; i++)
    {
        Checksum += Buffer[i];
        if (Checksum > 0xFF)
        {
            Checksum %= 0xFF;
        }
    }
    return (~(uint8_t)(Checksum & 0x00FF));
}


增强型校验:

uint8_t LIN_EnhancedChecksum(uint8_t PID, uint8_t *Buffer, uint8_t Length)
{
    uint8_t  i = 0;
    uint16_t Checksum = PID;
    for (i = 0; i < Length; i++)
    {
        Checksum += Buffer[i];
        if (Checksum > 0xFF)
        {
            Checksum %= 0xFF;
        }
    }
    return (~(uint8_t)(Checksum & 0x00FF));
}


主机发送帧头

void LIN_MASTER_SendHeader(uint8_t PID)
{
    LIN_MASTER_Break();
    LIN_MASTER_SyncByte();
    LIN_MASTER_SendData(PID);
}


主机发送报文

诊断帧ID包括主机请求帧0x3C、从机应答帧0x3D,诊断帧用标准型校验和,其他帧使用增强型校验和。

void LIN_Master_SendFrame(uint8_t FrameID, uint8_t *Buffer, uint8_t Length)
{
    uint8_t i = 0;
    uint8_t Checksum = 0;
    uint8_t PID = LIN_FrameIDToPID(FrameID);
    if ((0x3C == FrameID) || (0x3D == FrameID))
    {
        Checksum = LIN_ClassicChecksum(Buffer, Length);
    }
    else
    {
        Checksum = LIN_EnhancedChecksum(PID, Buffer, Length);
    }
    LIN_MASTER_SendHeader(PID);
    for (i = 0; i < Length; i++)
    {
        LIN_MASTER_SendData(Buffer[i]);
    }
    LIN_MASTER_SendData(Checksum);
}


从机发布数据

从机解析帧头信息,将主机发送的PID得到帧ID,根据帧ID选择校验类型,发送数据段和校验和段。

void LIN_SLAVE_Response(uint8_t *Buffer, uint8_t Length)
{
    uint8_t i = 0;
    uint8_t Checksum = 0, FrameID = 0;
    FrameID  = LIN_PIDToFrameID(LIN_SLAVE_RxBuffer[1]);
    Checksum = 0;
    if ((0x3C == FrameID) || (0x3D == FrameID))
    {
        Checksum = LIN_ClassicChecksum(Buffer, Length);
    }
    else
    {
        Checksum = LIN_EnhancedChecksum(LIN_SLAVE_RxBuffer[1], Buffer, Length);
    }

    for (i = 0; i < Length; i++)
    {
        LIN_SLAVE_SendData(Buffer[i]);
    }
    LIN_SLAVE_SendData(Checksum);
}


3.2 主机程序

主机UART配置

void UART_Configure(uint32_t Baudrate)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;
    UART_InitTypeDef UART_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);

    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_IDLRConfig(UART1, 100);    /* LIN Master Only!!! */
    UART_ITConfig(UART1, UART_IT_RX, ENABLE);
    UART_ITConfig(UART1, UART_IT_TXBRK, ENABLE);

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_7);
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStruct);
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_10;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

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


    UART_Cmd(UART1, ENABLE);
}


主机中断服务子程序

void UART1_IRQHandler(void)
{
    uint8_t i = 0;
    if(SET == UART_GetITStatus(UART1, UART_IT_TXBRK))
    {
        UART1_RxLength = 0;
        UART_ClearITPendingBit(UART1, UART_IT_TXBRK);
        UART_ITConfig(UART1, UART_IT_RXIDLE, ENABLE);
        LIN_MASTER_TXBRK_InterruptFlag = 1;
    }
    if(SET == UART_GetITStatus(UART1, UART_IT_RX))
    {
        UART1_RxBuffer[UART1_RxLength] = UART1->RDR & 0x00FF;
        UART1_RxLength = (UART1_RxLength + 1) % 100;
        UART_ClearITPendingBit(UART1, UART_IT_RX);
    }
    if(SET == UART_GetITStatus(UART1, UART_IT_RXIDLE))
    {
        for(i= 0; i < UART1_RxLength; i++)
        {
            LIN_MASTER_RxBuffer[i] = UART1_RxBuffer[i];
        }
        LIN_MASTER_RxLength = UART1_RxLength;
        LIN_MASTER_RxFinish = 1;
        UART_ClearITPendingBit(UART1, UART_IT_RXIDLE);
        UART_ITConfig(UART1, UART_IT_RXIDLE, DISABLE);
    }
}


主机例程

主机间隔500ms发布和接收数据,发送帧ID和数据依次累加:

void UART_LIN_Master_Sample(void)
{
    uint8_t i = 0;
    uint8_t FrameID = 0, Mode = 0;
    uint8_t Buffer[2] = { 0, 0 };
    printf("\r\nTest %s", __FUNCTION__);
    LIN_MASTER_RxLength = 0;
    LIN_MASTER_RxFinish = 0;
    for (i = 0; i < 100; i++)
    {
        LIN_MASTER_RxBuffer[i] = 0;
    }
    UART_Configure(19200);
    while (1)
    {
        if (Mode == 0)
        {
            printf("\r\nLIN Master Write...");
            LIN_Master_SendFrame(FrameID, Buffer, sizeof(Buffer));
        }
        else
        {
            printf("\r\nLIN Master Read....");
            LIN_MASTER_SendHeader(LIN_FrameIDToPID(FrameID));
            while (0 == LIN_MASTER_RxFinish)
            {
            }
            LIN_MASTER_RxFinish = 0;
            printf("\r\nLIN Master Rx Length : %d, Rx Buffer : ", LIN_MASTER_RxLength);
            for (i = 0; i < LIN_MASTER_RxLength; i++)
            {
                printf("0x%02x ", LIN_MASTER_RxBuffer[i]);
            }
            printf("\r\n");
            for (i = 0; i < sizeof(Buffer); i++)
            {
                Buffer[i]++;
            }
            FrameID = (FrameID + 1) % 0x40;
        }
        Mode = (0 == Mode) ? 1 : 0;
        PLATFORM_DelayMS(500);
    }
}


3.3  从机程序

从机UART配置

使能UART LIN总线模式、使能UART接收断开帧中断、使能接收单字节中断。

void UART_Configure(uint32_t Baudrate)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;
    UART_InitTypeDef UART_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);

    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_LINCmd(UART1, ENABLE);

    UART_ITConfig(UART1, UART_IT_RX, ENABLE);
    UART_ITConfig(UART1, UART_IT_RXBRK, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_7);
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStruct);
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_10;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStruct);
    NVIC_InitStruct.NVIC_IRQChannel = UART1_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStruct.NVIC_IRQChannelCmd  = ENABLE;
    NVIC_Init(&NVIC_InitStruct);
    UART_Cmd(UART1, ENABLE);
}


从机中断服务子程序

void UART1_IRQHandler(void)
{
    uint8_t i = 0;
    if (SET == UART_GetITStatus(UART1, UART_IT_RXBRK))
    {
        UART1_RxLength = 0;
        UART_ClearITPendingBit(UART1, UART_IT_RXBRK);
        UART_ITConfig(UART1, UART_IT_RXIDLE, ENABLE);
    }
    if (SET == UART_GetITStatus(UART1, UART_IT_RX))
    {
        UART1_RxBuffer[UART1_RxLength] = UART_ReceiveData(UART1);
        UART1_RxLength = (UART1_RxLength + 1) % 100;
        UART_ClearITPendingBit(UART1, UART_IT_RX);
    }
    if (SET == UART_GetITStatus(UART1, UART_IT_RXIDLE))
    {
        for (i = 0; i < UART1_RxLength; i++)
        {
            LIN_SLAVE_RxBuffer[i] = UART1_RxBuffer[i];
        }

        LIN_SLAVE_RxLength = UART1_RxLength;
        LIN_SLAVE_RxFinish = 1;
        UART_ClearITPendingBit(UART1, UART_IT_RXIDLE);
        UART_ITConfig(UART1, UART_IT_RXIDLE, DISABLE);
    }
}


从机例程

从机对帧头包含信息解析,确定是发送应答,还是接收应答。

void UART_LIN_Slave_Sample(void)
{
    uint8_t i = 0;
    uint8_t Checksum = 0, FrameID = 0;
    uint8_t Length   = 0, Buffer[100];
    printf("\r\nTest %s", __FUNCTION__);
    Length = 0;
    LIN_SLAVE_RxLength = 0;
    LIN_SLAVE_RxFinish = 0;
    for (i = 0; i < 100; i++)
    {
        Buffer[i]             = 0;
        LIN_SLAVE_RxBuffer[i] = 0;
    }
    UART_Configure(19200);
    while (1)
    {
        if (1 == LIN_SLAVE_RxFinish)
        {
            LIN_SLAVE_RxFinish = 0;
            if (0x55 == LIN_SLAVE_RxBuffer[0])
            {
                if (2 == LIN_SLAVE_RxLength)
                {
                    LIN_SLAVE_Response(Buffer, Length);
                }
                else
                {
                    for (i = 2; i < LIN_SLAVE_RxLength - 1; i++)
                    {
                        Buffer[i - 2] = LIN_SLAVE_RxBuffer[i];
                    }
                    Length = LIN_SLAVE_RxLength - 3;
                }
            }
        }
    }
}


3.4  验证

通过UART接口连接两块MM32F5270 MiniBoard,观察串口调试助手:


先由主机发布数据,从机接收数据,接着由从机发布数据,主机接收数据,依次循环进行。根据截图信息,主从机收发数据一致,与程序逻辑相符,两块板LIN通信成功。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由出山转载自MindMotion(灵动MM32MCU公众号),原文标题为:灵动微课堂 (第280讲)|MM32F5270 UART实现LIN通信,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

Keil分散加载文件浅析

分散加载文件(scatter file)是一个文本文件,用于描述 ARM 链接器生成映像文件所需要的信息,在一些应用场景中嵌入式系统可能会使用分散加载。本章节简要介绍了分散加载文件的基本概念和语法,旨在对分散加载文件有初步认识。

设计经验    发布时间 : 2023-12-28

灵动微电子MM32F0160系列MCU FlexCAN-FD通信应用指南

MM32F0160系列MCU具有一个 FlexCAN 模块,该模块遵循 ISO 11898-1 标准、 CAN FD 和 CAN 2.0B 协议规范,不仅兼容传统CAN,还支持CAN FD模式。本章节初步学习使用MM32F0160 FlexCAN-FD接口实现CAN FD通信,相关例程参考灵动官网的LibSamples或在此基础上修改。

设计经验    发布时间 : 2024-01-07

基于MM32F5270 MCU初步学习移植FreeRTOS

FreeRTOS是一个RTOS类的嵌入式实时操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。本系列微课堂基于MM32F5270 MCU初步学习使用FreeRTOS开发。

设计经验    发布时间 : 2024-08-30

HVAC FLAP以MM32SPIN023C为主控设计提供All in one方案

暖通空调 (HVAC) 系统旨在调节、加热、冷却、通风、清洁或除湿车厢内的空气质量 (IAQ)。暖通空调系统由前端的传感器和机械/电子开关、鼓风机电机、执行器(用于新鲜空气循环控制、气流控制和温度控制)以及制冷装置组成,这些装置将空气输送到后端的座舱,以确保驾驶员和乘客的热舒适性。HVAC FLAP以 MM32SPIN023C 为主控。

应用方案    发布时间 : 2024-03-25

灵动新推出32位MCU MM32F0120,主频高达72MHz,提供64KB Flash和8KB RAM

灵动微电子发布的MM32F0120,搭载Cortex M0内核,主频高达72MHz,提供64KB Flash和8KB RAM,最高支持48pin封装。适用于屏显控制、电动玩具、电源管理、马达控制、无线快充等多种应用场合。

产品    发布时间 : 2024-09-11

MindMotion(灵动微) MCU选型表

32位高性能,高性价比MCU,Core核心有M0、M0+、2XM0、M3、STAR-MC1,Flash存储容量范围 16KB~2048KB,RAM存储容量范围 2KB~128KB,工作电压:1.8~48V,CPU频率(MHz):48~180MHz,GPIO 端口数(个):6~86,LQFP/TSSOP/QFN等多种封装形式。

产品型号
品类
GPIO 端口数(个)
Flash(KB)
内核
管脚数(个)
工作温度(℃)
封装/外壳/尺寸
CPU频率(MHz)
工作电压(V)
SRAM (KB)
MM32F0163D7PV
32位MCU
57
128KB
M0
64
-40℃~105℃
LQFP64
96MHz
2.0~5.5V
16KB

选型表  -  MindMotion 立即选型

喜讯|灵动再获工信部第三批重点专精特新“小巨人”荣誉称号

为了深入贯彻习总书记关于“培育一批“专精特新”中小企业”的重要指示精神,上海灵动微电子股份有限公司积极配合工业和信息化部开展的第三批专精特新“小巨人”企业复核工作,并顺利通过了相关审核。

厂牌及品类    发布时间 : 2024-09-06

【IC】灵动发布全新入门级32位MCU MM32G0001系列,内置时钟全温度范围内偏差不超过±2%

灵动股份推出全新超值型MM32G0001系列MCU。2023年初,灵动首次发布了其主打高性价比的MM32G系列,目前已陆续推出了G0140,G0160和G5330系列产品。为进一步丰富MM32G系列产品组合,灵动和上下游合作伙伴通力合作,打造出全新入门级超值型MM32G0001系列MCU。

新产品    发布时间 : 2023-07-01

累计交付超4亿颗!世强硬创获低功耗32位MCU厂商灵动股份授权

MindMotion(灵动股份)MM32WB0510系列配套软件支持各种蓝牙Profile,提供小尺寸协议栈,最小仅占用12KB Flash和2KB RAM。

签约新闻    发布时间 : 2023-07-24

【经验】灵动MindSDK搭建Keil MDK开发环境指南

本文介绍基于Windows操作系统构建嵌入式系统开发环境过程中需要使用的主要软件Keil MDK,并对一些需要特别关注的要点重点说明。Keil MDK是灵动官方的软件开发平台MindSDK支持的主要编译工具之一。

设计经验    发布时间 : 2023-07-02

基于MM32F5270 MCU的Ethernet实现LwIP协议栈移植

LwIP是轻量化的TCP/IP协议,由瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。本文基于搭载了MM32F5277E9P MCU的开发板 PLUS-F5270 V2.0进行实现LwIP协议栈移植。

设计经验    发布时间 : 2024-08-30

The High-performance MCU MM32F52 Series featuring the Arm China “STAR-MC1” Processor Is Available for Order

The MM32F52 series is MindMotion announced the first family of high-performance MCUs featuring the Arm China “STAR-MC1” processor, which is based on the Arm-v8 architecture and offers approximately 20% higher performance per unit compared to Cortex-M3 and Cortex-M4.

新产品    发布时间 : 2023-06-07

MindMotion(灵动微)MM32系列32位MCU选型指南

描述- 灵动微电子成立于2011年,是中国本土领先的通用32位MCU产品及解决方案供应商。灵动微电子的 MCU 产品以 MM32 为标识,基于 Arm Cortex-M 系列内核,自主研发软硬件和生态系统。

型号- MM32G0163D4PV,MM32L0XX,MM32F0144C6PM,MM32F5230,MM32SPIN580C,MM32G0020,MM32G0140,MM32L073PF,MM32F0133C4Q,MM32SPIN080GN,MM32SPIN560CM,MM32SPIN023C,MM32F0133C4P,MM32F5287L8PV,MM32SPIN533AM,MM32F0162D7P,MM32F0121C6P,MM32F0163D4Q,MM32SPIN0230,MM32SPIN080C,MM32F0141C1T,MM32L062NT,MM32F0020B1N,MM32F0144C1TV,MM32F5330,MM32G0001,MM32G0120,MM32F0144C1TM,MM32F0163D7P,MM32SPIN030CN,MM32G0121C1TV,MM32F0010A1TV,MM32SPIN07PF,MM32SPIN05PFOP,MM32SPIN0230B1TV,MM32SPIN37PSD,MM32G0001A6T,MM32F3270,MM32F0121C4P,MM32F0121C4Q,MM32F5277E9PV,MM32F5287L9PV,MM32F0163D6P,MM32F5333D6PV,MM32SPIN0280DAPV,MM32F0121C4N,MM32SPIN080G,MM32SPIN560,MM32F0144C4PM,MM32F0144C4PV,MM32F5280,MM32SPIN06NT,MM32F0140,MM32SPIN560C,MM32F0020,MM32G5333D6QV,MM32F0162D4Q,MM32F0050C1TV,MM32F0273D6P,MM32SPIN0230B3NV,MM32SPIN06PF,MM32G0144C4QV,MM32SPIN0280,MM32L052NT,MM32F5270,MM32F0144C4P,MM32F5277E8PV,MM32F031C6T6,MM32F0130,MM32F0010,MM32F0020B1TV,MM32F5333D7PV,MM32G0144C4PV,MM32SPIN080CN,MM32F0144C4Q,MM32SPIN060G,MM32L0136C7P,MM32F0133C7P,MM32SPIN05NW,MM32F5331D3NV,MM32F0040B1T,MM32SPIN05NT,MM32G0001A6T1V,MM32SPIN06PT,MM32F0120,MM32F0162D6P,MM32F5331D3NM,MM32F003NW,MM32G0160,MM32SPIN27NF,MM32F0163D4QM,MM32SPIN05PF,MM32F031,MM32F3273G6P,MM32F0163D4QV,MM32L0136B6P,MM32G0001A1TV,MM32F0133C6P,MM32SPIN0280D7PV,MM32F5277E7PV,MM32F0144C6P,MM32SPIN222C,MM32F0144C6PV,MM32F0010A6T,MM32G0001A1T,MM32F3273G7P,MM32L0130,MM32G0001A1N,MM32SPIN05PT,MM32G0121C4PV,MM32F0010A1T,MM32F5233D7PV,MM32SPIN27PF,MM32F0010A1N,MM32G5330,MM32SPINEBK,MM32SPIN07,MM32F3273G8P,MM32SPIN160C,MM32SPIN06,MM32F0040B1N,MM32SPIN0230B1NV,MM32L0136C6P,MM32SPIN05,MM32L0020,MM32F0050,MM32SPIN0280D6PV,MM32SPIN533,MM32F031K6U6,MM32F3273G9P,MM32F0163D6PM,MM32SPIN040C,MM32G0020B1T,MM32F0163D6PV,MM32F003,MM32SPIN37,MM32G0020B1N,MM32F0273D8P,MM32F0160,MM32L0136C3T,MM32F0040,MM32G0001A1NV,MM32SPIN0280D6QV,MM32F0144C1T,MM32F103CBT6,MM32F5233D6PV,MM32F0144C4QM,MM32F3273E6P,MM32SPIN27PQ,MM32SPIN27PS,MM32SPIN27PT,MM32L0136C4N,MM32SPIN27,MM32F0020B1NV,MM32F0270,MM32G0121C4QV,MM32F031F6U6,MM32F0273D7P,MM32F003TW,MM32G0144C1TV,MM32F3273E7P,MM32F0141B1T,MM32G0163D6PV,MM32F0163D7PM,MM32SPIN030C,MM32F0163D7PV,MM32F0131C7P,MM32F103,MM32SPIN05TW,MM32F031Y6Y6,MM32F0141C4P,MM32F0141C4Q,MM32F0141C4N,MM32F031K6T6,MM32F0010A1NV,MM32F0131C6P,MM32SPIN422C,MM32F0020B1T,MM32SPIN0280D4PV,MM32L0020B1T,MM32F103RBT6,MM32L0020B1N,MM32F031F6P6,MM32F0121C1N,MM32F0050C1NV,MM32F5333D4QM,MM32G0001A6TV,MM32SPIN360C,MM32,MM32F5333D4QV,MM32F0141C6P,MM32F0141B4P,MM32F0131C4P,MM32F0131C4Q,MM32SPIN0230B3TV,MM32SPIN533A,MM32SPIN033A,MM32F5287L7PV,MM32F5233D4QV

选型指南  -  MINDMOTION  - 2024/5/30 PDF 中文 下载

邀请函|灵动邀您共赴第七届(苏州)电动工具控制与充电技术研讨会之约!

MindMotion灵动邀您2024.8.23参加在苏州尼盛万丽酒店(2楼尼盛宴会厅)举办的第七届(苏州)电动工具控制与充电技术研讨会。灵动微电子的MCU产品以MM32为标识,基于Arm Cortex-M系列内核,自主研发软硬件和生态系统。目前已量产近300款型号,在本土通用32位MCU公司中位居前列。

厂牌及品类    发布时间 : 2024-08-22

展开更多

电子商城

查看更多

只看有货

品牌:MindMotion

品类:高性能MCU

价格:

现货: 0

品牌:MindMotion

品类:电机专用SOC

价格:¥8.2805

现货: 335

品牌:MindMotion

品类:32位MCU

价格:¥7.7125

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.2617

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥3.7500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.9500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥10.6250

现货: 160

品牌:MindMotion

品类:高性能MCU

价格:¥14.6125

现货: 90

品牌:MindMotion

品类:32位MCU

价格:¥1.6125

现货: 72

品牌:MindMotion

品类:电机专用MCU

价格:¥2.5706

现货: 25

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:MindMotion

品类:32位MCU

价格:¥5.9400

现货:19,996

品牌:MindMotion

品类:32位MCU

价格:¥2.3800

现货:6,427

品牌:恒烁

品类:MCU

价格:¥1.0800

现货:154,600

品牌:RENESAS

品类:MCU

价格:¥15.6605

现货:140,156

品牌:ST

品类:单片机(MCU)

价格:¥14.2871

现货:114,259

品牌:MICROCHIP

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥7.3800

现货:76,715

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥15.3000

现货:75,000

品牌:MICROCHIP

品类:MCU

价格:¥9.0000

现货:64,841

品牌:Sonix

品类:MCU

价格:¥0.8500

现货:51,104

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

MCU烧录/Flash烧录/CPLD烧录

可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。

最小起订量: 1pcs 提交需求>

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面