当前位置: 首页 > news >正文

RSICV国产芯片之CHV208

1. 芯片选型分析的对比维度

分析或者对标应用的芯片替代思路 

1.1 内核/主频/存储空间支持

内核能力/指令集支持(考虑工具链兼容性); 

主频:对比计算能力是否满足基本要求

存储:内存--数据搬移空间决定数据运算的复杂度, FLASH--程序空间决定程序的复杂度

1.2 外设接口: (传感器接入,信号获取)

UART/I2C/SPI--数字外设接口能力,路数,最高主频(刷新率),接口协议是否通用

ADC/运放--模拟信号接口能力, 位数,信噪比,信号处理范围

SDIO 

1.3 驱动能力

PWM--路数,分辨率,最高频率

DAC--位数,精度

1.4音视频

I2S--音频接口(比如数字功放,数字硅麦)

DVP--视频接口,SPI摄像头接入

MIPI--屏或者摄像头接口

1.5 连接能力: 

无线: 蓝牙、wifi、SUB-G

以太网/CAN/USB

1.6 其他资源(软件开发的便利性): 

DMA--高速数据交换必备

TIMER定时器--灵活处理任务调度

CRC--外设通信

CHIPID--加密及身份互认

电源管理(待机模式/功耗)--是否足够灵活,能够满足不同工况低功耗要求和宽电压适应能力。 

1.7 开发环境: 

IDE支持

烧录调试模式

HAL库/RTOS支持

样例工程可用性,代码是否友好等; 

2. CH32V208系列应用选型

参考沁恒官网: 

产品中心 - 南京沁恒微电子股份有限公司

V208资源也很丰富,主频够高,FLASH 稍小128K, RAM64K

 

资源差不多,只是引脚数不同,估计是一个die; 

支持OPA和12bit的ADC, 其实可以用来做测温应用; 

3. 开发环境上手

参考贴: 

沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置-CSDN博客

3.1 代码编译环境IDE--MRS(MounRiverStudio)

  第一次用MRS打开CH208的项目,会安装环境: 

 代码架构: 

GPIO_TOGGLE例程: 

int main(void)
{u8 i = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);SystemCoreClockUpdate();Delay_Init();USART_Printf_Init(115200);printf("SystemClk:%d\r\n", SystemCoreClock);printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );printf("GPIO Toggle TEST\r\n");GPIO_Toggle_INIT();while(1){Delay_Ms(250);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));}
}

3.2  调试环境建立: 

评估板资源分布: 

烧录/调试的选项, 有三种方式 

3.2.1 2线SWD模式, 配合WCH-LINKE

优点: 可以在MRS里debug,可以动态调试,更符合从STLINK+KEIL迁移过来的开发者; 

缺点:需要配WCH-LINKE设备; 

硬件连接

引脚P6-DEBUG

WCH-LINKE连接SWD接口, 在MRS里可以直接下载调试。

如果用WCH-LINKE的话,也可以用 WCH-LinkUtility.exe 下载。 

专用烧录工具比IDE里的功能要更齐备。  

3.2.2 (USB/串口)WCHISPTool.exe 下载升级

稍稍麻烦一点, BOOT0接地(0)重启动烧录, 接高电平(1)重启动运行程序。 

优点:不需要专用工具,USB/串口都可以烧录;

缺点:需要准备一根飞线,在烧录和运行状态下配置切换接线; 

 强调: 串口烧录,必须BOOT0-VDD, BOOT1-GND连接好复位才行!

             然后烧录后, 重新BOOT0-GND即可以进入程序运行状态; 

实测,USB口和UART口都可以通过isptool正常烧录。 

GPIO-TOGGLE例程串口连接正常情况下,上电有打印消息; 

注意,要点灯的话,需要将排针的LED1连接到PA0, 即可实现blink点灯......

 

3.2.3 通过bootloader, 串口在线烧录程序(推荐)

 利用IAP例程的架构实现串口直接烧录(在线升级)。 --生产环境更实用。 

注意: app一定要配置Link.ld文件,指定FLASH/RAM大小: 

	FLASH (rx) : ORIGIN = 0x00005000 , LENGTH = 128K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K 

 

这样就提高调试效率了,可以USB插着用于IAP更新下载固件APP, 串口插着打印调试; 

入口在xxx_it.c程序中的软中断入口: 

void SW_Handler(void) {__asm("li  a6, 0x5000");__asm("jr  a6");while(1);

tips:  IAP里加入简单的固件校验,还可以用于固件加密等扩展应用。 

注意,此处有坑! 

如果用IAP升级,USB可以直接用工具选择bin文件升级; 

!!!但是如果是串口升级,注意IAP给的bootloader例子里是用的串口3作为升级串口,串口1依然是printf调试打印串口,且波特率是57600(当然,可以修改)。 代码,查看IAP例子的main.c: 

int main(void) {SystemCoreClockUpdate();Delay_Init();USART_Printf_Init(115200);printf("SystemClk:%d\r\n", SystemCoreClock);printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );Set_USBConfig();USB_Init();USB_Port_Set(DISABLE, DISABLE);Delay_Ms(700);USB_Port_Set(ENABLE, ENABLE);USB_Interrupts_Config();USBFS_Init();USART3_CFG(57600);while(1){EP2_RecData_Deal();if( USART_GetFlagStatus(USART3, USART_FLAG_RXNE) != RESET) {UART_Rx_Deal();}if (End_Flag){Delay_Ms(10);IAP_2_APP();while(1);}}
}

所以升级用的USB-TTL模块要接在PB10-RX, PB11-TX: 

几种方式比较, 应该通过加载BOOTLOADER后用USB升级是最方便的操作,无需借助其他工具,直接插USB就可以了。  

4. 拿到SDK的入门路径 

4.1 外设:

BLINK-->外部中断/KEY-->UART-->SPI/I2C/FLASH

-->TIMER/PWM-->ADC/DAC/RTC

-->DMA/WDT/SDIO

***射频

4.2 RTOS操作系统

FREERTOS内核-->任务-->任务间通信-->任务和中断协同

相关文章:

RSICV国产芯片之CHV208

1. 芯片选型分析的对比维度 分析或者对标应用的芯片替代思路 1.1 内核/主频/存储空间支持 内核能力/指令集支持(考虑工具链兼容性); 主频:对比计算能力是否满足基本要求 存储:内存--数据搬移空间决定数据运算的…...

理解神经网络

神经网络是一种模拟人类大脑工作方式的计算模型,是深度学习和机器学习领域的基础。 基本原理 神经网络的基本原理是模拟人脑神经系统的功能,通过多个节点(也叫神经元)的连接和计算,实现非线性模型的组合和输出。每个…...

Android 之 List 简述

一、简单创建方式 Android 开发中&#xff0c;列表有很多种类&#xff0c;如ArrayList、LinkedList、List、MutableList等&#xff0c;创建列表的方式如下所示&#xff1a; fun listDemo() {// 使用 listOf 创建不可变的空列表val list listOf<Int>()val list1 listOf…...

设计模式の中介者发布订阅备忘录模式

文章目录 前言一、中介者模式二、发布订阅模式三、备忘录模式 前言 本篇是关于设计模式中介者模式、观察者&#xff08;发布-订阅&#xff09;模式、以及备忘录模式的学习笔记。 一、中介者模式 中介者模式是一种行为型设计模式&#xff0c;其核心目的是为了减少对象之间的复杂…...

云手机群控能用来做什么?

随着云手机的发展&#xff0c;云手机群控技术逐渐从小众的游戏多开工具&#xff0c;发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营&#xff0c;还是账号养成等场景&#xff0c;云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…...

fpgafor循环语句使用

genvar i;//循环变量名称 generate for(i0;i<4;ii1)begin:tx//自己定义名称 //循环内容 end endgenerate12位的16进制乘以4就是48位位宽的2进制 因为 222*2(2^4)16...

【FastAPI】BaseHTTPMiddleware类

一、概述 在FastAPI中&#xff0c;BaseHTTPMiddleware 类是Starlette框架提供的一个抽象基类&#xff0c;它允许开发者基于HTTP请求/响应接口编写ASGI中间件。 这个类对于希望实现自定义中间件逻辑的开发者来说是非常重要的工具。 通过继承 BaseHTTPMiddleware 并实现特定的方…...

Solon v3.0.5 发布!(Spring 可以退休了吗?)

Solon 框架&#xff01; 新一代&#xff0c;面向全场景的 Java 应用开发框架。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。 追求&#xff1a; 更快、更小、更简单提倡&#xff1a; 克制、高效、开放、生态 有什么特点&am…...

网络安全攻防演练中的常见计策

大家觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 引言 在网络安全攻防演练里面&#xff0c;用于分析攻击者动机和行为的&#xff0c;国外的有基于攻击链分析的模型&#xff08;如Cyber Kill Chain和ATT&CK&#xff09;和基于威胁行为的模型&#xff08…...

SD卡模块布局布线设计

1、SD/TF/SIM卡的定义 2、SD/TF/SIM卡模块引脚定义以及图示 3、SD/TF/SIM卡接口布局和布线 4、小结 1、BGA两线交叉时&#xff0c;可以在源头将两线互相短路连接&#xff0c;然后再输出口删除一小节线&#xff0c;然后CHRLX/V&#xff0c;这样就可以换两条线的网络&#xff0c…...

Flask-----SQLAlchemy教程

存session session[username] username # 存储数据到 session 取session username session.get(username) render_template return render_template(index.html, usernameAlice)&#xff0c;渲染一个包含 username 变量的模板。 redirect return redirect(url_for(profil…...

STM32 高级 物联网通信之CAN通讯

目录 CAN通讯介绍 物理层 协议层 CAN的帧(报文)种类 1 数据帧(发送单元->接受单元) 2 远程帧(接受单元->发送单元) 3 错误帧(发送方发送数据错误会发送的状态帧) 4 过载帧(接收方放不下会发送到的状态帧) 5 帧间隔(状态) 数据帧介绍 远程帧介绍 C…...

“乡村探索者”:村旅游网站的移动应用开发

3.1 可行性分析 从三个不同的角度来分析&#xff0c;确保开发成功的前提是有可行性分析&#xff0c;只有进行提前分析&#xff0c;符合程序开发流程才不至于开发过程的中断。 3.1.1 技术可行性 在技术实现层次&#xff0c;分析了好几种技术实现方法&#xff0c;并且都有对应的成…...

前端案例---自定义鼠标右键菜单

之前右击出现默认的选项菜单&#xff0c;使用evt.preventDefault()把默认的去掉&#xff0c;然后自定义右击的样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…...

浅谈归一化

在深度学习中&#xff0c;对网络层进行归一化&#xff08;Normalization&#xff0c;简称Norm&#xff09;是一个重要的技巧。常见的归一化方法包括批归一化&#xff08;Batch Normalization&#xff09;、层归一化&#xff08;Layer Normalization&#xff09;、实例归一化&am…...

lodash常用函数

文章目录 一、数组1、chunk分组2、difference、differenceBy、differenceWith3、findIndex4、intersection、intersectionBy、intersectionWith5、union、unionBy、unionWith 二、对象1、pick、omit 2、get、set三、数学1、sum、sumBy2、range 四、工具函数1、isEqual、isEmpty…...

触控算法总结

一、触控湿手指算法的具体实现原理涉及多个方面的技术和方法,主要包括以下几个关键点 1.电容变化检测 电容式触摸屏通过检测电容变化来确定触摸位置。当手指接触屏幕时,会引起电容的变化。然而,当手指湿润时,水分会影响电容值,导致触摸屏误判成无法正确识别触控点 2.噪声过滤: …...

齐次矩阵包含平移和旋转

第一个矩阵旋转矩阵 A [ R 1 0 0 1 ] A\left[\begin{matrix}R_{1} & 0\\0 & 1\end{matrix}\right] A[R1​0​01​] 第一个平移矩阵 B [ 1 T 1 0 1 ] B\left[\begin{matrix}1 & T_{1}\\0 & 1\end{matrix}\right] B[10​T1​1​] C [ R 2 0 0 1 ] C\left[\be…...

Move AI技术浅析(四):运动跟踪与估计

一、运动跟踪与估计模块概述 运动跟踪与估计 是 Move AI 的核心模块之一&#xff0c;其主要任务是从提取到的关键点特征中&#xff0c;分析和理解运动的动态特性&#xff0c;包括运动轨迹、速度、加速度、方向等。该模块通常包括 时间序列分析 和 运动估计 两个子模块。 时间…...

NCR+可变电荷块3——NCB/cell绘图1

文献method参考&#xff1a; 蛋白质序列数据从uniprot中获取 https://www.uniprot.org/uniprotkb/P46013/entry https://www.uniprot.org/uniprotkb/P06748/entry、 1&#xff0c;电荷分布计算&#xff1a; Charge distribution was calculated as the sum of the charges …...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...