控制/MCU
最近两年,想必大家都感受了MCU“买不起”的价格。
前不久,沁恒微电子推出了价格极具诱惑的MCU:CH32V003系列,价格低至5毛级别,而且,还是32位的主频高达48M的通用MCU。
32位MCU是怎么做到单价5毛?
国内半数以上的MCU厂商都采用外购IP组装模式,作为芯片核心部分的处理器内核IP,其研究技术却不在自己手中,致使MCU厂商不得不向第三方支付IP授权费,而这笔费用最终只能由消费者买单! 为进一步替客户节省成本,专注于连接技术和MCU内核研究的沁恒,基于自研的青稞RISC-V微处理器内核IP,及USB、以太网、蓝牙等专业接口IP,组合构建了全栈MCU芯片。全栈自研,全内置,不用外部ULPI芯片!各IP内在紧密结合,不仅提高数据交换效率,还无需支付第三方IP授权费。 基于这种包含内核在内的全栈自研模式,最新推出的V003系列一步到位,直接做到5毛级别。
5毛单片机能有啥资源?
你可能认为价格5毛的单片机没啥资源,但是,在CH32V003系列中,常规的片上资源基本都有。 如:UART、 SPI、 I2C、 ADC、 定时器TIM、 独立/窗口看门狗WDG、 DMA等。 下面给大家看下芯片数据手册中的资源配置信息:
同时,主频高达48MHz、支持电源管理和低功耗、单线调试、64 位芯片唯一 ID等众多实用的功能(还有更多资源,可以查阅手册)。 这些资源足以应对市面上大部分场景和应用,特别是现在的众多物联网终端设备。 除了超值型V003系列,当有更高资源需求的时候,仍有更多RISC-V MCU可供选择,例如互联型CH32V307系列:提供USB 2.0高速接口(480Mbps)、千兆以太网MAC,并内置了自研PHY,加入单精度浮点指令集,具有更快的数据传输速度和更高的运算性能;无线型CH32V208系列:搭载青稞V4C内核,片上集成2Mbps低功耗蓝牙BLE通讯模块、10M以太网MAC+PHY模块、USB2.0全速设备+主机/设备接口等,工程师调侃是“全能型小网关”。
V003单片机主要特性
CH32V003系列采用青稞32位RISC-V内核,支持RV32EC指令集,是一款宽电压工作范围(2.7至5.5V)的MCU。 系统主频可达48MHz,支持2级中断嵌套,具有快速可编程中断控制器和硬件中断堆栈。 截取数据手册中的信息:
RISC-V优势
首先,RISC-V的指令集架构开源。 与传统的x86、arm指令集相比,RISC-V标准指令集开源,可以在此基础上进行设计研究,既可以完全自研实现内核自由和免费,也可以付费购买第三方处理器内核IP。 正如前面提到的5毛级别超值型CH32V003,追本溯源,沁恒其他更高资源的CH32系列RISC-V MCU,同样采用了自研的青稞RISC-V处理器IP,不需要外购arm或支付RISC-V的IP授权费。相比同资源的通用MCU,更具价格优势。
其次,RISC-V指令集更加灵活,能够针对应用做到更加优化。 再次,RISC-V或可扛起国产芯片处理器自主可控的大旗。 就俄罗斯而言,arm宣布断供后,无论是x86还是arm架构均已对俄罗斯关上大门,殃及俄罗斯的数据中心建设和运营,甚至整个互联网。2019年美国对华为采取措施之后,国产芯片行业充分认识到了掌握芯片架构的重要性,因此开始全力投入研发RISC-V架构。 未雨绸缪,国产芯片想要自主可控,就需要掌握核心技术,全栈自研是必经之路。 沁恒官方也给出了几个关键词:全栈自研、中国芯、内核自由等。
“自研RISC-V的战略意义不在于节省第三方IP的授权费和每只芯片的提成费,而在于掌握MCU核心技术,便于与应用结合提升专业性和灵活性,避免了核心部件和业务的外包,确保芯片‘内核自由’,实现真正的处理器内核级别的自主可控,在通用的RISC-V生态上担负起对客户的长期保供承诺。”
V003单片机开发难度
通过查看官方给出的相关信息,开发起来不难,如果有使用过沁恒的CH32单片机,可以说完全没有难度。 下面讲一下其中几个开发者关心的内容。
1.官方例程 首先,官方提供了各种外设的例程,对于新手直接拿到就可以使用。 可以说,极大地方便了学习和开发。
2.集成开发环境(IDE) 官方提供的例程使用的集成开发环境:MounRiver Studio (简称MRS)。 目前市面上用于开发 RISC-V 单片机的集成开发环境不多(相对),前面也给大家分享过几款常见 RISC-V 开发工具链。 比如大家熟知的IAR、Embedded Studio等都有针对 RISC-V 的工具,但它们都是收费软件。 但是,MounRiver Studio不一样,免费,免费,免费! MRS作为一款针对RISC-V等内核MCU的免费集成开发环境(IDE),内部集成了编辑器、工程管理系统、编译器、链接器、库管理、仿真调试器和下载器等在内的完整开发资源。 所以,你可以放心的使用,不用担心收到 ** 函。
3.编程语言
可能很多读者没有使用过 RISC-V 的单片机,可能会认为开发语言是不是其他,像Python、Go等编程语言。 这里可以告诉大家,目前市面上 RISC-V 单片机的编程语言,大部分还是和传统单片机一样,主要使用 C 语言进行开发。 这里给大家分享一段官方的Demo代码:
void ADC_Function_Init(void){ ADC_InitTypeDef ADC_InitStructure = {0}; GPIO_InitTypeDef GPIO_InitStructure = {0}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div8); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOC, &GPIO_InitStructure); ADC_DeInit(ADC1); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_Calibration_Vol(ADC1, ADC_CALVOL_50PERCENT); ADC_DMACmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1));}看着代码,是不是有种熟悉的味道? 是的,开发难度不高,有一定单片机基础的朋友,可以说分分钟将他拿下。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !