MCU

近日,经过五个月的认证,中微半导(688380.SH)车规级MCU BAT32A237系列通过权威第三方测试认证机构SGS公司 AEC-Q100 Grade 1 车规级可靠性认证。该认证的通过,标志着中微半导车规级MCU BAT32A237系列产品的性能与可靠性已跻身国内最高规格汽车芯片之一,并获国际安全认证与肯定。

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

BAT32A237是中微半导自主研发的车规级高品质32位MCU,芯片基于Arm Cortex®-M0+内核,工作频率48 MHz,配备128KB Flash,12KB SRAM和1.5KB专用 Data Flash,内置大容量存储空间以支撑汽车高效运算需求。工作温度-40℃~125℃,适用汽车复杂运行工况和恶劣环境。BAT32A237芯片已在客户端批量商用,其应用覆盖多种汽车车载电子控制模块,如冷暖空调、传感器 、氛围灯、阅读灯、转向控制、矩阵大灯、车窗 、雷达、T-BOX、充电接口、车载逆变、水泵及风机等。

中微半导旨在为汽车电子领域客户提供高性能、高可靠、高安全性标准控制芯片,以完善系统的设计开发流程和质量管控综合实力,建立高标准的品质保证体系。2022年中微半导联合SGS共同启动ISO 26262汽车功能安全ASIL D流程认证项目,深入布局汽车电子领域,并围绕车规微控制器、专用微控制器及车规模拟等产品持续演进,加强核心技术攻关,以期推动国产车规芯片全面与国际标准接轨,构建稳健、创新、智慧的中国车规“芯”生态。

来源:中微半导

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

围观 7

本文针对CW32L083系列MCU,同系列产品亦可参考。

ARM® Cortex®-M0+ 内核的嵌套向量中断控制器 (NVIC),用于管理中断和异常。NVIC和处理器内核紧密相连,可以实现低延迟的异常和中断处理。处理器支持最多32个中断请求 (IRQ)输入,支持多个内部异常。

主要特性 

• 16个内部异常 

• 32个可屏蔽外部中断 

• 4个可编程的优先级 

• 低延时的异常和中断处理

• 支持中断嵌套 

• 中断向量表重映射

本文介绍了处理器的 32 个外部中断请求(IRQ0 ~ IRQ31),处理器内部异常的具体情况请参考“ARM® Cortex®-M0+Technical Reference Manual”与“ARM® v6-M Architecture Reference Manual”。

中断优先级 

外部中断可设置 4 级优先级,最高优先级为“0”,最低优先级为“3”,默认值为“0”。当处理器正在执行一个中断处理程序时,如果出现一个更高优先级的中断,那么这个中断就被抢占。如果出现的中断的优先级和正在处理的中断的优先级相同或更低,这个中断就不会被抢占,但是新中断的状态就变为挂起。如果多个挂起的中断具有相同的优先级,中断编号越小的挂起中断优先处理。例如,如果IRQ[0]和IRQ[1]均挂起时,并且两者的优先级相同,那么先处理 IRQ[0]。

中断向量表

ARM® Cortex®-M0+ 响应中断时,处理器自动从存储器的中断向量表中取出中断服务程序 ( ISR )的起始地址。中断向量表包括主栈指针(MSP)的初始值,内部异常和外部中断的服务程序入口地址。每个中断向量占用1个字(4 字节),中断向量的存储地址为向量编号乘以4,下面的是CW32L083的中断向量表。

1.png

2.png

CW32L083由于部分外设的中断复用一个IRQ中断源,在中断服务程序中应先检查中断标志位,以确定产生中断的外设。NMI在CW32L083中未使用。HSE 、LSE 时钟信号起振失败和 LSI、LSE、HSIOSC、HSE、PLL 时钟信号稳定对应 RCC 全局中断。HSE 或 LSE 时钟信号在运行中失效对应 FAULT 中断。

中断寄存器的相关配置

1.中断的使能、挂起、清除挂起

ARM® Cortex-M0+处理器支持最多32个外部中断源,分别对应中断使能设置寄存器NIVC_ISER的32个使能位,和中断使能清除寄存器NVIC_ICER的32个禁止位。将使能位置1,允许中断;将禁止位置1,禁止中断。上文中NVIC中断使能仅针对处理器 NVIC而言,外设的中断是否使能,还受相应外设的中断控制寄存器控制。

而在中断发生的时候,如果系统正在处理相同优先级的或者更高优先级的中断,系统将不会立马的处理这个中断,而是将这个中断的状态设置为挂起,保存在中断挂起状态寄存器中,在处理器未进去此中断处理之前,如果没有手动清除挂起状态,这个状态会一直有效,等处理器进入中断处理的时候,硬件会自动清除相应的中断挂起状态。也可以通过设置中断挂起设置寄存器NVIC_ISPR的对应位,将此中断的状态设置为挂起状态,如果系统没有正在处理与之相同优先级或更高优先级的中断,此中断将被立即响应并处理。可以通过设置中断挂起清除寄存器NVIC_ICPR的对应位,将此中断的状态设置为挂起清除状态。

2.中断的优先级、中断屏蔽

中断优先级控制寄存器NVIC_IPR0 ~ NVIC_IPR7,用于设置IRQ0~IRQ31 的中断优先级,每个中断源使用8位,在CW32L083中仅使用了高两位,最多可设置4个中断优先级。

在某些特殊场合,需要禁止所有中断,可以使用中断屏蔽寄存器PRIMASK实现。PRIMASK只有最低1位有效,将此位置1,除了NMI和硬件错误异常之外的所有外部中断和异常都被禁止;清0后,允许响应中断和异常。该位复位后默认为0。

按键中断检测实验分析

以CW32L083评估板为例,按键连接至CW32L083的PA4、PA5端口,LED连接至PC2、PC3接口。按键按下将产生中断,在中断服务程序中进行LED翻转。

int32_t main(void)

{

     GPIO_InitTypeDef GPIO_InitStruct = {0};

     __RCC_GPIOA_CLK_ENABLE();    // 使能GPIOA的配置时钟

     __RCC_GPIOC_CLK_ENABLE();    // 使能GPIOC的配置时钟

     //按键GPIO初始化

     GPIO_InitStruct.IT = GPIO_IT_RISING | GPIO_IT_FALLING;

     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

     GPIO_InitStruct.Pins =GPIO_PIN_4 | GPIO_PIN_5;

     GPIO_Init(CW_GPIOA, &GPIO_InitStruct);

     //LED的GPIO初始化

     GPIO_InitStruct.IT = GPIO_IT_NONE;

     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

     GPIO_InitStruct.Pins =GPIO_PIN_2 | GPIO_PIN_3;

     GPIO_Init(CW_GPIOC, &GPIO_InitStruct);

     //配置中断滤波

     GPIO_ConfigFilter(CW_GPIOA, bv4, GPIO_FLTCLK_RC150K);

     //清除PA4、PA5中断标志并使能NVIC

     GPIOA_INTFLAG_CLR(bv4| bv5);

     NVIC_EnableIRQ(GPIOA_IRQn);

     __enable_irq();

     //----------------------------------------------------------------------

     //相关程序在中断服务GPIOA_IRQHandler中进行处理

     while (1)

     {

     }

}

//GPIOA的中断服务函数

void GPIOA_IRQHandlerCallback(void)

{

    if (CW_GPIOA->ISR_f.PIN4)

    {
       GPIOA_INTFLAG_CLR(bv4);清除PA04的中断标志位

       PC03_TOG();
     }

    if (CW_GPIOA->ISR_f.PIN5)

    {
       GPIOA_INTFLAG_CLR(bv5);//清除PA05的中断标志位

       PC02_TOG();
    }
}

由上面代码可以看到,如果按下KEY1(PA04),LED1(PC03)的状态会翻转,如果松开按键,LED1又会翻转一次。在每次执行中断函数的时候,需要清除中断标志位即GPIOA_INTFLAG_CLR(bv4)。

来源:武汉芯源半导体

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

围观 5

作者:CK Phua

1.png

物联网的不断扩展,推动了新一轮大规模的智能化升级浪潮。智能化正在从云端向具有机器学习(ML)能力的边缘设备转移,这些设备能够在本地处理传感器数据流,与基于云的AI系统相比,延迟更低,安全性更高,提供更好的用户隐私保护。为了将边缘设备从单纯的数据采集转换为具有自主操作能力的边缘智能,开发人员需要具有多核性能并内置加速器的新型低功耗微控制器(MCU)来执行ML任务,同时最小化功耗预算以保持节能的系统设计。

面向未来的边缘智能,恩智浦最近发布了MCX产品组合,该平台可提供可扩展性能、并行性、安全性、高能效和丰富外设,针对广泛的物联网、边缘ML和工业应用场景进行了优化。MCX产品组合结合了恩智浦LPC和Kinetis MCU系列的DNA,为智能互联设备重新定义下一代通用MCU。

在MCX产品组合下,恩智浦首先推出的是MCX N高性能系列,专为安全、智能的边缘应用而设计。N系列中首先登场的是MCX N94x和MCX N54x MCU系列,具有高效的多核架构、内置EdgeLock®安全子系统和用于实时推理的专用内置神经处理单元(NPU)。MCX N94x系列适用于工业应用,具有更广泛的模拟和电机控制外设,而MCX N54x系列针对消费和物联网应用,集成了众多外设,包括带PHY的高速USB,SD和智能卡接口等。

立即浏览。恩智浦利用全新多核MCX N系列微控制器,寻求边缘处理的新突破。

150MHzMCU能带来什么?答案远超想象

使用低功耗的150MHz MCU实现多任务处理性能、高级神经网络和ML功能听起来似乎非常困难,但MCX N94x和MCX N54x并不是普通的MCU,而是多核设计和丰富外设的伟大结晶。

MCX N94x和MCX N54x基于高性能双核Arm® Cortex®-M33,运行频率高达150 MHz,片内集成高达2MB的闪存,可配置的带ECC检测的RAM、智能DMA、DSP协处理器、安全子系统和恩智浦设计的一体化NPU。开发人员可以使用这些内核和加速器的任意组合来完成具体任务,而无需提高MCU的时钟速度或增加功耗。

2.jpg

MCX N94x框图

片内多种加速器使MCX N系列MCU能够以低功耗预算高效地处理多个复杂任务,同时保证系统的安全性。多核设计通过智能、高效地将工作负载分配到模拟和数字外设,提高了系统性能并降低了功耗。因此,MCU的工作电流消耗小于45μA/MHz,如果启用实时时钟(RTC)和保持8KB SRAM,掉电模式下消耗的电流不到2.5μA,如果在启用RTC和8KB SRAM的深度掉电模式下,消耗的电流不到1μA。

双核架构将功能全面的Cortex-M33内核与M33从核相结合来管理控制功能,使开发人员能够并行运行应用程序,或根据需要关闭单个内核来降低总体功耗。例如,在物联网设备的安全无线(OTA)更新期间,主M33内核可以处理系统安全,而第二个从核执行控制功能。

随着MCX N系列发布,恩智浦自主研发的NPU初次亮相,以实现边缘的高性能和低功耗智能。与只使用CPU内核相比,内置NPU的ML吞吐量提高了30倍。

3.png

NPU的相对加速度

如此的ML性能表现在MCU领域堪称顶级,使得TinyML在资源和功率受限的边缘设备上展现超凡的算力。突破性能边界,畅想如下的应用可能,例如实现复杂的深度学习模型、为门禁控制添加人脸和语音识别功能、为家庭安全系统创建电池供电的玻璃破碎探测器、为电机控制预测维护开发振动传感器和设计配备生物传感器的智能可穿戴设备等等。

设计灵活安全

MCX N系列具有丰富的外设,就像开发人员的百宝箱。高精度混合信号模拟外设具备更强的自主性,可以减少CPU中断并节省电力。例如,ADC具备智能化设计,可以持续收集数据并在本地对存储的数据进行分配。MCU的两个16位ADC都可以用作两个单端输入ADC(有效地用作四个ADC)或用作单个差分输入ADC。

工业级通信外设包括以太网、CAN-FD、BLDC/PMSM电机控制支持、高速和全速USB以及内置传感器接口(MIPI-I3C、I2C、UART和SPI)。为了提高灵活性,恩智浦的低功耗Flexcomm接口允许十个串行外设(包括SPI、UART和I2C)任意组合。

MCX N系列MCU遵循恩智浦设计确保安全方案构建,集成了EdgeLock®安全子系统,可以安全启动不可变的信任根、实现硬件加速加密、主动和被动入侵检测以及电压和温度篡改检测。这种一流的安全架构为现场更新和在线传输提供支持,并防止远程原始设计制造商(ODM)过度生产。

MCUXpressoeIQ®软件快速入门

为了帮助简化和加速系统开发,MCX N系列MCU由恩智浦广受欢迎的MCUXpresso软件套件(包括用于简单设备配置和安全编程的工具)支持。开发人员可以选择使用功能全面的MCUXpresso IDE或IAR和Keil的IDE。恩智浦为驱动程序和中间件提供了大量示例并支持一系列RTOS选项,恩智浦的合作伙伴生态体系也提供了一系列兼容中间件,这样可以实现大量应用程序的快速开发。恩智浦的eIQ®ML软件开发环境还提供了易于使用的工具来训练和支持运行在内置NPU上的ML模型。

进一步探索MCX N系列

MCX N系列为具备低功耗、高性能要求的边缘人工智能提供了新的可能性。详细了解MCX N94x和MCX N54 MCU,或联系恩智浦全球销售人员

作者:

4.jpg

CK Phua

微控制器产品经理

CK于1993年加入飞利浦半导体公司,曾担任质量、应用工程、产品工程和技术营销等多个职位。继飞利浦之后,CK在2012年加入飞思卡尔,飞思卡尔合并后加入恩智浦。CK现任边缘处理业务部微控制器的产品经理。

围观 5

EEPROM(Electrically Erasable Programmable readonly memory)是指带电可编程只读存储器。是一种掉电后数据不丢失的存储芯片。

中颖Flash型MCU都集成有EEPROM,EEPROM用来存放用户数据。EEROM大小可以通过option(代码选项)选择0~4K不等。EEPROM按照扇区进行划分,每个扇区的大小512字节(较早的产品,每个扇区大小256字节),最多支持8个扇区。

中颖的EEPROM编程/擦除次数:至少100000次

中颖的EEPROM数据保存年限:至少10年

中颖EEPROM的操作原则:

1 必须关闭所有中断

如果在操作EEPROM期间,不关闭中断,可能会导致程序跑飞或者其它异常情况;中颖MCU要求对于EEPROM的擦除和编程,需要按照规定关闭所有中断(EA=0),等到编程完成后再打开中断。

2 如何访问EEPROM

中颖芯片对于EEPROM的读、擦和写都是通过寄存器FLASHCON的FAC位置1来操作。当FAC=0时,MOVC指令或者SSP功能访问Main Block区域;当FAC=1时,MOVC指令或者SSP功能访问类EEPROM区域或信息存储区。

1.png

3 操作EEPROM前,清WDT

在对EEPROM的操作前,清WDT,保证操作期间不溢出

4  抗干扰

同时,为了抗干扰,防止误操作,EEPROM编程可以参考如下例程:

uchar ssp_flag;

voidEEPromSectorErase(UCHAR nAddrH)// 扇区擦除
{                                                                                                    

  ssp_flag= 0xA5;

  _push_(IEN0);//中断控制压栈

  IEN0&=0x7F;//关总中断   

  FLASHCON = 0x01;  //访问EEPROM区

  RSTSTAT = 0;    //清WDT                                                      

  XPAGE= nAddrH<<1 ;                                                  

  IB_CON1   = 0xE6;  

  IB_CON2   = 0x05;

  IB_CON3   = 0x0A;

  IB_CON4   = 0x09;     

  if(ssp_flag!=0xA5)//增加flag判断,增强抗干扰

   goto Error;

  IB_CON5   = 0x06;

  _nop_();                              

  _nop_();

  _nop_();  

 Error:

 ssp_flag= 0;

 IB_CON1= 0x00;

 IB_CON2= 0x00;

 IB_CON3= 0x00;

 IB_CON4= 0x00;

 IB_CON5= 0x00;
            
  FLASHCON= 0x00;//切回FLASH区

 _pop_(IEN0);//恢复总中断

}

 voidEEPromByteProgram(UCHAR nAddrH,UCHAR nAddrL, UCHAR nData)  // 扇区编程

{

  ssp_flag= 0x5A;

  _push_(IEN0); //中断控制压栈

  IEN0&=0x7F;//关总中断

  FLASHCON= 0x01; //访问EEPROM区

  RSTSTAT = 0;    //清WDT

  XPAGE= nAddrH;                                                  

  IB_OFFSET= nAddrL;

  IB_DATA= nData;  // 烧写内容

  IB_CON1   = 0x6E;

  IB_CON2   = 0x05;

  IB_CON3   = 0x0A;

  IB_CON4   = 0x09;

  if(ssp_flag!=0x5A) //增加flag判断,增强抗干扰

  goto Error;
                       
  IB_CON5   = 0x06;
             
  _nop_();

  _nop_();

  _nop_();

  _nop_();

 Error:

 ssp_flag= 0;

 IB_CON1= 0x00;

 IB_CON2= 0x00;

 IB_CON3= 0x00;

 IB_CON4= 0x00;

 IB_CON5= 0x00;

 FLASHCON= 0x00; //切回FLASH区

 _pop_(IEN0); //恢复总中断

来源:中颖电子(作者:丁晓明)

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

围观 8

太阳能的使用越来越普及,太阳能控制器使用了单片机和专业软件,实现了智能控制,利用蓄电池放电率特性修正的准确放电控制。以下为TM32F103K7应用于太阳能控制器的原理框图:

1.jpg

如上所示,TM32F103K7是海速芯(原“十速”)推出的32位MCU,该32位MCU采用高性能的ARM Cortex-M3内核,频率72MHz,最高集成128Kbytes flash和20Kbytes SRAM,并提供丰富的通信接口(I2C、SPI/USART)和7个定时器,具备可靠性高、精度高、功耗低等特点。

本文提到的太阳能控制器方案中,所有控制全部采用工业级芯片,能在寒冷、高温、潮湿环境运行自如。同时使用了晶振定时控制,定时控制精确;取消了电位器调整控制设定点,而利用了E方存储器记录各工作控制点,使设置数字化,消除了因电位器震动偏位、温漂等。具有过充、过放、短路保护、过载保护、独特的防反接保护等全自动控制等功能。

TM32F103K7应用于太阳能控制器方案具备如下优势:

  1. 支持睡眠、停机和待机等低功耗模式;

  2. 2.支持2个12位ADC,1μs转换时间(多达16个输入通道),无需另外配置AD芯片;

  3. 支持PWM定时器功能,用于电机控制;

  4. 工作温度范围-40℃~85℃,可工作在室外环境中;

  5. 支持37个I/O ,可以配置多个外部控制;

  6. 具备7个定时器。

此外,海速芯TM32F103K7与STM32F103C8T6封装与引脚功能一样,因此TM32F103K7不仅能应用在太阳能控制器中,也可以替代STM32F103C8T6。

来源:国芯思辰

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

围观 7
  • 集性能、集成、网络、信息安全和功能安全于一体,满足电动汽车牵引逆变器控制新需求

  • 在新一代区域汽车架构中,通过时间敏感网络(TSN)以太网支持边缘智能驱动应用

  • 搭载ASIL D解码软件和模拟外设集成,以降低系统成本

恩智浦半导体(NXP Semiconductors N.V.,纳斯达克股票代码:NXPI)宣布推出全新S32K39系列汽车微控制器(MCU),该系列MCU针对电动汽车(EV)控制应用进行了优化。新一代S32K39 MCU的高速、高分辨率控制可提高能效,在延长行驶里程的同时,提供更顺畅的电动汽车驾驶体验,满足未来电气化需求。S32K39 MCU的网络、信息安全和功能安全超越传统汽车MCU,可满足区域汽车E/E架构和软件定义汽车需求。借助新的MCU,恩智浦的电池管理系统(BMS)和电动汽车功能逆变器能够提供适用于下一代电动汽车的端到端解决方案。

微信图片_20221128133149.png

S32K39高性能MCU为实现牵引逆变器的智能、高精度控制而进行了优化,可将电动汽车电池的直流电转换为交流电,驱动现代化牵引电机。该系列MCU既支持传统的绝缘栅极双极性晶体管(IGBT),也支持新推出的碳化硅(SiC)和氮化镓(GaN)技术。S32K39高性能MCU通过双200 kHz控制环路提高能效,逆变器体积更小、更轻、更高效,行驶里程更长。该系列可控制六相电机,提高功率密度和容错性,保持长期高可靠性。此外,该系列搭载安全ASIL D软解码以及集成正弦波生成器与Σ-ΔADC,消除了对外部组件的需要,从而降低系统成本。与恩智浦S32E实时处理器结合使用时,S32K39还允许灵活地控制多达4个牵引逆变器,并且能够为采用该配置的4轮驱动电动汽车实施高级牵引功能。

S32K39系列采用多功能架构,因此除了适用于牵引逆变器控制,也适合许多其他电动汽车应用,包括电池管理(BMS)、车载充电(OBC)和DC/DC转换。此外,还支持硬件隔离、时间敏感网络和高级加密,已为支持软件定义汽车和区域架构做好充分准备。

恩智浦半导体汽车控制和电气化部门总监Allan Mcauslin表示:“S32K39 MCU集多种先进技术于一体,为汽车厂商提供巨大的灵活性和可扩展性,加速电动汽车开发及电气化新技术部署。凭借解决方案互补的全面产品组合,恩智浦引领行业发展趋势,为客户提供更好的电动汽车驾驶体验,同时加速推进电动汽车革命。”

关于S32K39

  • S32K系列中性能最出众的产品,搭载4个工作频率为320 MHzArm® Cortex®-M7内核,配置为一个锁步核和两个分立核

  • 高达6 MB闪存和800 KB SRAM

  • 两个电机控制协处理器和NanoEdge™高分辨率脉宽调制(PWM),实现更高性能和精度控制

  • 安全ASIL D软件分解器消除对外部组件的需要并降低成本

  • 集成的DSP提供灵活的数字滤波和机器学习(ML)算法

  • 多通道SARΣ-Δ A/D转换器、比较器和用于解码器激励的正弦波生成器

  • 6CAN FD接口、TSN以太网和多个高级可编程I/O

  • 通过使用公钥基础架构(PKI)和密钥管理,硬件安全引擎(HSE)实现可信启动、安全服务、安全无线远程升级(OTA

  • 还提供S32K37版本(不带双电机控制处理器)

  • 通过获得认证的ISO/SAE 21434网络安全和ISO 26262功能安全流程开发

  • 提供两种封装:176LPQFP-EP289MAPBGA

系统解决方案供货情况

目前,为主要客户提供工程样片、评估板和综合性软件支持与工具。S32K39 MCU可与恩智浦FS26安全系统基础芯片(SBC)和具备可调节动态栅极强度控制的先进高压隔离栅极驱动器GD3162结合使用,实现安全的逆变器控制系统。对于牵引逆变器开发,二者均支持最高级别的功能安全等级(ASIL D)。计划于2023年第4季度正式投入量产。

关于恩智浦电气化解决方案

恩智浦电气化解决方案采用可靠的开放式架构,可实现从电气化结点到云端的更安全的双向通信。我们的集成嵌入式技术让产品设计人员和服务提供商有信心构建满足最高功能安全和信息安全标准的系统;恩智浦还提供深度见解,助力提高产品整个生命周期的性能。恩智浦电气化解决方案的控制功能不局限于系统某个部分,而是覆盖整个生态系统,包括电池管理、高效电机驱动、快速充电及全车电气负载均衡。

有关更多信息,请访问nxp.com.cn/S32K39

关于恩智浦半导体

恩智浦半导体(纳斯达克代码:NXPI)致力于通过创新为人们更智慧、安全和可持续的生活保驾护航。作为全球领先的嵌入式应用安全连接解决方案提供商,恩智浦不断寻求汽车、工业物联网、移动设备和通信基础设施市场的突破。恩智浦拥有超过60年的专业技术及经验,在全球30多个国家设有业务机构,员工达31,000人,2021年全年营业收入110.6亿美元。更多信息,请访问https://www.nxp.com/

围观 12

2022年11月,上海芯钛信息科技有限公司(以下简称“芯钛科技”或“公司”)完成战略轮融资,本次战略轮由青岛上汽创新基金(上汽集团战略直投)以及上汽创投联合投资。

芯钛科技在前序融资轮次中,已经汇聚了汽车产业投资、地方国资基金、知名硬科技投资机构等优质资本助力,本次获得上汽集团战略投资,将进一步加深公司与上汽集团的产业协同,助力公司加速完善产品体系成型及业务落地,巩固芯钛科技在车规MCU行业优势地位。

投资方介绍

青岛上汽创新基金

青岛上汽创新升级产业股权投资基金合伙企业(有限合伙)(青岛上汽创新基金)是由上汽集团出资设立的产业投资基金,基金总规模135亿元。青岛上汽创新基金是集团战略直投业务主要对外出资主体,根据集团的战略布局需要主要投资方向为汽车产业链及其相关领域,包括但不限于新能源、智能网联、共享化、智能制造、新材料等。

上汽创投

上海汽车创业投资有限公司(上汽创投)成立于2001年6月,为上汽金控全资子公司,聚焦新能源、智能网联、车载半导体等集团战略关注领域,服务集团战略专项,布局新四化前沿领域,截至目前管理资产规模超过100亿元。

芯钛科技介绍

芯钛科技上海芯钛信息科技有限公司是一家芯片设计公司,专注于汽车半导体领域,秉承“自主可控、车规品质”的产品理念,面向汽车行业提供完整的芯片应用解决方案。公司产品包括了Mizar安全芯片系列、Alioth通用MCU系列、Phecda外围设备系列等,产品应用涵盖了底盘控制、车身电子、智能网联、辅助驾驶等各类汽车电子应用需求。公司量产芯片产品已与国内外主流Tier1及整车厂广泛合作,已获得上汽集团、广汽资本、方广资本等多家知名机构投资。

来源:上海芯钛信息科技有限公司

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

围观 23

【概述】

本文将介绍广芯微的8位MCU的IAP实现介绍及使用说明,通过IAP实验演示如何通过IAP 更新用户程序的流程步骤等。

【 什么是IAP?】

IAP即为 In Application Programming(在应用中编程)。可以简单理解为:在程序运行的过程中进行编程(升级程序,更新固件)。IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。

IAP的通信口有许多种:UART串口、I2C、SPI......等。按理说只要能传输数据的通信口都能实现IAP的功能。本文所使用的是UART方式的IAP。

【IAP实现介绍】

本文实验以UM8004为例,flash大小为16K。UM8004的中断向量表以及IAP固件程序存放到0x0000-0x1400区域,在之后的更新中不会对以该区域空间进行擦写。用户APP应用程序存放在从0x1400-0x3FFF的空间。每次需要更新升级时,将这段空间进行擦写,替换成更新的应用程序代码。

1.png

使用IAP的上位机,通过IAP程序的处理函数,即可实现应用程序的更新升级。整个IAP的实现流程如下图所示:

2.png

图1  IAP功能流程图

【 IAP使用说明】

开发套件

IAP开发套件包含:

  • 硬件开发板

  • 软件开发包

软件开发包

软件开发包中包含IAP工程、用户APP应用程序例子程序、IAP使用说明、以及一些工具、上位机等等。

软件开发包中的内容如下:

  • UM800Y_IAP:800Y的IAP工程。

  • UM800Y_APP:用户应用程序示例Demo。

  • UM800Y_IAP使用说明.doc:IAP实现和使用的说明文档。

  • UNIC_IAPTool.exe: IAP上位机。

  • UNIC_BootTool.exe:Bootloader的用户下载工具。

  • Sscom5.13.1.exe:串口调试助手。

  • Hex2bin.exe:hex文件转换bin文件工具。

  • JFlash.exe :合并bin或hex文件。

硬件环境

硬件环境如图1所示:

  • 硬件开发板和USB连接线

  • 电脑(编译代码,下载程序代码)

3.png

图 2 硬件连接示意图

软件环境

Keil C51

工程说明

下面对本次实验的工程进行简单说明。

IAP工程:

(1) 需要在Target选项卡里设置我们IAP程序的起始地址与大小,如:

4.png

图3 设置IAP程序的起始地址与大小

这里的IAP程序起始地址设为0x0000,大小设为0x1400,即IAP所需的FLASH空间为5KB。其中IAP所占空间的大小可根据IAP的实际大小进行修改。

(2) 设置IAP_Proc函数(IAP更新处理程序)的入口地址,用绝对地址定位的方法设置在某个固定的地址,下面以设置地址为0x0200为例。点开keil C51中的Options for Target,勾选下图所示的地方。

5.png

图4  勾选Use Extended Linker(LX51) instead of BL51

之后在下图所示位置填入“?PR?IAP_PROC?IAP(C:0x0200)”, 如图5,最后点击ok。

6.png

图5  设置IAP_Proc函数的地址为0x0200

(3) IAP源码说明

7.png

图6  IAP部分代码

IAP源码主要功能是当UART收到上位机的请求更新帧时,执行IAP_Proc()函数,实现应用程序的更新下载。

用户APP工程:

(1)需要在Target选项卡里设置用户应用APP程序的起始地址与大小,如:

8.png

图7  设置IAP程序的起始地址与大小

这里的APP应用程序起始地址设为0x1400,由于UM8004的flash大小为16K,

用户APP应用程序最大尺寸大小 = 16KB – IAP程序大小=0x2C00。

(2)用户APP程序中需要添加用于检查更新的函数。

本例程使用UART0的回调函数调用IAP处理函数去更新升级应用程序(UART0的波特率需和IAP程序的一致)。调用IAP处理函数的方法如下,根据5的配置来设置的IAP入口地址值(IAP函数的地址为0x0200)在用户APP程序的检查更新函数中,定义一个函数指针,指向该地址,当UART收到请求更新信息时用于跳转,设置如图8所示。

9.png

10.png

图8 app程序中设置IAP处理函数跳转

如需详细代码和程序移植可参考软件开发包的工程以及说明文档。

【IAP实验】

IAP实验说明

本次实验使用UM8004进行演示,通过IAP 将原本Lptimer功能的用户应用程序更新为ADC功能的用户应用程序。

IAP实验步骤

(1) 将IAP程序和用户应用程序进行打包

首先打开J-Flash工具。点击open data file,打开用户app程序的bin或者hex文

件。这里选择软件开发包里UM800Y_APP文件夹中的Lptimer工程中的bin文件。(可通过hex2bin工具将hex转换成bin文件)

11.jpg

图 9  J-Flash工具

打开成功后点击软件左上角File,点击Merge data file…

12.png

图 10  J-Flash工具

然后选择IAP工程的bin或者hex文件。

打开成功后,选择是,将两个文件合并打包。

13.png

图 11  J-Flash工具合并文件

打包成功后。点击软件左上角File,选择Save data file as..将打包好的程序进行保存,保存的格式为bin或者hex。

14.png

图 12  J-Flash工具保存合并文件

15.jpg

图 13  J-Flash工具保存合并文件

(2)使用UNIC_BootTool_V2.0下载合并后的文件

使用UNIC_BootTool_V2.0工具下载程序流程如下:

①芯片类型选择UM800Y,选择115200波特率

②点击Browse选择刚刚打包好的程序

③打开文件后点击Open,复位芯片,芯片进入到Boot模式。

④点击Auto Download,将程序下载到UM8004。

16.png

图 14  Bootloader的用户下载工具

由于本例子将IAP程序和LPTIMER程序打包合并后下载,在程序下载成功后,打开串口助手会看到LPTIMER计数功能。

17.png

图 15   lptimer定时计数

(3)使用UNIC_IAPTool_V1.3更新程序

通过使用UNIC_IAPTool_V1.3上位机,可以让IAP程序引导更新用户应用程序。

18.png

图 16  IAPTool上位机说明

使用UNIC_IAPTool_V1.3上位机更新具体操作流程如下

①打开上位机选择串口号以及波特率,选择芯片型号为UM8004。

②打开需要更新的用户应用程序的bin或者hex文件。打开后会显示该文件的CRC值。

③点击OPEN

④点击一键下载

⑤点击一键下载后,等待更新过程,更新成功后会提示“下载完成”,否则会提示下载失败。


19.png

图 17   IAPTool上位机更新成功

⑥之后会运行用户的程序。(可以通过串口工具打印信息看到,通过IAP升级更新已将原来打包时的Lptimer应用程序更换为ADC功能应用程序。)

20.png

图 18   IAP更新用户程序为ADC功能程序

最终通过IAP已更新升级了用户的应用程序。

【总结】

感谢大家参与学习广芯微MCU进阶篇1:8位MCU IAP实现,让我们期待后续的文章更新。

需要申请广芯微产品评估板,可在官网留言。(www.unicmicro.com

来源:广芯微电子

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

围观 11

近日,四维图新智芯车规级MCU芯片AC7802x提前回片,并一次性成功点亮。AC7802x的到来,将进一步丰富四维图新与旗下杰发科技在MCU芯片的布局,拓展国产MCU在汽车电子领域的应用。这款全国产化供应链的芯片,是“中国芯”的又一突破。

1.jpg

图:AC7802x芯片

AC7802x平台拓展性强 高可靠性 高性价比

AC7802x是基于ARM Cortex-M0+内核的车规级MCU,自2021年量产首颗M0+内核的AC7801x以来,AC7802x是四维图新智芯基于M0+内核的又一布局。AC7802x符合AEC-Q100 Grade1认证,环境温度最高可支持-40~125℃,其平台扩展性强,与AC7801x同封装可硬件兼容设计,软件接口兼容,方便资源扩展及平台化选型。

2.jpg

图:AC7802x Demo板

AC7802x提供TSSOP20/HVQFN32两种封装形式,功耗低,具有超高性价比,主要用于汽车小节点执行层角色,将进一步丰富和拓展国内汽车电子应用领域,具有重要战略意义。

四维图新智芯MCU,产品线布局丰富全面

四维图新智芯MCU产品线从基于M0+和M3内核的AC780x系列和AC781x系列主打小节点执行层角色,到基于M4F内核的AC7840x系列作为中间力量,再到未来的多核拥有高算力大Pin脚主打域控制器MCU,形成了汽车MCU领域全覆盖。目前,四维图新智芯车规级MCU芯片已获得市场的广泛认可,与国内外主流OEM和汽车一级供应商进行合作,如长城、五菱、上汽、广汽、长安等,还有新能源汽车领导者比亚迪、蔚来、小鹏、理想等,2021年出货量已超一千万颗。AC7802x验证工作正在有序推进中,预计年底完成样品验证,2023年上半年实现量产。

来源:四维图新NavInfo

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

围观 13

DVP简介

数字摄像头并行接口(DVP)用于捕获CMOS影像摄像机所输出的并行数据。依据摄像机输出,可选择以硬件同步模式或内嵌码同步模式进行帧同步与行同步。依使用需求,可透过帧率控制,调节每秒捕获的帧数。剪裁窗口功能可以保留兴趣区域数据,舍弃其他部分。使用图像尺寸调整功能,可依据比例对图像进行像素数或行数缩减。直接存储器访问的使用,可在不耗用CPU资源的状态下,将捕获数据传输至储存单元。使用者仅须透过状态中断与错误中断,监控数据接收状态即可。

DVP系统框图

1.png

图1. DVP系统框图

周边配置

SURF板

2.png

图2. AT-SURF-F437

DVP & Sensor pin

表1. DVP接口表

3.png

DVP基本环境介绍

表2. DVP环境介绍

4.png

DVP功能

数据长度

数字摄像头并行接口(DVP)将捕获的数据,包装成字(32位)数据,供直接存储器访问从寄存器DVP_DT取得。包装方式依DVP_CTRL寄存器PDL的配置而异。详见下图。

8位并行数据(PDL=0)

配置PDL为0,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个8位数据,并以四个数据包装成一组字数据。最先捕获者放置于最低8位,最后捕获者放置于最高8位,依此类推。

10位并行数据(PDL=1)

配置PDL为1,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个10位数据,并以二个数据包装成一组字数据。包装将字数据分成两组半字进行。先捕获者放置于低位半字的最低10位,最捕获者放置于高位半字的最低10位,余者清零。

12位并行数据(PDL=2)

配置PDL为2,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个12位数据,并以二个数据包装成一组字数据。包装将字数据分成两组半字进行。先捕获者放置于低位半字的最低12位,最捕获者放置于高位半字的最低12位,余者清零。

14位并行数据(PDL=3)

配置PDL为3,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个14位数据,并以二个数据包装成一组字数据。包装将字数据分成两组半字进行。先捕获者放置于低位半字的最低14位,最捕获者放置于高位半字的最低14位,余者清零。

5.png

图3. PDL配置与输出包装之关系

同步模式

数字摄像头并行接口(DVP)以DVP像素时钟(DVP_PCLK)来捕获CMOS影像摄像机所输出的像素并行数据(DVP_D),DVP_PCLK是由CMOS影像摄像机提供。透过配置DVP_CTRL的寄存器CKP,DVP可选择使用DVP_PCLK的上升缘或下降缘进行捕获。捕获的数据可以区分为有效像素数据与消隐区间数据,用户仅只关心有效像素数据的部分。CMOS影像摄像机可提供一种或数种模式的同步信息,供接收端进行帧分割,并提取有效像素数据。数字摄像头并行接口(DVP)支持两种同步模式,硬件同步模式与内嵌码同步模式,可透过配置DVP_CTRL的寄存器SM来选择。

硬件同步模式

相关寄存器:

-SM(Synchronization mode)=0

-DVP_CTRL HSP

-DVP_CTRL VSP

CMOS影像摄像机可提供水平同步讯号与垂直同步信号,供接收端进行同步。配置DVP_CTRL的寄存器SM为0,DVP可以此同步模式进行接收。水平同步讯号用于区分有效像素与消隐区间,DVP由DVP水平同步讯号引脚(DVP_HSYNC)导入此讯号,依据此讯号进行行分割,并提取有效像素数据。需配置DVP_CTRL的寄存器HSP来调整该讯号极性,使其与数字摄像头之输出一致。垂直同步信号用于帧之间的分隔,DVP由DVP垂直同步信号引脚(DVP_VSYNC)导入此讯号,依此讯号进行帧分割。
内嵌码同步模式

相关寄存器:

-SM(Synchronization mode)=1

-DVP_SCR

-DVP_SUR

为了节省引脚使用,部分厂商的CMOS影像摄像机,可在有效像素数据与消隐区间数据之间嵌入同步码作为同步信息,取代水平同步讯号与垂直同步信号之使用。配置DVP_CTRL的寄存器SM为1,DVP可以此同步模式进行接收。同步码由四笔数据构成,前三笔数据内容固定,第一笔为全1数据,之后接续两笔全0数据。第四笔数据则依同步信息而异,需依摄像机厂商所使用的同步码型式与内容,配置DVP_SCR寄存器。

1. FS/FE/LS/LE型式

欲接收FS/FE/LS/LE型式,需配置DVP_SCR寄存器如下。

FMSC:配置成影像摄像机使用的FS第四笔数据最高八比特位。

LNSC:配置成影像摄像机使用的LS第四笔数据最高八比特位。

LNEC:配置成影像摄像机使用的LE第四笔数据最高八比特位。

FMEC:配置成影像摄像机使用的FE第四笔数据最高八比特位。

6.png

图4. FS/FE/LS/LE型式下的帧组成

2. SAV/EAV型式

欲接收SAV/EAV型式,需配置DVP_SCR寄存器如下:

FMSC:配置成0xff。(配置为无帧开始同步码之内嵌码同步模式)

LNSC:配置成影像摄像机使用的Active SAV第四笔数据最高八比特位。

LNEC:配置成影像摄像机使用的Active EAV第四笔数据最高八比特位。

FMEC:配置成0xff。(配置为任意帧结束同步码之内嵌码同步模式)

7.png

图5. SAV/EAV型式下的帧组成

捕获模式

单帧捕获模式

相关寄存器:

-DVP_CTRL CFM=1

此模式下,用户置起DVP_CTRL的寄存器CAP后,DVP会根据接收到的同步信息,于次帧开始后,进行数据捕获。于该帧结束之时,DVP会自动重置寄存器CAP,并停止数据捕获。

8.png

图6. 单帧捕获模式示意图

连续捕获模式

相关寄存器:

-DVP_CTRL CFM=0

此模式下,用户置起DVP_CTRL的寄存器CAP后,DVP会根据接收到的同步信息,于次帧开始后进行数据捕获,此捕获行为会持续进行。当使用者对寄存器CAP置0时,DVP会维持CAP的置起状态并持续捕获数据,直到同步信息反应当帧结束。此时DVP会重置寄存器 CAP,并停止数据捕获。

9.png

图7. 连续捕获模式示意图

帧率控制功能

相关寄存器:

DVP_CTRL CFM=0

数字摄像头并行接口(DVP)可透过帧率控制,调节每秒捕获的帧数。帧率控制仅当DVP配置于连续捕获模式(CFM=0)下,方可作用。帧率控制单元可区分成基本型帧率控制与进阶型帧率控制两种。

10.png

图8. 帧率控制功能示意图

基本型帧率控制

相关寄存器:

11.png

图9. DVP_CTRL BFRC

配置DVP_CTRL的寄存器BFRC,可选择让DVP每两帧捕获一帧,或是每四帧捕获一帧。
进阶型帧率控制

相关寄存器:

12.png

图10. DVP_ACTRL EFRCE

13.png

图11. DVP_FRF EFRCTF/EFRCSF

如需更精细的帧数调节,可使用进阶型帧率控制。使用时须禁止基本型帧率控制(BFRC=0),并置起DVP_ACTRL的寄存器EFRCE,DVP会依据DVP_FRF的寄存器EFRCSF与EFRCTF之配置来调整帧数,调整公式如下:

目标帧率=(EFRCTF/EFRCSF)×原始帧率

请注意,当使用进阶型帧率控制功能时,寄存器EFRCSF与EFRCTF值不得为0,且EFRCTF不得大于EFRCSF。

剪裁窗口功能

相关寄存器:

14.png

图12. DVP_CWST CVSTR/CHSTR

15.png

图13. DVP_CWSZ CVNUM/CHNUM

剪裁窗口功能可以供用户保留兴趣区域数据,舍弃其他部分。置起DVP_CTRL的寄存器CRP,DVP会依据DVP_CWST与DVP_CWSZ之寄存器配置进行剪裁,如下图所示意。

16.png

图14. 剪裁窗口功能示意图

请注意,由于DVP会将捕获的数据,包装成字(32位)数据,供直接存储器访问提取。故使用剪裁窗口功能时,CHNUM有下述限制:8位并行数据(PDL=0)时,CHNUM+1须为4的倍数。10或12或14位并行数据(PDLǂ0),CHNUM+1须为2的倍数。

图像尺寸调整功能

使用图像尺寸调整功能,可依据比例对图像进行像素数或行数缩减。图像尺寸调整功能单元可区分成基本型图像捕获舍弃控制与进阶型图像尺寸调缩功能两种。

17.png

图15. 图像尺寸调整功能示意图

基本型图像捕获舍弃控制

相关寄存器:

18.png

图16. DVP_CTRL

配置DVP_CTRL的寄存器PCDC或LCDC,可启用基本型图像捕获舍弃控制功能。将LCDC置1后,可在每两条捕获的图像行中舍弃一条,将图像的垂直轴尺寸减半。配置LCDS可以选择捕获前一条并舍弃下一条,或是反向为之。寄存器PCDC可以调整图像的水平轴尺寸,由PCDS与PCDES决定捕获何者。如下图所示。

19.png

图17. LCDC/LCDS与帧组成

20.png

图18. PCDC/PCDS与行组成

进阶型图像尺寸调缩功能

相关寄存器:

21.png

图19. DVP_ACTRL

22.png

图20. DVP_HSCF

23.png

图21. DVP_VSCF

如需更精细的图像调缩,可使用进阶型进阶型图像调缩功能。使用此功能需启用进阶功能数据管理(EFDM=1),并依CMOS影像摄像机之输出格式配置进阶功能数据格式(EFDF)。使用进阶型进阶型图像调缩功能时,须禁止图像捕获舍弃控制功能(PCDC=0且LCDC=0),并置起DVP_ACTRL的寄存器EISRE,DVP会依据DVP_HSCF的寄存器HSRSF与HSRTF之配置来调缩图像的水平轴尺寸,并依据DVP_VSCF的寄存器VSRSF与VSRTF之配置来调缩图像的垂直轴尺寸,调整公式如下:

目标水平轴尺寸=(HSRTF/HSRSF)×原始水平轴尺寸

目标垂直轴尺寸=(VSRTF/VSRSF)×原始垂直轴尺寸

请注意,当使用进阶型进阶型图像调缩功能时,寄存器HSRSF、HSRTF、VSRSF、VSRTF值不得为0,且HSRTF不得大于HSRSF,并VSRTF不得大于VSRSF。此外,计算所得的目标水平轴尺寸与目标垂直轴尺寸必须为整数,且目标水平轴尺寸需为4的倍数,否则此单元可能会产生不预期之结果。

灰阶图像二值化转换

相关寄存器:

24.png

图22. DVP_ACTRL MIBE

25.png

图23. DVP_BTH

灰阶图像二值化转换单元提供将图像亮度转换成一比特位表示之格式。使用此功能需启用进阶功能数据管理(EFDM=1),并依CMOS影像摄像机之输出格式配置进阶功能数据格式(EFDF),设定方式请参考錯誤!找不到參照來源。置起DVP_ACTRL的寄存器MIBE可使能灰阶图像二值化转换功能。

灰阶图像依DVP_BTH之寄存器MIBTHD配置进行二值化转换,数值大于阀值者判定为1,小于阀值者判定为0。图像数据若为无法直接取出图像亮度的格式,则无法使用该功能。

中断与中断控制

相关寄存器:

26.png

图24. DVP_STS

27.png

图25. DVP_ESTS

28.png

图26. DVP_IENA

29.png

图27. DVP_ISTS

30.png

图28. DVP_ICLR

数字摄像头并行接口(DVP)的中断控制,由四组寄存器所构成。DVP_ESTS是只读寄存器,用于纪录捕获过程中所发生的同步状态或错误事件。DVP_IENA用于控制中断讯号之使能,配置该寄存器可以使能对应位的同步状态或错误中断,并以送至CPU。使能后所产生的中断会被记录在只读寄存器DVP_ISTS中,由于DVP是以全局中断连接CPU的NVIC,使用者需于此寄存器确认中断信息。纪录于DVP_ESTS与DVP_ISTS的状态,透过对DVP_ICLR的对应位上置1可清除之。

DVP_ICLR是唯写寄存器,无须置0解除。

DVP支持三组同步状态中断,描述如下:

帧捕获完成(Capture frame done)

CFDES与CFDIS于捕获功能(CAP)使能时,表现当前帧捕获已完成。根据同步讯号,帧捕获完成讯息会于获取帧结束讯号时发生。若剪裁窗口功能(CRP)始能时,帧捕获完成讯息会提前至剪裁窗口完成时产生。若捕获功能(CAP)未使能,CFDES与CFDIS不作用。
垂直同步状态(Vertical synchronization)

VSES与VSIS用于表现垂直同步信息已获取。垂直同步信息可被定义为帧开始或帧结束,配置DVP_ACTRL的寄存器VSEID可以调整其定义。

水平同步状态(Horizontal synchronization)

HSES与HSIS用于表现水平同步信息已获取。水平同步信息可被定义为行开始或行结束,配置DVP_ACTRL的寄存器HSEID可以调整其定义。
DVP支持两组错误中断,描述如下:

输出缓冲溢出(Output data FIFO overrun)

OVRES与OVRIS于捕获功能(CAP)使能时,表现输出缓冲溢出的错误状态。若直接存储器访问无法及时将捕获数据传输至储存单元,而导致输出缓冲全部蓄满数据,此时DVP所捕获的数据将会被舍弃,并产生输出缓冲溢出错误讯息。若捕获功能(CAP)未使能,OVRES与OVRIS不作用。
内嵌同步码译码错误(Embedded synchronization error)

ESEES与ESEIS于捕获功能(CAP)使能,且使用时内嵌码同步模式时时(SM=1),表现内嵌同步码译码错误的错误状态。若译码器解译出非预期之同步码,译码器会舍弃当前的同步状态,并重新对后续的数据进行解译。此时DVP将会停止数据捕获,并产生内嵌同步码译码错误讯息。若捕获功能(CAP)未使能,或是使用硬件同步模式时(SM=0),ESEES与ESEIS不作用。

DVP应用

Sensor常见影像数据格式

依厂商不同,CMOS影像摄像机可提供的图像输出格式极多,本章节仅针对常见格式进行简单描述。

RGB与YUV格式

RGB:每一个像素由RGB三原色组成,“R”代表红色,“G”代表绿色,“B”代表蓝色。主要应用在计算机屏幕上,每一个像素色彩表现较丰富, 但无法将 RGB 三种值分开。常见格式有RGB565、RGB555…。

YUV:每一个像素由YUV字段组成,“Y”表示明亮度(Luma),“UV”表示的是色度(Chroma)。主要应用在电视屏幕上,特点在于可以只储存Luma(黑白画面),或是压缩UV的储存空间,方便压缩影像数据。UV代表RGB三原色。常见格式有YUV444、YUV422、YUV420…。

31.png

图29. YUV Format

4:4:4、4:2:2与4:20是YUV的取样方法。YUV4:4:4即是无通道压缩的全像传送;YUV4:2:2即是把后面两个信道的讯号抽掉一半,所以只需要YUV4:4:4的三分之二带宽。

YUV与RGB有算法可以互相转换。
RGB565

此格式下,CMOS影像摄像机每两个像素时钟输出一个半字(16位)数据的像素。每组半字数据包含三种像素分量,红色R、绿色G和蓝色B,分别以5位、6位和5位进行数据编码。第一个像素时钟输出R分量与G分量的低位部分,第二个像素时钟则输出G分量的高位部分与B分量。或是在第一个像素时钟输出B分量与G分量的低位部分,第二个像素时钟输出G分量的高位部分与R分量。錯誤!找不到參照來源。示意在RGB565格式下,DVP数据捕获与包装方式。

32.png

图30. RGB565格式数据捕获与包装

RGB555

此格式下,CMOS影像摄像机每两个像素时钟输出一个半字(16位)数据的像素。每组半字数据包含三种像素分量,红色R、绿色G和蓝色B,皆以5位进行数据编码。第一个像素时钟输出R分量与G分量的低位部分,第二个像素时钟输出G分量的高位部分与B分量。或是在第一个像素时钟输出B分量与G分量的低位部分,第二个像素时钟输出G分量的高位部分与R分量。因有效数据一共只有15位,故第二个像素时钟的最高位数据并不使用,CMOS影像摄像机会通常直接输出低电平。錯誤!找不到參照來源。示意RGB555格式下,DVP数据捕获与包装方式。

33.png

图31. RGB555格式数据捕获与包装

YUV422

此格式下,CMOS影像摄像机每两个像素时钟输出一个半字(16位)数据的像素。每组半字数据包含一个亮度像素分量Y,与一个色度像素分量U或V,皆以8位进行数据编码。色度分量U与V会在各像素间交替,相邻两像素使用不同色度分量。摄像机于每个像素时钟输出一组像素分量,第一个像素时钟输出Y分量,第二个像素时钟则输出U分量或V分量。或是在第一个像素时钟输出U分量或V分量,第二个像素时钟输出Y分量。錯誤!找不到參照來源。示意在YUV422格式下,DVP数据捕获与包装方式,色度像素分量U与V顺序可互换。

34.png

图32. YUV422格式数据捕获与包装

Y8

Y8(Y-only)格式此格式下,CMOS影像摄像机每一个像素时钟输出一个字节(8位)数据的像素表示亮度Y,以8位进行数据编码。于此格式下,CMOS影像摄像机不输出色度信息。錯誤! 找不到參照來源。示意在Y8(Y-only)格式下,DVP数据捕获与包装方式。

35.png

图33. Y8(Y-only)格式数据捕获与包装

DVP Lib

DVP功能开启/关闭

DVP各功能在设定上没有先后顺序,只有dvp_capture_enable开启后马上会有影像输出,所以必须在完整设定(包含I2C/EDMA/…)后再启动

  • dvp_enable

36.png

开启后 DVP 各功能活化,但不会有影像输出

  • dvp_capture_enable

37.png

开启后DVP就会马上会有影像输出, 所以必须在完整设定(包含I2C/EDMA/…)后再启动
同步模式-硬件同步

  • dvp_sync_mode_set(DVP_SYNC_MODE_HARDWARE)

38.png

  • dvp_hsync_polarity_set

39.png

视sensor而定,不同的sensor设定值可能不同

  • dvp_vsync_polarity_set

40.png

视sensor而定,不同的sensor设定值可能不同
同步模式-内嵌码同步

  • dvp_sync_mode_set(DVP_SYNC_MODE_EMBEDDED)

41.png

  • dvp_sync_code_set

42.png

dvp_sync_code_set(0xFF, 0xFF, 0xC7, 0xDA)

  • dvp_sync_unmask_set

43.png

dvp_sync_unmask_set(0, 0, 0, 0)
捕获模式

  • dvp_capture_mode_set

44.png

单帧捕获模式

dvp_capture_mode_set(DVP_CAP_FUNC_MODE_SINGLE)

连续捕获模式

dvp_capture_mode_set(DVP_CAP_FUNC_MODE_CONTINUOUS)

帧率控制-基本型

  • dvp_basic_frame_rate_control_set

45.png

需搭配连续捕获模式

dvp_capture_mode_set(DVP_CAP_FUNC_MODE_CONTINUOUS);

可以将sensor的帧率再往下调整

-不改变sensor帧率

dvp_basic_frame_rate_control_set(DVP_BFRC_ALL)

-将sensor帧率降低为两帧取一帧

dvp_basic_frame_rate_control_set(DVP_BFRC_HALF)

-将sensor帧率降低为四帧取一帧

dvp_basic_frame_rate_control_set(DVP_BFRC_QUARTER)
帧率控制-进阶型

  • dvp_enhanced_framerate_set

46.png

需搭配连续捕获模式

dvp_enhanced_framerate_set(M, N, TRUE)

M>=N
剪裁窗口

  • dvp_enhanced_framerate_set

47.png

  • void dvp_window_crop_set

48.png

dvp_window_crop_enable(TRUE)

dvp_window_crop_set(crop_x, crop_y, crop_w, crop_h)

crop_x / crop_y / crop_w / crop_h单位为pixel

crop_x(0x0000~0x3FFF): cropping window horizontal start pixel

crop_y(0x0000~0x1FFF): cropping window vertical start pixel

crop_w(0x0001~0x3FFF): cropping window horizontal pixel number

crop_h(0x0001~0x3FFF): cropping window vertical pixel number

crop_x+crop_w>=sensor输出到dvp的影像宽度(pixel)

crop_y+crop_h>=sensor输出到dvp的影像高度(pixel)
图像尺寸调整-基本型

  • dvp_zoomout_set

49.png

dvp_zoomout_set(dvp_pcdc, dvp_pcds, dvp_lcdc, dvp_lcds);

dvp_pcdc:

-DVP_PCDC_ALL, 全部捕获,或是使用进阶型图像尺寸调缩功能

-DVP_PCDC_ONE_IN_TWO, 启用捕获舍弃控制,于两个像素数据之中,捕获一个

-DVP_PCDC_ONE_IN_FOUR, 启用捕获舍弃控制,于四个像素数据之中,捕获一个-DVP_PCDC_TWO_IN_FOUR, 于四个像素数据之中,捕获连续两个

dvp_pcds:

-DVP_PCDS_CAP_FIRST, 捕获第一组数据(一个或两个像素数据),舍弃下一组

-DVP_PCDS_DROP_FIRST, 舍弃第一组数据(一个或两个像素数据),捕获下一组

dvp_lcdc:

-DVP_LCDC_ALL, 全部捕获,或是使用进阶型图像尺寸调缩功能

-DVP_LCDC_ONE_IN_TWO, 启用捕获舍弃控制,于两条图像行之中,捕获一条

dvp_lcds:

-DVP_LCDS_CAP_FIRST, 捕获第一条图像行之数据,舍弃下一条

-DVP_LCDS_DROP_FIRST, 舍弃第一条图像行之数据,捕获下一条
图像尺寸调整-进阶型

  • dvp_enhanced_scaling_resize_enable

50.png

  • dvp_enhanced_data_format_set

51.png

dvp_enhanced_scaling_resize_enable(TRUE)

dvp_enhanced_data_format_set(dvp_efdf)

dvp_efdf:

-DVP_EFDF_YUV422_UYVY, YUV422(UYVY / VYUY)格式数据输入

-DVP_EFDF_YUV422_YUYV, YUV422(YUYV / YVYU)格式数据输入

-DVP_EFDF_YUV444, YUV444格式数据输入

-DVP_EFDF_Y8, Y8(Y only)格式数据输入

dvp_enhanced_scaling_resize_set(src_w, des_w, src_h, des_h)

需搭配连续基本型全部捕获

src_w: 水平尺寸调缩来源系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0

des_w: 水平尺寸调缩目标系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0,亦不得大于src_w

src_h: 垂直尺寸调缩来源系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0

des_h: 垂直尺寸调缩目标系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0,亦不得大于src_h

灰阶图像二值化转换

  • dvp_monochrome_image_binarization_set

52.png

dvp_monochrome_image_binarization_set(mibthd, TRUE)

mibthd: 灰阶图像二值化阀值,灰阶图像依此阀值进行二值化转换,数值大于阀值者判定为1,小于阀值者判定为0

Sensor-DVP-LCD

53.png

图34. Sensor–DVP-LCD

Step1: Initiate sensor OV5640 (By I2C) and LCD (By XMC)

Step2: Configure DVP

Step3: Configure EDMA

54.png

图35. dvp_dma_init

Step4: Enable DVP

Step1~3无顺序相依性,但Step4一定要最后执行

可从LCD上直接显示实际影像

Sensor-DVP-SRAM(or SDRAM)

55.png

图36. Sensor–DVP–SRAM(or SDRAM)

Step1: Initiate sensor OV5640 (By I2C) and SRAM/SDRAM

Step2: Configure DVP

Step3: Configure EDMA

56.png

图37. dvp_dma_init

Step4: Enable DVP

Step1~3无顺序相依性,但Step4一定要最后执行

可以循以下方式输出影像(影像传输完毕后须关闭DMA以及DVP防止影像被覆盖):

1、使用J-Link或其他软件撷取出影像buffer内容,再用可看指定影像格式的软件观看

2、使用UART或其他方式将影像buffer内容传输至PC,再用可看指定影像格式的软件观看

57.png

图38. PC View

EDMA link list mode

如果应用上不会改变DVP输出影像的大小,就可以考虑用EDMA的link list mode来提高DMA的效率。

经由链接列表传输机制,用户可以将几种不同的传输链接在一起,以提高DMA应用程序的系统吞吐量。每个传输信息都可以通过软件存储在描述符中,并且DMA从主存储器加载描述符。

Link list机制为:

1. 预先规划一块buffer存放link list table,内容格式如下,详细内容请参考EDMA章节

58.png图39. 描述符格式

59.png

图40. 链接列表指针的用法

2. 建立link list table(需预先规划存放影像的地址)

Example:

60.png

图41. link list table

(1) 假定影像输出的大小为320x240格式为YUV422/RGB565

单张图像文件案大小为320x240x2=153600 bytes

单张影像有240条vertical line

每一条line有320 pixel=640 bytes

(2) 规划一块固定的Buffer存放link list table(假定位于0x20010000, 大小为4000 bytes)

(3) 假定影像输出的地址为0x20020000

(4) 建立link list table

每一条vertical line都需要填以下信息

CNT[15:0]=0xA0(DMA长度为word 4 bytes, 所以DMA CNT填640/4=0xA0)

PADDR[31:0]=DVP_DT, 固定为0x5005_0028

M0ADDR[31:0]=每条vertical line存放的地址(存放影像的起始地址*0x280*vertical line index)

LLP[31:0]=下一笔link list entry所在地址(link list的起始地址*0x10*(vertical line index+1)), 最后一笔LLP为0代表影像结束,如要重新传输影像则填link list的起始地址

案例 OV5640 Capture 

功能简介

实现将影像从 Sensor OV5640 输入到 DVP, 再透过 EDMA 搬移至 LCD 显示

资源准备

1) 硬件环境:对应产品型号的AT-START BOARD

2) 软件环境

project\at_start_f4xx\examples\dvp\ov5640_capture

软件设计

1) 配置流程开启DVP、EDMA、I2C、XMC时钟配置LCD、OV5640、DVP配置EDMA数据流开启DVP、EDMA相关中断开启DVP、EDMA数据流确认LCD显示是否正确

2) 代码介绍

  • main函数代码描述

61.png

  • LCD函数代码描述

62.png

  • OV5640函数代码描述

63.png

  • EDMA函数代码描述

64.png

  • DVP函数代码描述

65.png

实验结果

66.png图42. LCD View

来源:AT32 MCU 雅特力科技

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

围观 9

页面

订阅 RSS - MCU