查看: 1614|回复: 1

[N32G430试用报告]用过N32G430,你还会考虑Cortex-M0的MCU吗?

[复制链接]
  • TA的每日心情
    郁闷
    2024-1-31 23:05
  • 签到天数: 144 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2023-9-24 16:06:38 | 显示全部楼层 |阅读模式
    分享到:
    [N32G430试用报告]用过N32G430,你还会考虑Cortex-M0的MCU吗?
    N32G430初识
    最近一起关注着Nation国民技术公司的通用MCU,我的主要目的就是用于国产化MCU的方案替代。2023年3月国民技术的N32G430系列荣获年度最佳MCU。我也是在那时开始注意这颗物料。
    N32G430概述
      N32G430是一颗通用MCU,基于ARM公司Cortex-M4F内核。具有以下特性:
    • 工作主频最高达128MHz
    • 集成高达64KB的片内加密存储Flash
    • 支持多用户分区权限管理,最大16KB的嵌入式SRAM
    • 内置一个内部高速AHB总线,两个低速外设时钟总线APB及总线矩阵
    • 最多支持40个可复用I/Os,提供丰富的高性能模拟接口,包括1个12位4.7Msps ADC,最多支持16个外部输入通道和3个内部通道
    • 提供多种数字通信接口,包括4个UART、2个I2C、2个SPI/I2S、1个CAN 2.0B通信接口
    N32G430的优势
      与某32F103相比,N32G430的ADC采样速率已经高达4.7Msps,而且内置了3个高速比较器。简单点说,没有增加MCU成本,却减少了物料,缩小了PCB面积。经济上就得到了老板与销售的好评;N32G430片上又集成了多路互补PWM输出,保留了CAN 2.0外设接口,对于我的DC/DC模块化电源设计简直就是绝配。
    N32G430开箱
      包装拿在手中非常厚实。不用担心快递的暴力分拣。打开包装,在防静电袋中躺着的便是今天的主角——国民技术N32G430C8L7。一颗有128MHz主频,片上64KB Flash,16KB RAM的Cortex-M4F内核的MCU。
      主芯片N32G430C8的48个引脚,除少量引脚用于LED灯与按键外,其余功能引脚全部以插针的方式引出。对我们原型开发前方案验证非常友好!
    板载还自带了国民技术的NS-Link调试器,提供了在线JTAG调试与虚拟串口功能。多种角度方便工程师们试用与评估。
    DSCN5500.jpg
    DSCN5505.jpg
    DSCN5502.jpg
    DSCN5506.jpg
    DSCN5509.jpg
    DSCN5508.jpg

    Keil开发环境与Blinky闪灯
    keil开发环境
    国民技术官方对于Keil提供了器件包的加载方案,通过FTP下来.pack包后,自行导入到keil里面即可。导入成功后,我们便可以在选项页里面选择N32G430C8芯片了。
    keil安装完成N32.png
    keil选择N32G430C8_2.png
    另:看新闻,国民技术与IAR达成了战略关系,N32芯片将在新版本的IAR环境下直接支持。估计Keil环境下直接安装N32的pack也不远了。
    blinky闪灯
    我们编写一个简单的示例程序来验证一下开发环境。也验证一下开发板的硬件与调试环境。我们将PA1引脚配置为输出模式,控制其输出高低电平,观察LED灯的亮灭。测试代码如下:
    1. int main(void)
    2. {
    3.     uint32_t ret = 0;
    4.     bsp_init();
    5.     SysTick_Config(128000);
    6.     NVIC_EnableIRQ(SysTick_IRQn);
    7.     time_line_ms = 500;
    8.     while (1)
    9.     {
    10.         if (time_line_ms == 0)
    11.         {
    12.         time_line_ms = 500;
    13.         bsp_led_toggle();
    14.         }
    15.     }
    16. }

    17. void SysTick_Handler(void)
    18. {
    19.     if (time_line_ms > 0)
    20.     {
    21.         time_line_ms--;
    22.     }
    23. }
    复制代码
    连接USB线,下载,观察板上LED的亮灭。
    VID_20230912_144851 00_00_00-00_00_30.gif

    高性能ADC采样测试
    国民技术N32G430C8芯片集成了高性能ADC模-数转换外设,12位SAR型ADC及接近5Msps采样速率,支持多种工作模式, 能满足大多数模数转换应用场景。
    N32 ADC 正常工作需要配置 3 种时钟,其分别为工作时钟、采样时钟和计时时钟。工作时钟仅可配置为HCLK,采样时钟我们这里也使用AHB_CLK做为采样时钟源。计时时钟,我们使用HSE为源,进行8分频得到1MHz。
    配置完成时钟,我们还需要启动ADC外设中的“ADC数字校准模块”,其用于测量和校正 ADC 的偏移电压,校准过程通过内部连接,对理想的“0”电压进行采样,计算出 offset,在正常工作时就可以去除 offset 电压。
    下面为我使用ADC模块采样摇杆位置状态的流程图:


    N32_ADC配置流程.drawio.png
    源代码如下:
    bsp.c
    1. static void adc_init(void)
    2. {
    3.     GPIO_InitType GPIO_InitStructure;
    4.     ADC_InitType ADC_InitStructure;

    5.     /* Enable peripheral clocks ------------------------------------------------*/
    6.     /* Enable GPIO ADC clock*/
    7.     RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOA | RCC_AHB_PERIPH_ADC);
    8.     /* RCC_ADCHCLK_DIV16*/
    9.     ADC_Clock_Mode_Config(ADC_CKMOD_AHB, RCC_ADCHCLK_DIV16);
    10.     RCC_ADC_1M_Clock_Config(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV8); // selsect HSE as RCC ADC1M CLK Source

    11.     GPIO_Structure_Initialize(&GPIO_InitStructure);
    12.     /* Configure adc input as analog input -------------------------*/
    13.     GPIO_InitStructure.Pin = GPIO_PIN_3 | GPIO_PIN_2;
    14.     GPIO_InitStructure.GPIO_Mode = GPIO_MODE_ANALOG;
    15.     GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure);

    16.     ADC_InitStructure.MultiChEn = DISABLE;
    17.     ADC_InitStructure.ContinueConvEn = DISABLE;
    18.     ADC_InitStructure.ExtTrigSelect = ADC_EXT_TRIGCONV_REGULAR_SWSTRRCH;
    19.     ADC_InitStructure.DatAlign = ADC_DAT_ALIGN_R;
    20.     ADC_InitStructure.ChsNumber = ADC_REGULAR_LEN_1;
    21.     ADC_Initializes(&ADC_InitStructure);
    22.     /* Enable ADC */
    23.     ADC_ON();
    24.     /* Check ADC Ready */
    25.     while (ADC_Flag_Status_Get(ADC_RD_FLAG, ADC_FLAG_AWDG, ADC_FLAG_RDY) == RESET)
    26.         ;
    27.     /* Start ADC1 calibration */
    28.     ADC_Calibration_Operation(ADC_CALIBRATION_ENABLE);
    29.     /* Check the end of ADC1 calibration */
    30.     while (ADC_Calibration_Operation(ADC_CALIBRATION_STS) == SET)
    31.         ;
    32. }
    复制代码
    main.c
    1. int main(void)
    2. {
    3.     uint32_t ret = 0;
    4.     bsp_init();
    5.     SysTick_Config(128000);
    6.     NVIC_EnableIRQ(SysTick_IRQn);
    7.     time_line_ms = 10;
    8.     while (1)
    9.     {
    10.         if (time_line_ms == 0)
    11.         {
    12.             time_line_ms = 10;
    13.             ret = bsp_adc_data_get(joystick_x_adc_channel);
    14.             joystick_coordinate[0] = ret * 100 / 0xFFF;
    15.             ret = bsp_adc_data_get(joystick_y_adc_channel);
    16.             joystick_coordinate[1] = ret * 100 / 0xFFF;
    17.         }
    18.     }
    19. }

    20. void SysTick_Handler(void)
    21. {
    22.     if (time_line_ms > 0)
    23.     {
    24.         time_line_ms--;
    25.     }
    26. }
    复制代码
    观察结果:

      通过手拨动摇杆,可以看到ADC通过分压电阻采集到了对应的电压值。上图中,我将数值做了百分比化,其在初始状态为“居中”,可以看到采样值在0x30附近,即50%。随着摇杆或上推,或下拉,数值也在0-100%之间变化。
    N32G430_ADC.gif
    后记
    本次浅浅地试用了国民技术N32G430C8芯片,其性能已经远超cortex-M3系列的MCU。无论是在物联网应用上面的小模块,亦或是电源应用的主控芯片,其均能很好的胜任。高主频下带来的强处理能力,必会抢夺大部分原Cortex-M3的市场。
    在天猫国民技术旗舰店里N32G430C8零售价为3.20元(含税),我估计如果批量采购的话,价格应该还会有优惠。如此强劲的Cortex-M4内核的MCU,在这个价格下面,你还会选择M3的产品吗?反正我不会!



    回复

    使用道具 举报

    该用户从未签到

    发表于 2023-12-21 11:29:49 | 显示全部楼层
    射频前端芯片设计原厂三伍微电子的产品有WIFI FEM、IOT FEM、PA和开关。
    产品优势
    FEM优势:(1)谐波好,免去外置滤波器,(2)无需调试匹配电路,直接替换。
    开关优势:低插损,低延时,高频率(支持7.2GHz)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-9 10:49 , Processed in 0.129346 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.