APM32芯得 EP.36 | APM32F4实现用U盘记录LOG信息

2024-09-12 Geehy极海半导体公众号
MCU,APM32F4,APM32F4xx,APM32F407xx MCU,APM32F4,APM32F4xx,APM32F407xx MCU,APM32F4,APM32F4xx,APM32F407xx MCU,APM32F4,APM32F4xx,APM32F407xx

《APM32芯得》系列内容为用户使用APM32系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。


# 01 前言


MCU组成的系统在实际应用中,经常需要记录系统LOG信息,可以是系统不同任务执行情况的LOG信息,也可以是内核寄存器等便于维护调试的信息,或者是传感器的信息等。


上述的这些LOG信息,如果在能联网的系统中,那么直接传输回服务器即可,但如果是离线的系统,那么就需要一个存储设备来记录这些LOG信息。一般有以下几种方式:


- 记录到Nor  Flash等板载存储器


- 记录到可移动的存储器,比如U盘等存储设备


本文提供后一种方式,即数据记录到U盘,这种方式方便进行现场维护,但实际应用中,可以结合Nor Flash加U盘的方式,避免读写U盘频率过快导致损坏。以下内容利用APM32F407xx 的OTG Host和Fatfs文件系统,加上RTC功能来实现数据记录,包括以下功能。


- 按日期自动创建文件夹存放 `LOG.xls` 文件


- 按1秒的记录频率往 `LOG.xls` 文件写入带时间戳的数据


- 在U盘存储空间使用超过90%时,删除日期最早的文件夹及LOG文件


# 02 外设和组件配置


下面简单介绍一下所用到的外设和组件的配置。


## OTG Host


OTG Host的配置比较简单,配置为普通FS速度和MSC Class类即可。 


void USB_HostInitalize(void)

{

    /* USB host and class init */

    USBH_Init(&gUsbHostFS, USBH_SPEED_FS, &USBH_MSC_CLASS, 

USB_HostUserHandler);

}


U盘在枚举完成后,需要获取 `LUN` 的信息,以便后续对特定 `LUN` 进行命令和数据读写等操作。


有关MSC Class的处理在 `usbh_msc.c/h` 文件中的 `USBH_MSC_CLASS` 结构体句柄,其包含以下处理函数:


- `USBH_MSC_ClassInitHandler`:Class 初始化函数。

- `USBH_MSC_ClassDeInitHandler`:Class 解初始化函数。

- `USBH_MSC_ClassReqHandler`:Class 特定请求处理函数,用于处理 `MASS_STORAGE_RESET`、`GET_MAX_LUN` 等特定请求。

- `USBH_MSC_CoreHandler`:Class 内核处理函数,包括 BOT 命令、SCSI 命令的处理。

- `USBH_MSC_SOFHandler`:SOF 事件处理函数。

/* MSC class handler */

USBH_CLASS_T USBH_MSC_CLASS =

{

    "Class MSC",

    USBH_CLASS_MSC,

    NULL,

    USBH_MSC_ClassInitHandler,

    USBH_MSC_ClassDeInitHandler,

    USBH_MSC_ClassReqHandler,

    USBH_MSC_CoreHandler,

    USBH_MSC_SOFHandler,

};


下面的 `USBH_MSC_Handler` 状态机由 `USBH_MSC_CoreHandler` 函数调用,包含常见的BOT命令、SCSI命令的处理。 


/* USB host MSC state handler function */

USBH_MscStateHandler_T USBH_MSC_Handler[] =

{

    USBH_MSC_InitHandler,

    USBH_MSC_IdleHandler,

    USBH_MSC_InquiryHandler,

    USBH_MSC_TestUnitReadyHandler,

    USBH_MSC_RequestSenseHandler,

    USBH_MSC_ReadCapacityHandler,

    USBH_MSC_ErrorUnrecoveredHandler,

    USBH_MSC_ReadHandler,

    USBH_MSC_WriteHandler,

    USBH_MSC_RWRequestSenseHandler,

};


BOT SCSI命令处理。



OTG Host部分还需要了解以下API函数,因为后续需要应用到FatFs文件系统中。


- `USBH_MSC_ReadDevInfo()`:用于获取所枚举成功的 `MSC` 设备信息,比如 `LUN` 逻辑单元是否准备完毕、多媒体设备是否存在、扇区数、block 数等。


- `USBH_MSC_DevStatus()`:获取 `LUN` 是否准备就绪的状态。


- `USBH_MSC_ReadDevWP()`:获取 `LUN` 写保护状态。


- `USBH_MSC_DevRead()`:读取 `LUN` 数据。


- `USBH_MSC_DevWrite()`:往 `LUN` 写入数据。 


USBH_STA_T USBH_MSC_ReadDevInfo(USBH_INFO_T* usbInfo, uint8_t lun, USBH_MSC_STORAGE_INFO_T* device);

uint8_t USBH_MSC_DevStatus(USBH_INFO_T* usbInfo, uint8_t lun);

uint8_t USBH_MSC_ReadDevWP(USBH_INFO_T* usbInfo, uint8_t lun);

USBH_STA_T USBH_MSC_DevRead(USBH_INFO_T* usbInfo, uint8_t lun, uint32_t address, \

                            uint8_t* buffer, uint16_t cnt);

USBH_STA_T USBH_MSC_DevWrite(USBH_INFO_T* usbInfo, uint8_t lun, uint32_t address, \

                             uint8_t* buffer, uint16_t cnt);


## RTC


APM32F4xx的RTC是一个独立的BCD定时计数器,提供完整的日历时钟功能。不像F1系列的RTC只是个计数器,需要自行设定元年,然后换算日期和时间。RTC的配置比较简单,配置时钟源为LSE,24小时制即可,然后利用RTC的备份寄存器来判断是否需要配置日历和时间。


void RTC_CalendarConfig(void)

{

    RTC_DateTypeDef Date_Structure;

    RTC_TimeTypeDef Time_Structure;


    /* Configure the Date */

    Date_Structure.Year = 0x23;

    Date_Structure.Month = RTC_MONTH_NOVEMBER;

    Date_Structure.Date = 0x22;

    Date_Structure.WeekDay = RTC_WEEKDAY_MONDAY;

    if(DAL_RTC_SetDate(&hrtc,&Date_Structure,RTC_FORMAT_BCD) != DAL_OK)

    {

        DAL_ErrorHandler(); 

    }


    /* Configure the Time */

    Time_Structure.Hours = 0x00;

    Time_Structure.Minutes = 0x00;

    Time_Structure.Seconds = 0x00;

    Time_Structure.TimeFormat = RTC_HOURFORMAT12_AM;

    Time_Structure.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;

    Time_Structure.StoreOperation = RTC_STOREOPERATION_RESET;

    if(DAL_RTC_SetTime(&hrtc,&Time_Structure,RTC_FORMAT_BCD) != DAL_OK)

    {

        DAL_ErrorHandler(); 

    }

    DAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR0, RTC_BKP_VALUE);

}


## TMR


APM32F4xx系列的RTC没有秒中断,这里我们实现一秒记录一次数据到U盘,则开启一个定时为1秒的定时器中断来实现。


void DAL_TMR3_Config(void)

{

    htmr3.Instance = TMR3;


    htmr3.Init.Period = 10000 - 1;

    htmr3.Init.Prescaler = 8400 - 1;

    htmr3.Init.ClockDivision = 0;

    htmr3.Init.CounterMode = TMR_COUNTERMODE_UP;

    htmr3.Init.AutoReloadPreload = TMR_AUTORELOAD_PRELOAD_DISABLE;

    if(DAL_TMR_Base_Init(&htmr3) != DAL_OK)

    {

       DAL_ErrorHandler();

    }

}


## FatFs


使用FatFs文件系统前,要重新实现 `diskio.c` 及配置 `ffconf.h` 文件。


其中在 `diskio.c` 文件中,要利用OTG Host章节最后提到的 `MSC Class` 的 API ,重新实现以下函数。


`DSTATUS disk_status()`


`DSTATUS disk_initialize()`


`DRESULT disk_read()`


`DRESULT disk_write()


`DRESULT disk_ioctl()`


另外,简单介绍下后面应用代码中用到的几个API,详细的使用方法,大家可以参考FatFs官方文档。


### f_opendir


该API用于打开一个已存在的目录文件夹。


FRESULT f_opendir (

  DIR* dp,           /* [OUT] Pointer to the directory object structure */

  const TCHAR* path  /* [IN] Directory name */

);


### f_readdir

该 API 用于读取目录项,后续用于筛选所有的有效目录。 


FRESULT f_readdir (

  DIR* dp,      /* [IN] Directory object */

  FILINFO* fno  /* [OUT] File information structure */

);


### f_mkdir

该 API 用于创建一个新的目录文件夹。 


FRESULT f_mkdir (

  const TCHAR* path /* [IN] Directory name */

);


### f_open

该 API 用于打开一个文件。要注意的是参数 `mode flags` 需要使用 `FA_OPEN_ALWAYS`,避免文件内容被覆盖。 


FRESULT f_open (

  FIL* fp,           /* [OUT] Pointer to the file object structure */

  const TCHAR* path, /* [IN] File name */

  BYTE mode          /* [IN] Mode flags */

);


### f_unlink

该 API 用于删除文件或子目录。 


FRESULT f_unlink (

  const TCHAR* path  /* [IN] Object name */

);


### f_close

该 API 用于关闭一个文件。 


FRESULT f_close (

  FIL* fp     /* [IN] Pointer to the file object */

);


### f_lseek

该 API 用于移动被打开的文件对象的文件读或写指针,后面应用时,需要用来将写指针移动到文件末,以添加新的 LOG 信息。 


FRESULT f_lseek (

  FIL*    fp,  /* [IN] File object */

  FSIZE_t ofs  /* [IN] Offset of file read/write pointer to be set */

);


### f_printf

该 API 用于将格式化的字符串写入文件。使用该 API,我们可以方便的将各种数据类型,转换为字符串,再写入文件中。 


int f_printf (

  FIL* fp,          /* [IN] File object */

  const TCHAR* fmt, /* [IN] Format stirng */

  ...

);


### f_getfree

该 API 用于获取 volume 中的剩余空间。使用该 API,我们可以知道 U 盘剩余空间是多少,从而对老旧的 LOG 数据进行处理。 


FRESULT f_getfree (

  const TCHAR* path,  /* [IN] Logical drive number */

  DWORD* nclst,       /* [OUT] Number of free clusters */

  FATFS** fatfs       /* [OUT] Corresponding filesystem object */

);


# 03 实现数据记录

## 定义参数结构体

定义 `rtcInfo` 和 `diskInfo` 来记录应用过程中的信息。 


/* 记录 RTC 时间信息 */

typedef struct

{

    uint16_t year;

    uint8_t month;

    uint8_t day;

    uint8_t hour;

    uint8_t minute;

    uint8_t second;

} RTC_TIME_INFO_T;


/* 记录 U 盘和文件系统信息 */

typedef struct

{

    char dirPath[512];

    uint16_t dirNum;

    uint32_t totSect;

    uint32_t freSect;

    double usedPercent;

} DISK_INFO_T;


RTC_TIME_INFO_T rtcInfo;

DISK_INFO_T diskInfo;


## 获取时间参数

在 TMR3 回调函数中获取 RTC 当前时间,并使能数据更新标志。 


void RTC_Application(void)

{

    char strBuf[50];


    RTC_GetCalendar(&rtcInfo.year, &rtcInfo.month, &rtcInfo.day, &rtcInfo.hour, &rtcInfo.minute, &rtcInfo.second);


    /* Display time */

    sprintf(strBuf, "20%02d-%02d-%02d %02d:%02d:%02d", rtcInfo.year, rtcInfo.month, rtcInfo.day, rtcInfo.hour, rtcInfo.minute, rtcInfo.second);

    DAL_LOGI(tag, "%s", strBuf);

}


void DAL_TMR_PeriodElapsedCallback(TMR_HandleTypeDef *htmr)

{

    if(htmr->Instance == TMR3)

    {

        RTC_Application();

        dataUpdate = 1;

    }

}


## 记录数据

### 提供日期和时间给 FatFs

FatFs 系统的文件和目录的日期、时间信息由 `get_fattime` 函数提供。该函数为 `__weak` 定义,我们在应用文件中重新实现即可,这里要注意 APM32F4xx 的 RTC 日历的起始年份和 FatFs 的不一致,做好偏移即可。 


DWORD get_fattime(void)

{

    return (DWORD)(rtcInfo.year + 20) << 25 |

           (DWORD)rtcInfo.month << 21 |

           (DWORD)rtcInfo.day << 16 |

           (DWORD)rtcInfo.hour << 11 |

           (DWORD)rtcInfo.minute << 5 |

           (DWORD)rtcInfo.second >> 1;

}


### 创建和写数据到 Excel 文件

下面这个函数中,首先创建一个目录,然后创建或打开一个 `.xls` 文件,接着打开文件并用 `f_lseek` 函数移动写指针到文件末,最后用 ` f_printf ` 函数写入格式化后的字符串数据。


void FATFS_WriteXlsFile(FIL* file, const TCHAR *path, char *dir, char *fileName, char* logInfo, char* timeStamp)

{

    FRESULT status;

    char filePath[32];

    char fileDir[20];

    

    /* Write file */

    sprintf(fileDir, "%s", dir);

    status = f_mkdir(fileDir);

    if (status == FR_OK)

    {

        DAL_LOGI(tag, ">>> Create direction success");

    }

    

    /* Open or create file */

    sprintf(filePath, "%s%s%c%s.xls", path, fileDir, '/', fileName);


    status = f_open(file, filePath, FA_OPEN_ALWAYS | FA_WRITE);

    if (status == FR_OK)

    {

        DAL_LOGI(tag, ">>> Open or create %s %s file success", fileDir, fileName);

        

        /* Move the file pointer to the end */

        f_lseek(file, f_size(file));

        

        f_printf(file, "%s + %s + %s\n", fileName, logInfo, timeStamp);

    }

    else

    {

        DAL_LOGE(tag, ">>> Open or create file fail, status is %d", status);

    }


    /* Close file */

    f_close(file);

}


### 获取 U 盘剩余空间信息

Volume 的剩余空间,从之前 FatFs 章节中知道,可以用 `f_getfree` 函数来获取 U 盘剩余空间信息,并转换为使用率。


void MSC_Application(void)

{

        ...

        

        res = f_getfree(USBHPath, &freClust, &fs);

        diskInfo.totSect = (fs->n_fatent - 2) * fs->csize;  

        diskInfo.totSect /= 2;

        

        diskInfo.freSect = freClust * fs->csize;

        diskInfo.freSect /= 2;

        

        diskInfo.usedPercent = (1.0 - (double)diskInfo.freSect / diskInfo.totSect) * 100.0;

        

        ...

}


### 删除旧文件夹

以下代码,使用 `FATFS_ViewRootDir()` 函数获取目录文件夹信息,并按日期进行排序输出。最后由 `sscanf()` 来找到第一个目录,然后删除目录和文件。


void MSC_Application(void)

{

        ...

        

        /* Get dir information */

        DAL_LOGI(tag, "------> Get dir information");

        FATFS_ViewRootDir(&USBHFatFS, USBHPath, diskInfo.dirPath, &diskInfo.dirNum);

        

        DAL_LOGI(tag, ">>> dir path :%s", diskInfo.dirPath);

        DAL_LOGI(tag, ">>> dir number :%d", diskInfo.dirNum);

        

        /* Used percent > 90% and dir number > 1 */

        if((diskInfo.usedPercent - DISK_SPACE_MAX_PERCENT) > EPS && (diskInfo.dirNum > 1))

        {

                DAL_LOGW(tag, "<<< Disk space is not enough");

        

                /* Delete first dir */

                sscanf(diskInfo.dirPath, "/%8[^/]", delectDirName);

        

                FATFS_DelectDir(USBHPath, delectDirName);

        }

        ...

}



# 04 下载验证


经过之前几节的组件的配置,实现数据记录的API函数后,最后下载到APM32F4xx开发板看下应用的过程。


从下面LOG信息可以看到,插入U盘后,从UART1输出了 `MSC device is ready` 的LOG信息,这表明开发板已完成U盘的枚举识别。


同时可以看到LOG中带有时间戳信息,证明RTC已经开发工作,并按每秒打印一次的频率输出时间戳LOG信息。 


...

[main] 2023-11-22 00:00:37

[main] 2023-11-22 00:00:38

[main] 2023-11-22 00:00:39

[main] 2023-11-22 00:00:40

USB Device Reset Completed

USB device speed is FS

PID: 0x1234

VID: 0x048D

Endpoint 0 max packet size if 64

USB device address: 1

Manufacturer: USB

Product: Disk 2.0k

SerialNumber: 9207156342331724518

USB device enumration ok

This is a Mass Storage device

Use 2 endpoint:

Endpoint 0x01: max packet size is 64 bytes

Endpoint 0x82: max packet size is 64 bytes

USB device has only one configuration

Set to default configuration

Inquiry Revision :2.00

Inquiry Product  :ProductCode

Inquiry Vendor   :VendorCo

MSC device is ready

MSC device capacity     : 1006390784 bytes

MSC device block number : 1965607

MSC device block size   : 512

Class is ready


紧接着,就会进行LOG信息的记录,从下面LOG可以看到,FatFs的操作过程。首先在U盘加载文件系统,然后创建或打开以 `20231122` 日期命名的文件夹并写入数据。接着获取U盘剩余空间,获取目录信息,最后卸载文件系统。


[main] 2023-11-22 00:01:12

[main] ------> Update information

[main] ------> Mount U disk file system

[main] ------> Write xls file

[fatfs] >>> Open or create 20231122 LOG file success

[main] ------> Get volume information

[main] >>> (964657 / 966404) KiB Used 0.18 %

[main] ------> Get dir information

[fatfs] >>> View Directory

[fatfs] >>> 20231122, (0x10)

[fatfs] >>> 20231031, (0x10)

[fatfs] >>> 20231030, (0x10)

[fatfs] >>> 20231101, (0x10)

[fatfs] >>> Sort Directory

[main] >>> dir path :/20231030/20231031/20231101/20231122

[main] >>> dir number :4

[main] ------> Unmount U disk file system

[main] >>> U disk file system unmounted ok


我们打开U盘可以看到已经在设定的文件夹中创建了一个命名为 `LOG.xls` 的 Excel 文件。 



以LOG + RTC时间戳为内容写入到Excel文件中。实际应用时记录的信息可以是系统不同任务执行情况,也可以是内核寄存器等便于维护调试的信息,或者是传感器的信息等。


以上,就是用U盘记录系统LOG信息的一些简单步骤和方法,实际应用中还要考虑更多情况,附件是源码,供大家参考。


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

本文由雪飘梦飞转载自Geehy极海半导体公众号,原文标题为:APM32芯得 EP.36 | APM32F4实现用U盘记录LOG信息,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

tandby模式下,如何唤醒MCU APM32的RTC与WKUP?

APM32F103系列低功耗模式有三种:睡眠模式、停止模式和待机模式。通过关闭内核、时钟源、设置调压器来降低功耗。本文极海半导体解析了APM32的tandby模式下的RTC唤醒与WKUP唤醒功能如何实现。

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

【经验】APM32F4 MCU在RT-Thread系统上添加以太网驱动和使用LwIP网络组件的方法

本文详细介绍了如何将极海半导体APM32F4 MCU在RT-Thread系统上添加以太网驱动和使用LwIP网络组件,其他APM32带有以太网控制器的MCU,在RT-Thread使用LwIP网络功能也是大同小异的,按照这个过程基本都可以把网络功能应用起来。

设计经验    发布时间 : 2023-08-25

【经验】软硬件开发工具Geehy使用教程,为MCU应用开发提供有力支持

极海半导体根据自身产品特色及应用领域要求,自主研发建成了一套完整的软硬件开发工具,可帮助用户缩短产品开发周期、提高产品稳定性,为客户在完成MCU应用开发工作的过程提供强有力的支持。

设计经验    发布时间 : 2022-09-17

极海半导体(Geehy Semiconductor)微控制器MCU选型指南(英文)

描述- Geehy Semiconductor Co., Ltd. is an IC Fabless company dedicated to developing industrial & automotive-grade MCUs, analog & mixed-signal ICs, and SoCs.

型号- APM32F030,APM32F051K6T6,APM32F4,APM32F405RGT6,APM32F003F6P6,APM32F003F6P7,APM32F103VET6,APM32E103,APM32F103VET7,APM32F051C6T6,APM32F0,APM32 SERIES,APM32F103RCT6,APM32F103RCT7,APM32E103RCT6,APM32E103VET6,APM32F105RCT6,APM32F035,APM32F407RGT6,GALT61120,APM32F030RCT6,APM32E103CET6,AGW32F103T4T6S,GW8811,APM32F407VET6,APM32A407ZGT7,GURC01,APM32A091RCT7,APM32F003F4U6,APM32A091,APM32F411VET6,APM32F051C6U6,APM32F103TBU7,APM32F103TBU6,APM32F107RBT6,G32A1445,APM32F051R8T6,APM32F417ZGT6,APM32F411CET6,G32A,APM32F405ZGT6,APM32F051K6U6,APM32M3514C8T7,APM32F030C8T6,G32A1445UAT0MLL,AGM32F103T4T6S,G32A1445UAT0MLH,APM32F103C8T6,APM32F103RBT7,APM32F411,GW3323HGU6,APM32F030K8T6,APM32F103RBT6,APM32A407,APM32F417,APM32F091CBU6,APM32M3514,APM32F407ZET6,APM32F072VBT6,APM32M3514C8U7,APM32E1,APM32,APM32F091CCU6,APM32E103CEU6,APM32F072R8T6,APM32F003F4M6,GW SERIES,APM32F107RCT6,APM32F072CBT6,APM32F407IGT6,APM32F003,APM32A103VET7,APM32F072CBT7,APM32F105RBT6,APM32F407,APM32F405,APM32F091,APW32F103T4T6S,APM32F405VGT6,APM32F035C8T7,GHD,APM32F072,APM32E103CCT6,APM32F103CCT6,APM32F051K8T6,APM32E103VCT6,APM32F051C8T6,APM32F072CBU6,APM32E103ZET6,GHD3125R,APM32F103VCT6,APM32F103ZET6,GEEHY-LINK,AP/GM/W32F103T4T6S,APM32F107VBT6,APM32A407VGT7,APM32A103,APM32F003F6U7,APM32F407RET6,APM32F407VGT6,GW3323,APM32F003F6U6,APM32F417IGT6,APM32F103T8U6,APM32F051K8U6,APM32F051C8U6,APM32F107,APM32F4T1RET6,APM32F105,APM32F105VCT6,APM32F103,APM32F417VGT6,GHD3440R5,APM32F051R6T6,APM32F103RET6,GHD3440R3,APM32F003F4P6,APM32F035K8T7,GURC,APM32F030CCT6,APM32F030C6T6,APM32F103R8T6,GALT,APM32F051,APM32F103CBT7,G32A1465UAT0MLL,APM32F103CBT6,GHD3440QE,G32A1465UAT0MLH,APM32F030K6T6,APM32F030R8T6,APM32F103VBT6,APM32F030K6T7,APM32F072C8T6,APM32F107VCT6,APM32F103T4T6S,APM32A103CBT7,APM32EF1,APM32F411CEU6,GW8811KEU6,GW8811CEU6,APM32F407ZGT6,APM32F072RBT6,APM32F072RBT7,APM32F003F6M6,GHD3440PF,APM32F407IGH6,APM32E103CCU6,GHD1620T,APM32A103RET7,APM32F105VBT6,APM32F030K6U6,GW,APM32E103RET6,APM32F072C8U6,G32A1465,APM32F072V8T6

选型指南  -  极海半导体  - Jul-2024 PDF 英文 下载

极海半导体APM32F407系列MCU支持国密算法,助力国产安全可控,适用于新能源等领域

极海推出的APM32F407系列MCU,结合当前环境要求,设计出了支持国密算法(SM2,SM3,SM4)的IP, 符合国家密码管理局认定和公布的密码算法标准及其应用规范,并凭借显著的性能优势,已应用至新能源、工业控制、医疗设备等众多领域。

厂牌及品类    发布时间 : 2023-01-07

【视频】极海APM32F407xG系列MCU培训

型号- APM32F405VGT6,APM32F091VCT6,APM32F051K6T6,APM32F091CCT6,APM32F003F6P6,APM32F051K8T6,APM32F103CCT6,APM32F405RGT6,APM32F003F6P7,APM32F103VET6,APM32E103VCT6,APM32F051C8T6,APM32F103RCT6,APM32E103ZET6,APM32F103RCT7,APM32F103VCT6,APM32F103ZET6,APM32E103RCT6,APM32E103VET6,APM32F415RGT6,APM32F407RGT6,APM32F030RCT6,APM32F091RCT6,APM32F003F6U7,APM32E103CET6,APM32F407RET6,APM32F407VGT6,APM32F415VGT6,APM32F407VET6,APM32F051K8U6,APM32F051C8U6,APM32F103TBU6,APM32F417VGT6,APM32F103RET6,APM32F051R8T6,APM32F417ZGT6,APM32F405ZGT6,APM32F051K6U6,APM32F030CCT6,APM32F030C8T6,APM32F103CBT6,APM32F103C8T6,APM32F030K6T6,APM32F030R8T6,APM32F103VBT6,APM32F103RBT6,APM32F407ZET6,APM32F407ZGT6,APM32F072VBT6,APM32F072RBT6,APM32F072RBT7,APM32F415ZGT6,APM32F407IET6,APM32F072CBT6,APM32F407IGT6,APM32F030K6U6,APM32E103RET6

商品及供应商介绍  -  极海半导体 PPTX 中文 下载

基于极海半导体APM32F411工业级高适配型MCU的移动电源控制板应用方案

随着技术的发展,消费者对移动电源产品品质和体验提出了更高要求,除了储电量、安全性、便携度等基本要求,更具美观、多功能、人性化等优势的产品才能赢得消费者的青睐。采用极海APM32F411RET6工业级高适配型MCU作为主控的移动电源控制板方案,满足性能、功能、体积等综合设计需求,可帮助客户打造更具性价比和市场竞争力的移动电源产品。

应用方案    发布时间 : 2024-08-14

极海车规级MCU凭借可靠的产品品质,斩获“2023汽车芯片50强”与“MCU创新先锋”两项大奖

近日,极海车规级MCU凭借可靠的产品品质、专业周到的客户技术支持服务,以及量产级解决方案良好的市场表现,相继斩获“2023汽车芯片50强”、“MCU创新先锋奖”两项行业大奖。作为国内领先的32位车规级芯片设计企业,极海积极布局以服务汽车智能化、电动化、网联化的快速融合。

厂牌及品类    发布时间 : 2023-11-30

【应用】极海半导体MCU APM32F103系列用于HMI人机界面,可满足HMI功耗调整、蓝牙通信等需求

本文推荐采用极海半导体推出的APM32F103系列MCU作为HMI人机界面的主控,最高96MHz工作频率,FLASH 256K,SRAM 64K,支持FPU单元;资源丰富,有CRC/RTC/DMA通道,两个DMA;通信接口丰富。

应用方案    发布时间 : 2023-05-25

极海联亮相2024全球MCU及嵌入式生态发展大会,展出新技术和产品并发表演讲

2024年7月25日,2024全球MCU及嵌入式生态发展大会在深圳君悦酒店举行,由AspenCore主办。极海作为特邀嘉宾在主论坛进行演讲,并展出新技术和产品,包括搭载Arm Cortex M52内核且采用Helium技术的G32R5系列实时控制MCU和针对电机市场的栅极驱动器与APM32M3514系列SoC等新品。

厂牌及品类    发布时间 : 2024-07-29

【应用】国产极海半导体APM32系列工业级MCU助力推动新型工业化发展

工业级MCU应用场景范围十分广泛,并对使用寿命、温度、湿度、电磁辐射等有着严格的品质要求。极海半导体长期深耕中高端工控市场,本文就以绝对值编码器、高性能伺服驱动器及变频器方案为例,详细介绍极海半导体32位APM32位工业级MCU在工控领域的出色表现。

应用方案    发布时间 : 2022-11-02

【应用】聚焦能源结构转型,极海半导体APM32 MCU助力家用光储充并网管理系统,共创绿色低碳未来

极海半导体聚焦能源行业结构转型,APM32系列工业级MCU已成功应用于微型光伏逆变器、直流充电桩及储能电源等方案中;还将推出面向安全电压等级的5~16串锂电池BMS专用AFE芯片BMP1601,以及更多低功耗、高性能的新能源领域应用方案。

应用方案    发布时间 : 2022-12-31

APM32F411xCxE Arm® Cortex®-M4F core-based 32-bit MCU User Manual

型号- APM32,APM32F411XCXE SERIES,APM32F411XCXE

用户指南  -  极海半导体  - V 1.3  - 2024.1.24 PDF 英文 下载

【应用】极海半导体APM32F035主控32位MCU用于医疗离心机,内置12位ADC及运放,支持霍尔补偿

目前医疗离心机用到的单片机也非常多,功能也越来越多集成化,大大降低产品设计的工作。本文推荐极海半导体APM32F035主控32位MCU,该芯片具有M0+内核最高72MHz工作频率,且内置12位的ADC,支持可编程转换分辨率、提高转换速率。

应用方案    发布时间 : 2023-05-30

【应用】极海32位MCU用于光伏逆变器,内置3个精度12位的ADC,主频高达168MHz

极海半导体APM32F407VGT6在硬件上标准LQFP100封装,高达168MHz的主频,独立FPU模块,高达82个I/O,操作简单,提供标准DEMO驱动程序等优点,是光伏逆变器应用或者其他通用MCU场景的优秀选择。

应用方案    发布时间 : 2022-12-23

展开更多

电子商城

查看更多

只看有货

品牌:极海半导体

品类:MCU

价格:¥1.6200

现货: 100

品牌:极海半导体

品类:MCU

价格:¥14.9850

现货: 60

品牌:极海半导体

品类:MCU

价格:¥14.8500

现货: 51

品牌:极海半导体

品类:MCU

价格:¥9.4500

现货: 50

品牌:极海半导体

品类:MCU

价格:¥9.7200

现货: 50

品牌:极海半导体

品类:MCU

价格:¥12.4200

现货: 50

品牌:极海半导体

品类:MCU

价格:¥15.7950

现货: 50

品牌:极海半导体

品类:MCU

价格:¥13.5000

现货: 50

品牌:极海半导体

品类:MCU

价格:¥14.1750

现货: 50

品牌:极海半导体

品类:MCU

价格:¥12.1500

现货: 50

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:恒烁

品类: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

品牌:ST

品类:MCU

价格:¥6.5000

现货:51,000

品牌:MICROCHIP

品类:MCU

价格:¥5.7360

现货:50,000

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

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

收藏
收藏当前页面