打印
[MM32硬件]

【灵动微电子MM32F0121测评】-001-基础测试

[复制链接]
111|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
letchgo|  楼主 | 2025-6-15 10:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

[i=s] 本帖最后由 letchgo 于 2025-6-15 11:16 编辑 [/i]<br /> <br />

1、概述

(1)本次测评基于MM32F0121C6PV开发板进行的,该芯片的资源是64K flash和8K RAM。

(2)初次使用MM32芯片,此前已经很久没有使用MDK进行开发,因此在编译和搭建环境花了不少时间。建议MM32后续也增加gcc的例程及相关的ld文件。

(3)本帖主要是记录遇到的问题,同时反馈测评结果。

(4)代码目录构成

image.png

2、基础测试

2.1 说明

整体代码基本上都是移植lib_sample中代码整合成一个工程。

2.2 搭建开发环境

由于一直使用makefile开发,但是mm32 的gcc的ld文件不好找,时间短,便使用keil进行开发,重新安装了下keil,遇到了一些问题。环境搭建好之后,随便打开一个demo,配置烧写器一些参数,如下图:

image.png

2.3 SPI及flash读写测试

W25Q特性介绍●SPI串行存储器系列    -W25Q64:64M 位/8M 字节     -W25Q16:16M 位/2M 字节     -W25Q32:32M 位/4M 字节     -每 256 字节可编程页   

●高性能串行Flash存储器      -比普通串行Flash性能高6倍           -80MHz时钟频率           -双倍SPI相当于160MHz          -四倍SPI相当于320MHz          -40MB/S连续传输数据      -30MB/S随机存取(每32字节)      -比得上16位并行存储器

●灵活的4KB扇区结构      -统一的扇区擦除(4K 字节)      -块擦除(32K 和 64K 字节)  -一次编程 256 字节  -至少 100,000 写/擦除周期  -数据保存 20 年 ●标准、双倍和四倍SPI -标准 SPI:CLK、CS、DI、DO、WP、HOLD          -双倍 SPI:CLK、CS、IO0、IO1、WP、HOLD          -四倍 SPI:CLK、CS、IO0、IO1、IO2、IO3

●高级的安全特点 -软件和硬件写保护  -选择扇区和块保护  -一次性编程保护(1)  -每个设备具有唯一的64位ID(1) 代码片段:

void plt_itf_setup_w25q(void)
{
  mc_w25q_config config;
  SPI_Configure();//spi硬件初始化
  config.write_block = spi_read_write_byte;
  config.enable_gpio_cb = mc_enable_w25q;
  config.disable_gpio_cb = mc_disable_w25q;
  if (mc_w25q_setup(config) == 0x00)
  {
    printf("w25q init failed\r\n");
  }
  else
  {
    printf("w25q init success\r\n");
  }

   test_w25qxx_readwrite();//测试
}

测试结果:

通过写入和读取的数据对比得出是否成功:

image.png

2.4 串口打印

使用自带的串口进行打印

image.png

2.5 呼吸灯实验

void plt_itf_breathlight_set(uint16_t duty)
{
  TIM_SetCompare3(TIM1, (uint32_t)duty * get_time_period() / 1000);
}
#define BREATH_DELAY 8
void plt_itf_breathlight_run(void)
{
  static uint16_t duty_breath = 0;
  static uint8_t type_run = 0;
  if (duty_breath <= 10)
  {
    type_run = 0;
  }
  else if (duty_breath > (1000-BREATH_DELAY))
  {
    type_run = 1;
  }
  if (type_run == 0)
  {
    duty_breath += BREATH_DELAY;
  }
  else if (type_run == 1)
  {
    if (duty_breath >= BREATH_DELAY)
    {
      duty_breath -= BREATH_DELAY;
    }
  }

  plt_itf_breathlight_set(duty_breath);
}

2.6 ADC实验

读取板载的一个转盘ADC实验,顺时针和逆时针转动,串口打印adc数据。

void plt_adc_init(void)
{
  drv_adc_init();

  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
void plt_itf_adc_run(void)
{
  // while (RESET == ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))
  // {
  // }

  ADC_ClearFlag(ADC1, ADC_FLAG_EOC);

  Voltage = (float)ADC_GetChannelConvertedValue(ADC1, ADC_Channel_3) * (float)3.3 / (float)4096.0;
}
int16_t plt_adc_volatge(void)
{
  return(int16_t)(Voltage*1000);
}

image.png

2.7 RTC实验

通过串口打印读取时间戳

typedef struct
{
    uint16_t year;
    uint8_t  month;
    uint8_t  day;
    uint8_t  week;
    uint8_t  hour;
    uint8_t  minute;
    uint8_t  second;
} rtc_calendar_data_t;
void plt_itf_rtc_printf(void);
void plt_itf_rtc_init(void);
void plt_itf_set_rtc_timer(uint16_t Year, uint8_t Month, uint8_t Day, uint8_t Hour, uint8_t Minute, uint8_t Second);
void plt_itf_get_rtc_timer(rtc_calendar_data_t *RTC_Calendar);

image.png

2.8 I2C实验

I2C实验主要是驱动板载的EEROM-24c02,进行简单的读写测试 (1)AT240C02 EEPROM介绍

  • 宽范围的工作电压1.8V~5.5V低电压技术
  • 1mA典型工作电流- 1uA典型待机电流·存储器组织结构
  • 24C02,256 X8(2K bits)- 24C04,512×8(4K bits)- 24C08,1024 × 8 (8K bits)-24C16,2048 ×8(16K bits)-24C32,4096 X8(32K bits)- 24C64,8192 × 8(64K bits)
  • 2线串行接口,完全兼容l2C总线
  • I2C时钟频率为1 MHz (5V),400 kHz (1.8V,2.5V,2.7V)施密特触发输入噪声抑制
  • 硬件数据写保护
  • 内部写周期(最大5 ms)可按字节写
  • 页写:8字节页(24C02),16字节页(24C04/08/16),32字节页(24C32/64)可按字节,随机和序列读
  • 自动递增地址
  • 高可靠性擦写寿命:100万次-数据保持时间:100年
  • image.png
有规格书可知,EEPROM的读写速率是100KHZ.

(2)与flash的区别

image.png

(3)测试结果   

image.png

(4)部分代码

void plt_itf_eerom_test(void)
{
  uint8_t i = 0;
  uint8_t ReadBuffer[30]={0x00}, WriteBuffer[30]={"Hello 21ic, Hello MM32F0121"};
  printf("\r\nTest %s", __FUNCTION__);
  printf("\nEEPROM Write : ");
  plt_itf_eerom_write(0, WriteBuffer, 30);
  printf("\nEEPROM Read  : \r\n");
  plt_itf_eerom_read(0, ReadBuffer, 30);
  printf("%s\n",ReadBuffer);
}

3、问题记录

3.1、第一步便遇到了问题,无法安装0120的DFP,其他的均可以

image.png

后面重新安装了版本高一点的keil,,且不能安装在中文目录下,再次安装pack包才可以。

3.2、新建工程一直卡在.s文件,原因是没有勾选 micro_lib

image.png

image.png

3.3、编译总是容易出错

keil经常会因为一个其他头文件错误,包含进来之后无法准确定位哪里错误导致找错误找半天

3.4、rtc时钟时死机

原因应该是未处理中断,而中断开启了,这里给关闭

image.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

36

帖子

1

粉丝