MM32F5330 微控制器搭载了安谋科技授权的 Arm®v8-M 架构“星辰” STAR-MC1 内核(兼容 Cortex-M33) 处理器,最高工作频率可达 180MHz。内置了 128KB Flash, 32KBSRAM, 所有 Flash 和 SRAM 配置 ECC, 并集成了丰富的 I/O 端口和外设模块,包括 2 个3MSPS 12 位的 ADC, 1 个 12 位的 DAC, 2 个模拟比较器, 2 个 16 位高级定时器, 2 个16 位和 2 个 32 位通用定时器, 2 个 16 位基础定时器和 1 个低功耗定时器,还包含通信接口如 2 个 I2C, 1 个 I3C 从机, 3 个 SPI 或 I2S, 4 个 UART, 1 个 USART, 1 个低功耗UART, 1 个集成了内部 PHY 的 USB 2.0 全速 Device/Host 控制器,以及 1 个 FlexCANFD 接口。
工作电压为 1.8V ~ 5.5V,工作温度范围为扩展工业型 -40℃ ~ +105℃。 内置多种省电工作模式保证低功耗应用的要求。
STAR-MC1内核的优点:
- 高性能:
- STAR-MC1采用了从V6-M到V7-M,再到V8-M的架构升级,显著提高了单片机的处理能力。
- 继承了V7和V8结构的DSP指令和浮点指令计算单元,与上一代的Arm处理器相比,同一主频下有20%的性能提升。
- 引入了Cache的结构到M级别的处理器中,提高了系统级上的性能和效率,而以往M系列处理器通常不使用缓存技术。
- 低功耗:
- STAR-MC1在引入缓存技术的同时,还继续降低了产品的面积和功耗,实现了性能、功耗、面积的同时进步。
- 例如,上海航芯ACM32G103系列在STOP2模式下功耗低于10uA,这得益于其低功耗设计和各种高集成度模拟外设。
- 安全性:
- V8-M架构开始支持TrustZone安全协议以及自定义扩展,包括协处理器接口和定制化指令集拓展。
- TrustZone安全方案可以将运行环境隔离成安全区和非安全区,通过硬件隔离确保服务程序或数据得到保护。
- 创新性:
- 全球同步首发支持自定义指令扩展集,展示了STAR-MC1的创新性。
- 在内核、总线和外设配置等多个方面进行了创新,包括浮点运算单元(FPU)、数字信号处理单元(DSP)等算法加速单元,以及丰富的外设模块和充足的I/O端口。
- 适配性:
- 可以适配各种无感FOC算法,如上海航芯ACM32F403系列可以适配各种无感FOC算法,降低了开发门槛。可以作为多种MCU产品的内核,如MM32F5270 MM32F5330和上海航芯ACM32G103系列都采用了STAR-MC1内核。
• MM32F5330 微控制器通信接口丰富
– 4 个 UART 接口
– 1 个 USART 接口(支持 SPI 模式)
– 1 个 LPUART 接口
– 2 个 I2C 接口
– 1 个 I3C 从机接口
– 3 个 SPI 接口(支持 I2S 模式)
– 1 个 USB 2.0 全速 Device/Host 控制器,内置 PHY
– 1 个 FlexCAN-FD 接口,兼容 CAN 2.0B 和 CAN-FD 协议
本次测评的为MM32F5333D7P型号。
下面进入开发,开发环境搭建:
安装Keil PACK 还是不识别芯片,可能是我Keil3.6版本低导致,只好选择ARMV8架构的
DAP识别芯片,那就成功90%。
添加FLM 手动识别芯片。
编写点灯程序:跟标准库风格类似。
void GPIO_Configure(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 ;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_WriteBit(GPIOB, GPIO_Pin_10 | GPIO_Pin_11, Bit_SET);
GPIO_WriteBit(GPIOC, GPIO_Pin_6 | GPIO_Pin_7, Bit_SET);
}
/***********************************************************************************************************************
* @brief
* [url=home.php?mod=space&uid=536309]@NOTE[/url] none
* @param none
* @retval none
*********************************************************************************************************************/
void GPIO_IO_Toggle(GPIO_TypeDef *GPIOn, uint16_t PINn)
{
if (Bit_RESET == GPIO_ReadOutputDataBit(GPIOn, PINn))
{
GPIO_SetBits(GPIOn, PINn);
}
else
{
GPIO_ResetBits(GPIOn, PINn);
}
}
/***********************************************************************************************************************
* @brief
* @note none
* @param none
* @retval none
*********************************************************************************************************************/
void GPIO_LED_Toggle_Sample(void)
{
printf("\r\nTest %s", __FUNCTION__);
GPIO_Configure();
while (1)
{
GPIO_IO_Toggle(GPIOB, GPIO_Pin_10);
GPIO_IO_Toggle(GPIOB, GPIO_Pin_11);
GPIO_IO_Toggle(GPIOC, GPIO_Pin_6);
GPIO_IO_Toggle(GPIOC, GPIO_Pin_7);
PLATFORM_DelayMS(500);
}
}
下载OK
现象:
|