N32G435

一、前言

在单片机中,USART通信是最常用也是最先去接触的串口外设,在小数据量应用中一般不需要考虑USART串口(以下简称为串口)的高负载能力,比如打印一下log,接收几个其他设备的指令或者发送几个指令控制其他设备。但是在高速的大数据量的通信场合,串口可能会承载较高的数据负载,如果不合理地进行单片机的资源利用,则有可能造成各种问题。比如使用串口接收中断接收大量的数据,频繁地进入中断,会占用太多的CPU资源。这时可能会想到【空闲中断+DMA传输完成中断】的方式接收大量数据,但是这是一个极具风险的行为,假设一下,DMA数据传输结束之后,此时CPU开始读取DMA缓存中的数据,此时又有新的数据进来,新的数据就会覆盖之前的数据导致异常。

二、如何启用串口的DMA功能

在讨论如何实现串口的高负载通信之前,我们得先明白如何启用串口的DMA通信。

DMA(DirectMemoryAccess)直接储存器访问,是一个CPU用于数据从一个地址空间到另一个地址空间的搬运组件,该过程无需CPU的干预,不占用CPU的资源,可以使单片机这种单线程CPU实现“伪多线程”。只需在数据搬运结束后通知CPU即可。

在国民技术的资料中是有串口+DMA的例程的,但是官方为了用户调试方便,例程相对简单,就是实现了两个MCU串口间的DMA通信,在开发时具有一定借鉴意义,但是不具备高负载能力,同时移植性不是很好,这里我在例程的基础上进行简化,同时例程不具备的功能也会一一展开。

1.串口+DMA发送

#defineTxBufferSize1 (countof(TxBuffer1) - 1)

#definecountof(a) (sizeof(a) / sizeof(*(a)))

USART_InitTypeUSART_InitStructure;

uint8_tTxBuffer1[20] ={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a};

首先是定义一些相关的变量,数据和结构体啥的,TxBufferSize1发送数量,TxBuffer1[20]发送的数组。

/**

*[url=home.php?mod=space&uid=247401]@brief[/url]  Configures thedifferent system clocks.

*/

voidRCC_Configuration(void)

{

/*DMA clock enable */

RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_DMA,ENABLE);

/*Enable GPIO clock */

RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB,ENABLE);

/*Enable USARTy and USARTz Clock */

RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USART1,ENABLE);

}



/**

*[url=home.php?mod=space&uid=247401]@brief[/url]  Configures thedifferent GPIO ports.

*/

voidGPIO_Configuration(void)

{

GPIO_InitTypeGPIO_InitStructure;



/*Initialize GPIO_InitStructure */

GPIO_InitStruct(&GPIO_InitStructure);



/*Configure USARTy Tx as alternate function push-pull */

GPIO_InitStructure.Pin           = GPIO_PIN_6;  

GPIO_InitStructure.GPIO_Mode     = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Alternate= GPIO_AF0_USART1;

GPIO_InitPeripheral(GPIOB,&GPIO_InitStructure);



/*Configure USARTy Rx as alternate function push-pull and pull-up */

GPIO_InitStructure.Pin           = GPIO_PIN_7;

GPIO_InitStructure.GPIO_Pull     = GPIO_Pull_Up;

GPIO_InitStructure.GPIO_Alternate= GPIO_AF0_USART1;

GPIO_InitPeripheral(GPIOB,&GPIO_InitStructure);  

}

对相关的时钟和串口的引脚进行初始化,这里是直接用的官方例程,只不过将官方例程的宏定义换成了实际的值,便于看代码,不然还需跳转,但是官方的例程这方面的可移植性会更好。

voidDMA_Configuration(void)

{

DMA_InitTypeDMA_InitStructure;



/*USARTy TX DMA1 Channel (triggered by USARTy Tx event) Config */

DMA_DeInit(DMA_CH4);

DMA_StructInit(&DMA_InitStructure);

DMA_InitStructure.PeriphAddr    = (USART1_BASE + 0x04);

DMA_InitStructure.MemAddr       = (uint32_t)TxBuffer1;

DMA_InitStructure.Direction     = DMA_DIR_PERIPH_DST;

DMA_InitStructure.BufSize       = TxBufferSize1;

DMA_InitStructure.PeriphInc     = DMA_PERIPH_INC_DISABLE;

DMA_InitStructure.DMA_MemoryInc = DMA_MEM_INC_ENABLE;

DMA_InitStructure.PeriphDataSize= DMA_PERIPH_DATA_SIZE_BYTE;

DMA_InitStructure.MemDataSize   = DMA_MemoryDataSize_Byte;

DMA_InitStructure.CircularMode  = DMA_MODE_NORMAL;

DMA_InitStructure.Priority      = DMA_PRIORITY_VERY_HIGH;

DMA_InitStructure.Mem2Mem       = DMA_M2M_DISABLE;

DMA_Init(DMA_CH4,&DMA_InitStructure);

DMA_RequestRemap(DMA_REMAP_USART1_TX,DMA, DMA_CH4, ENABLE);



}

DMA的初始化采用NORMAL模式,即只发送一次,当计数器为0时便不再搬运数据。

voidUART_Init(USART_Module* USARTx,uint32_t BaudRate)

{

/*USARTy and USARTz configuration ---------------------------*/

USART_StructInit(&USART_InitStructure);

USART_InitStructure.BaudRate           = BaudRate;

USART_InitStructure.WordLength         = USART_WL_8B;

USART_InitStructure.StopBits           = USART_STPB_1;

USART_InitStructure.Parity             = USART_PE_NO;

USART_InitStructure.HardwareFlowControl= USART_HFCTRL_NONE;

USART_InitStructure.Mode               = USART_MODE_RX | USART_MODE_TX;



/*Configure USARTy and USARTz */

USART_Init(USARTx,&USART_InitStructure);





/*Enable USARTy DMA Rx and TX request */

USART_EnableDMA(USARTx,USART_DMAREQ_RX | USART_DMAREQ_TX, ENABLE);

/*Enable the USARTy and USARTz */

USART_Enable(USARTx,ENABLE);

}

串口的初始化。

voidDMA_send(uint8_t* pBuffer,uint16_t BufferLength)

{

DMA_EnableChannel(DMA_CH4,DISABLE);

DMA_SetCurrDataCounter(DMA_CH4,BufferLength);

DMA_EnableChannel(DMA_CH4,ENABLE);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXDE) == RESET)

{



}

}

DMA的发送函数,先失能DMA通道,再重新设置传输长度,再使能DMA通道,这里是检测while是检测串口的发送完成编制位,在官方的demo中检测的是DMA的通道完成标志,这个在这里面是不可以的,因为DMA的搬运速度是远大于串口的通信速度的,如果检测DMA通道完成标志,会导致DMA已经将数据搬运到串口的数据寄存器,但是因为串口的速度不够,导致此时数据还未送出,而因为例程只循环一次,在测试例程时看不出问题,但是这里会出问题。

intmain(void)

{

/*System Clocks Configuration */

RCC_Configuration();



/*Configure the GPIO ports */

GPIO_Configuration();



/*Configure the DMA */

DMA_Configuration();



UART_Init(USART1,115200);



while(1)

{

DMA_send(TxBuffer1,20);

Delay(10000000);

}

}

最后在主函数调用各初始化函数,在while(1)中循环发送便可实现最简单的串口+DMA发送。

“基于N32G435的高负载串口通信"

2.串口+DMA接收

在上面发送的基础上我们加上DMA的接收功能,此处需要解释一下下面的操作:为了对应手册,上面的串口发送DMA通道原来是CH4,我下面全部改成CH1。

uint8_tRxBuffer1[20];

定义一个数组用于接收串口数据。

USART_ConfigInt(USARTx,USART_INT_IDLEF, ENABLE);

添加串口中断定义。

voidNVIC_Configuration(void)

{

NVIC_InitTypeNVIC_InitStructure;



/*Enable the USARTz Interrupt */

NVIC_InitStructure.NVIC_IRQChannel= USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0;

NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

添加NVIC配置。

voidDMA_Configuration(void)

{

DMA_InitTypeDMA_InitStructure;



/*USARTy TX DMA1 Channel (triggered by USARTy Tx event) Config */

DMA_DeInit(DMA_CH1);

DMA_StructInit(&DMA_InitStructure);

DMA_InitStructure.PeriphAddr= (USART1_BASE + 0x04);

DMA_InitStructure.MemAddr= (uint32_t)TxBuffer1;

DMA_InitStructure.Direction= DMA_DIR_PERIPH_DST;

DMA_InitStructure.BufSize= TxBufferSize1;

DMA_InitStructure.PeriphInc= DMA_PERIPH_INC_DISABLE;

DMA_InitStructure.DMA_MemoryInc= DMA_MEM_INC_ENABLE;

DMA_InitStructure.PeriphDataSize= DMA_PERIPH_DATA_SIZE_BYTE;

DMA_InitStructure.MemDataSize= DMA_MemoryDataSize_Byte;

DMA_InitStructure.CircularMode= DMA_MODE_NORMAL;

DMA_InitStructure.Priority= DMA_PRIORITY_VERY_HIGH;

DMA_InitStructure.Mem2Mem= DMA_M2M_DISABLE;

DMA_Init(DMA_CH1,&DMA_InitStructure);

DMA_RequestRemap(DMA_REMAP_USART1_TX,DMA, DMA_CH1, ENABLE);



DMA_DeInit(DMA_CH2);

DMA_InitStructure.PeriphAddr= (USART1_BASE + 0x04);

DMA_InitStructure.MemAddr= (uint32_t)RxBuffer1;

DMA_InitStructure.Direction= DMA_DIR_PERIPH_SRC;

DMA_InitStructure.BufSize= TxBufferSize1;

DMA_Init(DMA_CH2,&DMA_InitStructure);

DMA_RequestRemap(DMA_REMAP_USART1_RX,DMA, DMA_CH2, ENABLE);

}

添加DMA的接收,并将通道设置为CH2。

voidDMA_Revice(uint16_t BufferLength)

{

DMA_EnableChannel(DMA_CH2,DISABLE);

DMA_SetCurrDataCounter(DMA_CH2,BufferLength);

DMA_EnableChannel(DMA_CH2,ENABLE);



}

添加DMA接收函数

voidUSART1_IRQHandler(void)

{

if(USART_GetIntStatus(USART1, USART_INT_IDLEF) != RESET)

{

/*软件先读USART_STS,再读USART_DAT清除空闲中断标志。*/

USART1->STS;

USART1->DAT;

for(inti=0;i<20;i++)

{

TxBuffer1[i]= RxBuffer1[i];



}

DMA_send(20);

DMA_Revice(20);



}

}

添加串口中断函数,在串口中断函数中将接收的数据传给DMA发送数组,再通过DMA的方式发送出来用于校验结果。

“基于N32G435的高负载串口通信"

通过串口助手可观测数据正确。至此,常见的串口+DMA的发送与接收完成。后文将实现高负载的通信。

三、高负载情况下的DMA如何实现

在串口数据量较大时,一般使用双BUF,很多单片机有硬件双缓冲,DMA的目标储存区域有两个,当一次完整的数据传输结束后,也就是counter值变为0时,DMA会自动将数据指向另一块区域。这样用户就有时间去处理刚存满的buf,而不会被覆盖。就是“乒乓缓存”。

普通DMA

“基于N32G435的高负载串口通信"

DMA双缓冲

“基于N32G435的高负载串口通信"

大致流程如下:

1.串口有数据到来,DMA现将数据储存在内存1,完成后通知CPU过来处理数据。

2.此时DMA不停下,开始将后续的数据搬运到内存2。

3.内存2的数据搬运完成,通知CPU开始处理内存2中的数据。

4.如果数据传输还未结束,此时DMA会将数据储存在内存1。如此循环,直至没有数据到来。

但是遗憾的是N32G435这块芯片不具备双缓冲模式,那么我们可以主动控制DMA跳转内存区域。利用“传输过半中断”来模拟双缓冲模式。

大致流程如下:

1.DMA完成搬运一半的数据时,产生一个传输过半中断,此时我们让CPU来处理上一半数据。

2.DMA数据搬运未停止,此时继续搬运后一半数据,此操作不会影响前面一半的数据处理。

3.DMA数据搬运完,触发传输完成中断,这时CPU可以处理后半数据。

4.如果数据传输还未结束,DMA继续将数据向前半搬运,如此循环。

“基于N32G435的高负载串口通信"

代码讲解如下:

以下代码完整流程如下:

1.配置串口波特率2.5M,DMA的BufSize设置为40,开启传输过半中断,传输完成中断,串口空闲中断。

2.启动DMA接收。

3.通过串口助手发送80个数据到串口。

4.当DMA接收数组接收到20个数据触发传输过半中断,跳转中断函数将20个数据存放到数组中。

5.此时DMA仍在运行,但是数据存放在DMA接收数组的后20个地址空间。

6.当DMA接收数组填满,触发DMA传输完成中断,跳转中断函数将后20个数据保存,此时DMA一共搬运了40个数据。

7.DMA继续搬运数据到接收数组里,此时会覆盖之前的前二十个数据,跳转到步骤4.

8.接收完80个数据,此时触发串口空闲中断,将接收到的数据打印出来。

在上面代码基础上做如下操作:

1.将DMACH2通道设置为循环模式,测试阶段将BufSize设置为40,开启传输过半中断和传输完成中断。同时为了测试高速场景,串口波特率设置为2.5M:

DMA_DeInit(DMA_CH2);

DMA_InitStructure.PeriphAddr= (USART1_BASE + 0x04);

DMA_InitStructure.MemAddr= (uint32_t)buffer;

DMA_InitStructure.Direction= DMA_DIR_PERIPH_SRC;

DMA_InitStructure.BufSize= 40;

DMA_InitStructure.CircularMode= DMA_MODE_CIRCULAR;

DMA_Init(DMA_CH2,&DMA_InitStructure);

DMA_RequestRemap(DMA_REMAP_USART1_RX,DMA, DMA_CH2, ENABLE);



DMA_ConfigInt(DMA_CH2,DMA_INT_HTX,ENABLE);//半传输中断

DMA_ConfigInt(DMA_CH2,DMA_INT_TXC,ENABLE);//传输完成中断

DMA_ClearFlag(DMA_FLAG_HT2,DMA);//清除标志位,避免第一次传输出错

DMA_ClearFlag(DMA_FLAG_TC2,DMA);

DMA_ClrIntPendingBit(DMA_INT_HTX2,DMA);

DMA_ClrIntPendingBit(DMA_INT_TXC2,DMA);

2.NVIC设置DMA通道中断

voidNVIC_Configuration(void)

{

NVIC_InitTypeNVIC_InitStructure;



/*Enable the USARTz Interrupt */

NVIC_InitStructure.NVIC_IRQChannel= USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;

NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;

NVIC_Init(&NVIC_InitStructure);



NVIC_InitStructure.NVIC_IRQChannel= DMA_Channel2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0;

NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;

NVIC_Init(&NVIC_InitStructure);



}

3.添加DMA的CH2中断函数,num为全局变量,目的是将所有的数据保存进buf数组:

voidDMA_Channel2_IRQHandler(void)

{

//传输半满

if(DMA_GetIntStatus(DMA_INT_HTX2,DMA)== SET)

{

DMA_ClrIntPendingBit(DMA_INT_HTX2,DMA);

DMA_ClearFlag(DMA_FLAG_HT2,DMA);

for(inti=0;i<20;i++)

{

buf[num]= buffer[i];

num++;

}

}

//传输满

if(DMA_GetIntStatus(DMA_INT_TXC2,DMA)== SET)

{

DMA_ClrIntPendingBit(DMA_INT_TXC2,DMA);

DMA_ClearFlag(DMA_FLAG_TC2,DMA);

for(inti=20;i<40;i++)

{

buf[num]= buffer[i];

num++;

}

}

}

4.在串口空闲中断中将收到的数据全部打印出来。

voidUSART1_IRQHandler(void)

{

if(USART_GetIntStatus(USART1, USART_INT_IDLEF) != RESET)

{

/*软件先读USART_STS,再读USART_DAT清除空闲中断标志。*/

USART1->STS;

USART1->DAT;

for(inti=0;i<80;i++)

{

TxBuffer1[i]= buf[i];



}

DMA_send(80);

num=0;

}

}

5.测试结果如下,在2.5M波特率的情况下保持数据完整。

“基于N32G435的高负载串口通信"

写在最后

这次主要讨论了一种高负载情况下如何缓解CPU压力的方法,所言所写不尽完善,例如不定数据接收,就可以通过DMA_GetCurrDataCounter(DMA_CH2);函数进行传输数据的统计计算,这点大家可以自由发挥,现实可能遇到的问题是多种多样的,主要在于关键能力的拓展。更多的还需要根据实际情况灵活配置。

阅读原文:https://bbs.21ic.com/icview-3209220-1-1.html

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

围观 191

8月16日至17日,2022国际集成电路展览会暨研讨会(IIC2022)在南京国际博览中心盛大召开,同期,2022年度中国IC设计成就奖隆重揭晓,国民技术N32G435荣获2022中国IC设计成就奖之年度最佳MCU!

“由AspenCore主办的IIC是中国最具影响力的系统设计盛会,汇聚了业界年度创新产品,吸引了全球半导体领先科技企业及电子行业研发工程师的广泛参与。中国IC设计成就奖之年度最佳MCU的评选旨在全面盘点中国半导体产业表现最出色的MCU产品,以表彰其在过去一年取得的重大成绩。"
由AspenCore主办的IIC是中国最具影响力的系统设计盛会,汇聚了业界年度创新产品,吸引了全球半导体领先科技企业及电子行业研发工程师的广泛参与。中国IC设计成就奖之年度最佳MCU的评选旨在全面盘点中国半导体产业表现最出色的MCU产品,以表彰其在过去一年取得的重大成绩。

在众多参评国产MCU产品中,国民技术N32G435通用MCU产品脱颖而出,斩获年度最佳MCU荣誉。获奖的N32G435芯片设计采用了业内先进的40nm工艺制程,进一步提高产品集成度、可靠性、提升运行性能并降低功耗,产品兼具通用性与安全性,与行业深入融合,广泛应用于物联网、工业联网及工业控制、智能家居家电、消费电子、电机驱动、电池及能源管理、医疗电子、汽车电子、安防等领域。

“国民技术N32G435荣获2022中国IC设计成就奖之年度最佳MCU!"

在展会同期举办的“MCU技术应用论坛”上,国民技术市场战略部市场总监刘亚明做了题为“创新引领未来,国民技术N32系列通用MCU加速工业应用创新!”的主题演讲,与行业专家、工程师和产业界朋友一起共同探讨工业领域在高性能、安全性、低功耗、广连接等方面的应用创新需求与行业痛点,以及面向工业应用的MCU技术发展趋势,并分享了国民技术MCU产品路线、产品生态与增强工业级创新应用案例。

领先技术优势

“国民技术N32G435荣获2022中国IC设计成就奖之年度最佳MCU!"

国民技术持续创新,提供全场景、广覆盖、高性能、安全可靠的增强工业级MCU产品,覆盖数字能源、工业电器、工业机器人、工业物联、工业打印机商显、智能楼宇、交通等广泛领域。

N32系列MCU现已形成超过16个产品序列,100多款量产型号,其中N32G457、N32G455、N32G452、N32G435、N32G430、N32L4x以及N32WB452、N32WB031等系列MCU在工业领域获得了突破发展。

N32系列MCU具备如下多项领先技术优势,助力工业应用创新:

● 高性能架构技术提升处理性能:采用高工作主频,指令无等待、高带宽、高仲裁效率,μs级启动。

● 低功耗技术降低能耗:动态能耗低至60μA/mA,STOP模式功耗小于1.5μA,PD模式功耗小于0.5μA。

● 数模混合设计架构技术实现高集成度:具备高速ADC(5Msps),高增益带宽OPA,低功耗及高可靠性AFE,高精度高可靠性时钟。

● 硬件级安全性:具有密码算法高速硬件加速引擎及硬件安全防护能力,提供固件Security BOOT/FOTA/存储/认证安全解决方案。

● 高可靠性技术:采用增强工业级温度-40~105°,ESD:4KV和EFT:4KV,高可靠IO接口等设计,可通过汽车电子可靠性考核。

“国民技术N32G435荣获2022中国IC设计成就奖之年度最佳MCU!"

本届IIC展会,国民技术带来了MCU创新产品和丰富的行业应用,除了MCU产品及其全功能开发板,还包括汽车BMS、逆变器等BMS能源管理应用,车载娱乐主控、360全景行驶记录仪、新能源汽车充电枪、OBD等汽车电子应用,PLC、工业缝纫机、变频器等工业控制应用,工业网关、T-Box、无磁智能水表等物联网应用,冰箱控制板、空调压缩机开发板等家电应用,以及TWS耳机、智能门锁等消费电子应用。

凭借在产品技术创新、品质管控、稳定供货与本土化服务等方面的领先优势所打造的工业应用核心器件全面支撑能力,国民技术正与更多行业伙伴携手,进一步扩大合作生态圈,共同推进行业应用创新与发展。

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

围观 57

11月17日,由全球电子科技领域专业媒体电子发烧友主办的“2021电机控制先进技术研讨会”在深圳隆重召开。会议同期,“2021年BLDC电机技术市场表现奖”年度评选活动揭晓,国民技术N32通用MCU产品家族中的N32G435系列高性价比电机主控芯片荣获“2021BLDC电机控制器十大主控芯片”奖。

“国民技术N32G435

该奖项是从过去一年全球BLDC电机控制器量产MCU中,评选出业界享有一定知名度和美誉度,为广大客户所接受,出货量达到一定数量,并能够稳定供货,与市场上的竞品相比具有明显的指标优势的电机控制MCU产品。此次获奖是市场对国民技术的电机控制技术和产品实力的极大认可。

“国民技术N32G435

获得“2021BLDC电机控制器十大主控芯片”奖的N32G435系列芯片是业内首个内置硬件密码加速引擎并支持多国国密/国际算法的32位通用MCU产品,采用多电源技术和动态电压调整技术,待机功率低至2.5μA @3.3V,动态功耗低至60μA/MHz,单颗芯片集成多种模拟外设、电源管理电路、数模及数模电路,大大降低方案BOM成本,非常适合于各种BLDC电机应用,例如无绳高速吸尘器、高速风机、按摩仪等智能家居家电设备,以及电梯控制、变频器、汽车升窗器等工业电机应用。目前该系列MCU已经大批量应用在各种电机应用场景上,凭借其高性价比和可靠性成为众多厂商的优先选择。

电机控制先进技术分享

在研讨会上,国民技术解决方案经理舒晓华与到会专家、工程师、业界人士进行了“基于N32系列通用MCU的电控解决方案”的主题分享,介绍了国民技术在电机控制领域领先的芯片技术、算法技术和方案技术,以及优秀的电控解决方案。

“国民技术N32G435

在芯片技术方面,国民技术已经取得规模应用的三大系列电机MCU芯片产品,分别是N32G455系列高性能多FOC电机应用微控制器芯片,N32G030系列低成本电机应用微控制器芯片,还有此次获奖的N32G435系列高性价比电机应用微控制器芯片。此外,国民技术将加快新产品布局与产品迭代,计划推出N32G00x系列与N32G43x系列电控MCU,满足更高性价比市场需求。

在电控算法方面,国民技术除了提供基本驱动库,还持续提供行业领先的电机进阶控制算法与系统控制,如电机参数自识别、高频注入、高性能无感算法、高效的多电机控制算法,满足客户的不同应用需求,助力电机变频控制更加舒适与高效。

“国民技术N32G435

在方案技术方面,国民技术基于MCU高处理性能、丰富的模拟外设和全面的安全特性等优势特点,结合电机参数自动识别、无感观测器、高精度位置传感器等先进的电控算法技术,能全面支持有刷直流、步进、直流无刷、永磁同步、交流感应等多种类型电机,提供覆盖消费电子、绿色出行、家居家电、工业控制、汽车电子等多种电机控制行业应用解决方案。

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

围观 143
订阅 RSS - N32G435