
理论学习
文章平均质量分 77
CW32生态社区
这个作者很懒,什么都没留下…
展开
-
基于CW32的仪表精度测量实现(三):标定与校准
常见的标定是在只有最小值和最大值之间做了标定,如果这两个值的范围很大,使用中间的AD值也会出现误差,所以我们就需要多做几组标定,使得数据更加准确,这样就形成了分段线性标定。在这个程序中,我们的思想是同时两路AD采集,一个是测量电压的,一个是测量电流的,同时读取AD数据,进而能对二者一起校准。标定校准后的误差的折线图如下所示,可以看出6V标定后的误差范围在0V到0.03V之间的,所以证明了多处标定,得到的测量值就越精确。在上面图中可以看出实际的电压值和测量的电压值存在一定的偏差,我们将它们的。原创 2024-09-26 16:23:25 · 1091 阅读 · 0 评论 -
芯片等级怎么分?CW32又该属于哪些等级?
芯片按照应用环境和性能要求的不同,可以分为不同的级别,包括民用级(消费级)、工业级、车规级、军工级和航天级,一般我们接触不到航天级,这里只给大家作为知识补充。每种级别的芯片在制造工艺、可靠性、性能、测试标准和成本等方面存在显著的区别。适用于标准环境条件,温度范围通常在0°C至+70°C之间。对可靠性的要求较低,适合日常消费电子产品。设计寿命较短,一般为2-5年。成本较低,无需特殊制造工艺和材料。测试标准相对宽松,满足一般消费电子产品的使用需求。常见于电脑、手机、数码产品等消费电子设备。原创 2024-09-09 17:47:25 · 1710 阅读 · 0 评论 -
ESD测试是什么?CW32能扛8000V?
●。原创 2024-09-09 16:58:03 · 1152 阅读 · 0 评论 -
CW32的嵌入式软件开发必备知识
嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。只有全面掌握这些知识并具备持续学习的能力,才能成为一名优秀的嵌入式软件开发人员。原创 2024-08-30 11:33:00 · 646 阅读 · 0 评论 -
程序流程图该如何绘制
绘制程序流程图是一个将程序逻辑以图形化的方式展现出来的过程。这有助于开发者、测试人员以及非技术人员更好地理解和分析程序的执行流程。通过以上步骤和技巧,您可以绘制出清晰、准确的程序流程图,为程序的开发、测试和维护提供有力的支持。原创 2024-08-30 11:31:26 · 860 阅读 · 0 评论 -
嵌入式产品软件开发过程分析
嵌入式产品是一个复杂且关键的过程,它涉及多个方面,包括需求分析、系统设计、开发、测试以及优化等。原创 2024-08-30 11:29:51 · 661 阅读 · 0 评论 -
单片机的看门狗,你的产品中有用到吗?
WWDT 内含一个 7 位递减计数器,计数时钟源为内部系统时钟 PCLK,通过控制寄存器 WWDT_CR1 的 PRS 位域 可对其时钟源 PCLK 进行分频,分频后得到计数时钟 WWDTCLK 用来驱动计数器计数。独立看门狗更注重在极端情况下的系统恢复能力,而窗口看门狗则提供了更灵活的时间窗口管理,以便更精确地监控程序的执行。开发者需要根据具体的应用需求选择合适的看门狗类型。单片机的看门狗(Watchdog Timer)是一种硬件电路,用于监控单片机的运行状态,确保系统的稳定性和可靠性。原创 2024-08-30 11:28:02 · 424 阅读 · 0 评论 -
基于CW32的仪表精度测量实现(二):不同的信号采用的滤波算法
当频率高于截止频率 fc的信号输入这一滤波器时,由于C容抗已很小,故对信号无衰减作用,这样该滤波器具有让高频信号通过,阻止低频信号的作用。下面是最简单的低通滤波器,它由电阻和电容元件构成,当输入信号Vin中频率低于特定截止频率的信号加到电路中时,由于C的容抗很大而无分流作用,所以这一低频信号经R输出。电感元件在电路中对高频信号起到阻碍作用,却让低频信号顺畅通过,而电容元件则恰恰相反,它对低频信号构成障碍,却为高频信号提供了通道。时间序列信号是一种随时间变化的信号,它记录了在连续时间点上的数据值。原创 2024-08-30 11:18:43 · 990 阅读 · 0 评论 -
基于CW32的仪表精度测量实现(一):相关滤波原理
将其邻域设置为3×3大小,对其3×3邻域内像素点的像素值进行排序(升序降序均可),按升序排序后得到序列值为:[16,35,46,52,52,62,64,83,85],在该序列中,处于中心位置(也叫中心点或中值点)的值是“52”,因此用该值替换原来的像素值 64,作为当前点的新像素值,新的像素图如下所示。其中,f'(x, y)是滤波后像素点(x, y)的灰度值,f(x+k, y+l)是原像素点(x, y)领域内的灰度值,ΣΣ表示对领域内所有像素点求和,m和n是滤波窗口的大小。原创 2024-08-30 11:13:18 · 561 阅读 · 0 评论 -
CW32使用DMA单通道、定时器触发ADC实现了多路AD采集
每完成一组DMA搬运,均会进入DMA传输完成中断,此时根据传输的次数重新设置目标地址和源地址;12路ADC通道划分为3组,每组4个通道,DMA搬运次数设置为4次;:本样例系统时钟设置为48MHz,使用时请注意系统时钟带来的影响。:通过定时器中断触发AD转换,使用ADC的序列断续转换模式,3组DMA搬运完成为一轮,将完成全部12路AD采集。原创 2024-05-31 14:04:00 · 470 阅读 · 1 评论 -
为什么选择10Ω电阻?
然而,这样一颗自恢复保险丝的价格,往往在1毛以上的价格,相比于仅仅只有几厘钱的贴片电阻来讲,价格上确是云泥之别。那么,又有读者可能心里会有疑惑,既然普通的电阻可以发挥保险丝的功能,那为什么在一些产品中用成本更高的保险丝而非电阻呢?通过权衡各种因素,选择最适合项目需求的硬件器件,以确保电路或系统的稳定性、可靠性和成本效益,是硬件工程师的必修课。这一点是我要在本文重点要讲的,在很多产品设计中,出于成本考虑,会使用电阻代替保险丝,在本产品使用0603封装的10Ω电阻也是用作替代保险丝合理考量。原创 2024-05-31 12:01:51 · 1591 阅读 · 0 评论 -
使用通用串口模块下载CW32F030芯片的方法
因此,在启动时,需要用到RST, BOOT置高、PA13、PA14。其中PA13接串口模块的TXD信号,PA14接串口模块的RXD信号。在CW32F030芯片数据手册里4.3节,有表明BOOTLOADER下载时,通过UART1(也是SWDR接口)PA13\PA14下载。:由于WCHLINK没有RST信号,因此需要手动复位目标板的同时,按下“在线编程”按钮,才可以正常下载。在CW32F030的用户手册里有,2.6节有讲明BOOT引脚在ISP下载时需要的配置定义。原创 2024-05-31 11:49:51 · 725 阅读 · 0 评论 -
使用串口调试工具Vofa+调试CW32
其中最左边是时间戳,可以选择开启。第一个数据是电机测得的转速,第二个数据是我们期望的转速。注意这里串口参数的配置要和程序里的代码设置一致,否则可能接收不到数据。程序安装链接:下载中心 | VOFA-Plus上位机。本次我们采用FireWater协议进行数据接收。原创 2024-05-31 11:46:33 · 997 阅读 · 0 评论 -
基于CW32的有刷直流电机控制实验三:直流电机闭环位置和速度控制实验
程序下载完成后,使用 9V 电源进行供电,将CW32的PA08引脚与 DAP-Link 的 RXD 连接,PA09 与 TXD 连接,接上 GND 后使用Vofa+串口调试助手来接收CW32发送的数据。实验使用的模块主要有6个:小车主控板(黑色)、CW32F030小蓝板、OLED屏幕、TB6612电机驱动模块、直流减速电机、DAP-Link下载器。KEY2、KEY3分别是电机转速(位置)的加减,KEY1可以切换电机为速度或者位置模式。如果DAP-Link插入电脑后未识别到芯片,则将中间两根线的接线对换。原创 2024-05-31 11:39:22 · 238 阅读 · 0 评论 -
基于CW32的有刷直流电机控制实验二:编码器模式
我们可以使用 CW32 的定时器定时 10ms 的中断,每过 10ms 就将编码器的计数值取出计算转速。而没有编码器接口的单片机如 51 、 Arduino,可以通过外部中断读取,将编码器 A 相接到单片机的外部中断输入口,通过跳变沿触发中断,然后在对应的外部中断服务函数中,通过 B 相的电平高低判断 旋转方向。由于编码器转一圈只能输出固定个数的脉冲,因此 M 法的最大误差也为 1 个脉冲,经过程序计算后会发现转速会以固定大小变化,这种方法适合高速场景下的测量,对于低速的情况,M 法存在较大的误差。原创 2024-05-31 11:31:45 · 397 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】ADC“自动模式”
通俗来说,数据存放在0-9共10个格子里面,DMA可以把这10个数据搬运到其他地方(并不会改变原本的值,效果类似赋值语句),而其他地方可以是同一个地方(将10个数据按顺序搬运10次,最终一层层覆盖到同一个地址),也可以是不同地方(将10个数据搬运10次并最终存放在10个不同地址的存储空间)。,我们搬运的起点只有一个,就是ADC转换结果寄存器,搬运的终点是一个1024大小的数组,其中起点被称为源地址,终点被称为目标地址,且这两个地址都可以设置成自增模式(完成一次搬运之后,地址自动+1)。原创 2024-03-15 17:44:43 · 904 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】模数转换器
Value的范围取决于ADC的位数,若ADC为12位,则value最大为2^12=4096,最小值为0,value指示了相比于参考电压U,输入电压Ut的值,计算方法如下:可以认为ADC将参考电压分成了4096份,最终输出的结果反映了输入电压够得上其中多少份,例如参考电压选择2.5V,最终转换的结果数据为2048,那么就认定输入通道的实际电压值是2.5/4096*2048=1.25V,其他情况以此类推。由于参考电压的存在,ADC无法直接测量比参考电压值高的信号,输入通道连接的电压不能高于参考电压。原创 2024-03-15 17:39:57 · 950 阅读 · 1 评论 -
【有那么点详细的CW32学习笔记】IIC接口 OLED驱动
上一章我们讲解了IIC的通信流程以及通信代码,这一章就以市面上常见的IIC接口模块——OLED屏为例教学一下IIC接口的驱动怎么写。第一步当然是搞清楚自己使用的OLED屏幕用的是什么驱动,说是屏幕,实际上就是密集LED点阵,所以必定有用于控制大量LED灯的驱动器,本教学使用的OLED驱动是SSD1306,该驱动器有多种通信接口,这里使用IIC接口(具体使用什么接口,数据手册上会有详细介绍)原创 2024-03-01 15:38:15 · 1052 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】IIC接口 —主机发送
本章将介绍CW32的IIC接口,并最终点亮一块OLED屏幕,如果你对如何编写各种模块的驱动代码束手无策,那本系列教程的IIC章节或许能让你受益匪浅原创 2024-03-01 15:06:42 · 1179 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】通用定时器—输出比较
定时器是单片机中一个非常传统且重要的外设,定时器的本质其实就是一个计数器,只不过被计数的对象是定时器的时钟源。定时器要正常工作,需要这几个要点步骤:有时钟源输入、计数器工作、有一个可以比较的值(自动重装载值)。其工作流程是这样的:计数器会随着时钟源对时钟源提供的脉冲进行计数,计数值不断上涨(或下降),如果计数值和自动重装载值一样,那么计数器的值就会被硬件清零重新计数,这个清零重新计数被称为定时器计数溢出,这个事情会触发一个中断,被叫做定时器溢出中断,也就是说,定时器依靠对稳定的时钟源定次数计数来实现定时,并原创 2024-03-01 14:31:22 · 724 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】通用异步收发器—中断接收篇
上回说到单片机的Uart发送,我们编写了一个发送函数循环发送固定的字符串,这回我们讲Uart的中断接收功能。说一下中断是什么,大概就是说,单片机只有一个核,就是只有一个大脑,他无法一核二用地做事,但有时候迫不得已需要去响应一些紧急的命令,就好比你打游戏开团了,你妈喊你去倒开水,倒开水就会触发咱们人类的“中断”功能。放在单片机上,进行中断操作需要以下几个条件和步骤:拥有中断源、中断控制器正常工作、触发中断、保护现场、响应中断、恢复现场。原创 2024-03-01 14:14:00 · 681 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】通用异步收发器—发送篇
因此配置复用的时候,如果找不到对应的复用函数,可以直接配置此寄存器来完成复用配置,但为了方便读者,配置IO复用的宏函数均位于cw32xxxxx_gpio.h这个文件中,此头文件包含了相当多的宏函数,均是常用的IO操作,如反转、置位、闪烁等,感兴趣的读者可以前往翻阅。值得注意的是,在芯片内部并没有一个直接的波特率数值寄存器,为了保证异步通讯的可靠,波特率越精准越好,切既有的系统时钟不一定能够刚好提供波特率倍数的时基,因此实际上的波特率是一个浮点数,它拥有。而对传输速度的描述,也就是。原创 2024-03-01 13:47:34 · 1060 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】内核外设—滴答定时器
我们在前两节讲解了单片机启动到时钟树配置的内容,到此为止,单片机已经能开发别的功能并使用了,但这里我插入一个笔者个人觉得很重要的章节来介绍一个内核外设——滴答定时器(System Tick)。原创 2024-03-01 13:27:02 · 392 阅读 · 6 评论 -
【有那么点详细的CW32学习笔记】看手册配置时钟树
本章针对CW32F030C8T6的时钟树进行详细解析,续第一章启动文件的相关讲解。原创 2024-03-01 13:16:12 · 815 阅读 · 0 评论 -
【有那么点详细的CW32学习笔记】单片机启动&库函数构成
有朋友肯定会问,这里只有一个基地址,为什么可以用CW_SYSCTRL->REG的形式操作很多寄存器呢?由于每个寄存器都是32位的,也就是4字节,由C语言联合体和结构体的特性,内部的地址是基地址累加的,只需要一个寄存器累加固定的偏移量,就能把结构体成员和单片机内的寄存器一一对应起来,这就是寄存器与库函数的联系。一旦想通寄存器和库函数是怎么联系起来的,单片机编程就会变成一个非常简单的事情,因为库函数本质上就是在用地址操作去赋值、改写寄存器,全世界的单片机库函数都是如此。原创 2024-03-01 11:26:11 · 864 阅读 · 0 评论