本帖最后由 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



代码:
  1. /********************************** (C) COPYRIGHT *******************************
  2. * File Name          : main.c
  3. * Author             : WCH
  4. * Version            : V1.0.0
  5. * Date               : 2021/06/06
  6. * Description        : Main program body.
  7. * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
  8. * SPDX-License-Identifier: Apache-2.0
  9. *******************************************************************************/
  10. #include "ch32v30x.h"
  11. #include <rtthread.h>
  12. #include <rthw.h>
  13. #include "drivers/pin.h"
  14. #include <board.h>

  15. /* Global typedef */

  16. /* Global define */


  17. #define LED0_PIN  35   //PC3

  18. /* Global Variable */

  19. /*********************************************************************
  20. * @fn      main
  21. *
  22. * @brief   Main program.
  23. *
  24. * @return  none
  25. */
  26. int main(void)
  27. {
  28.     rt_kprintf("MCU: CH32V307\n");
  29.         rt_kprintf("SysClk: %dHz\n",SystemCoreClock);
  30.     rt_kprintf("www.wch.cn\n");
  31.         LED1_BLINK_INIT();

  32.         GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);
  33.         while(1)
  34.         {
  35.             GPIO_SetBits(GPIOA,GPIO_Pin_0);
  36.             rt_thread_mdelay(500);
  37.             GPIO_ResetBits(GPIOA,GPIO_Pin_0);
  38.             rt_thread_mdelay(500);

  39.             GPIO_SetBits(GPIOA,GPIO_Pin_1);
  40.                   rt_thread_mdelay(500);
  41.                   GPIO_ResetBits(GPIOA,GPIO_Pin_1);
  42.                   rt_thread_mdelay(500);
  43.         }


  44. }
调试,下载:
  有点困混的是芯片自身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寄存器进行自动保存,中断返回后自动恢复。