本帖最后由 abner_ma 于 2022-7-2 17:08 编辑

        互联型RISC-V单片机CH32V307基于32位RISC-V内核青稞V4设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。加入单精度浮点指令集,扩充堆栈区,具有更高的运算性能。扩展串口UART数量到8组,电机定时器到4组。提供USB2.0高速接口(480Mbps)并。我最看重的是内置了PHY收发器,以太网MAC升级到千兆并集成了10M-PHY模块。
     开发板上图:
A.png
B.png

MCU架构:
C.png
产品特点

  • 青稞V4F处理器,最高144MHz系统主频
  • 支持单周期乘法和硬件除法,支持硬件浮点运算(FPU)
  • 64KB SRAM,256KB Flash
  • 供电电压:2.5/3.3V,GPIO单元独立供电
  • 多种低功耗模式:睡眠、停止、待机
  • 上/下电复位、可编程电压检测器
  • 2组18路通用DMA
  • 4组运放比较器
  • 1个随机数发生器TRNG
  • 2组12位DAC转换
  • 2单元16通道12位ADC转换,16路触摸按键TouchKey
  • 10组定时器
  • USB2.0全速OTG接口
  • USB2.0高速主机/设备接口(480Mbps 内置PHY)
  • 3个USART接口和5个UART接口
  • 2个CAN接口(2.0B主动)
  • SDIO接口、FSMC接口、DVP数字图像接口
  • 2组IIC接口、3组SPI接口、2组IIS接口
  • 千兆以太网控制器ETH(内置10M PHY)
  • 80个I/O口,可以映射到16外部中断
  • CRC计算单元,96位芯片唯一ID
  • 串行2线调试接口
  • 封装形式:LQFP64M、LQFP100
  • 选型:
  • D.png

原理图;
3.png

RT-Thread Studio 傻瓜式开发:
基于开发板:
1.png

10.png



代码:
/********************************** (C) COPYRIGHT *******************************
  • * File Name          : main.c
  • * Author             : WCH
  • * Version            : V1.0.0
  • * Date               : 2021/06/06
  • * Description        : Main program body.
  • * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
  • * SPDX-License-Identifier: Apache-2.0
  • *******************************************************************************/
  • #include "ch32v30x.h"
  • #include <rtthread.h>
  • #include <rthw.h>
  • #include "drivers/pin.h"
  • #include <board.h>
  • /* Global typedef */
  • /* Global define */
  • #define LED0_PIN  35   //PC3
  • /* Global Variable */
  • /*********************************************************************
  • * @fn      main
  • *
  • * @brief   Main program.
  • *
  • * @return  none
  • */
  • int main(void)
  • {
  •     rt_kprintf("MCU: CH32V307\n");
  •         rt_kprintf("SysClk: %dHz\n",SystemCoreClock);
  •     rt_kprintf("www.wch.cn\n");
  •         LED1_BLINK_INIT();
  •         GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);
  •         while(1)
  •         {
  •             GPIO_SetBits(GPIOA,GPIO_Pin_0);
  •             rt_thread_mdelay(500);
  •             GPIO_ResetBits(GPIOA,GPIO_Pin_0);
  •             rt_thread_mdelay(500);
  •             GPIO_SetBits(GPIOA,GPIO_Pin_1);
  •                   rt_thread_mdelay(500);
  •                   GPIO_ResetBits(GPIOA,GPIO_Pin_1);
  •                   rt_thread_mdelay(500);
  •         }
  • }
  • 复制代码
    调试,下载:
      有点困混的是芯片自身256+64K,需要打开箭头所示的192ROM+128KRAM ,RTT才运行。
    微信图片_20220702165305.png


    RT-Thread Studio 自带终端打印;

    12.png


       RISC-V架构特权模式包括机器模式、监督模式、用户模式。赤菟V307中实现了其中两种,即机器模式和用户模式。机器模式下具有最高的权限,可以访问所有的CSR,同时也可以访问PMP锁定之外的所有物理地址区域。用户模式下具有最低的权限,访问限定的CSR,且仅能访问PMP允许访问的物理地址区域。当发生异常或中断时,其进入机器模式处理异常和中断。
    E.png

    V307的通用寄存器如下图所示,其中x0-x31为整形寄存器,f0-f31为浮点寄存器。


    对于中断函数,需要对所有caller saved寄存器保存。V307支持硬件压栈,使能硬件压栈后当发生中断或异常时会对整形的caller saved寄存器进行自动保存,中断返回后自动恢复。