首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
Search
1
科普:Memory Compiler生成的Register file和SRAM有何区别?
88 阅读
2
virtuoso和empyrean alps模拟仿真和混仿教程
87 阅读
3
在IC617中进行xa+vcs数模混仿
85 阅读
4
vcs debug rtl或者netlist 中的loop
51 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
41 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
webdav
bennyhe
累计撰写
344
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
搜索到
3
篇与
的结果
2026-02-26
轮毂电机光电增量编码器的ABZ信号详解
轮毂电机ABZ信号详解。 轮毂电机的定位使用了霍尔信号和光电增量编码器,1024线的。也就意味着,轮子转一圈,A信号和B信号各有1024个高电平和低电平。实际应用中,我们将A/B信号的上升沿和下降沿分别设置为外部中断触发信号,这样,我们就进行了1024的四倍频,最后的结果就4096。 如下如所示:第一行是顺转,可以看到A比B快1/4个周期;第二行是倒转,A比B慢1/4个周期。 轮子机械角度上转一圈,A和B各有1024个周期,通过4倍频,就能实现轮子转一圈编码为4096了。 如何通过A和B判断转向呢: 第一行: A下降沿中断且B为高,或者A为上升沿中断且B为低 ,是顺转。 第二行: A下降沿中断且B为低,或者A为上升沿中断且B为高 ,是倒转。 Z信号相当于是每转一圈给一个脉冲。
2026年02月26日
6 阅读
0 评论
0 点赞
2025-07-18
单片机中有FLASH为啥还需要EEPROM?
作者:无际单片机链接:https://www.zhihu.com/question/379251731/answer/2909256661来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在网上搜了一些资料,看完以后还是不能理解透彻,直到项目做多了,才彻底搞懂。Flash和EEPROM都是非易失性存储器,就是你设备掉电重启后,数据还会保留,如果是RAM的话掉电数据直接就丢了。下面从几个方面去介绍下Flash和EEPROM的区别:1.读取方式Flash和EEPROM都采用随机读取,可以通过地址直接访问存储器中的数据。2.写入方式Flash和EEPROM的写入方式不一样,EEPROM可以按字节进行写入,而Flash通常需要按块进行写入。还有就是,在Flash中,要写入一个数据,需要先擦除一整个块,然后再将新数据写入该块。3.擦除方式Flash和EEPROM的擦除方式不一样,EEPROM可以按字节进行擦除,而Flash一般需要按块进行擦除。也就是说,在Flash中,要擦除一个数据,通常需要先擦除一整个块,然后再将该块中需要保留的数据重新写入,比EEPROM操作麻烦一些。4.擦写速度EEPROM的擦写速度比Flash慢得多,擦写速度会受到许多因素的影响,包括使用的存储器型号、使用的接口类型、写入和擦除的数据量、芯片温度等等。5.存储密度Flash比EEPROM的存储密度更高,可以存储更多的数据。6.寿命Flash和EEPROM的寿命长短取决使用方式、应用场景等等。一般来说,EEPROM的寿命可能会更长一些,因为它可以进行单独的字节单位的写入和擦除,而Flash需要进行整个页面或扇区的擦除。这意味着EEPROM可以更灵活地管理存储器,并减少对存储单元的擦写次数。但是,这并不意味着所有情况下EEPROM的寿命都会更长。7.价格Flash比EEPROM更便宜。8.通讯接口不同Flash很多是用SPI协议接口、EEPROM很多是IIC协议接口9.数据保护方式Flash具有硬件和软件保护功能,而EEPROM只有软件保护功能。10.总结Flash更适合存储代码和常量,就是不需要频繁更新、数据量大的场景,比如说音频数据、图片数据、程序等等。EEPROM适合存储需要频繁更新数据、数据量小的场景,比如系统参数配置等等。作者:无际单片机链接:https://www.zhihu.com/question/379251731/answer/2909256661来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2025年07月18日
5 阅读
0 评论
0 点赞
2025-07-04
CMSIS 到底是什么?
CMSIS 到底是什么?先来看看ARM公司对CMSIS的定义:ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。CMSIS 可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间。软件的创建是嵌入式产品行业的一个主要成本因素。通过跨所有 Cortex-M 芯片供应商产品将软件接口标准化(尤其是在创建新项目或将现有软件迁移到新设备时),可以大大降低成本。我们知道,不同厂家,比如FSL,ST,Energy Micro等不同厂家的内核都是使用Cortex M,但是这些MCU的外设却大相径庭,外设的设计、接口、寄存器等都不一样,因此,一个能够非常熟练使用STM32软件编程的工程师很难快速地上手开发一款他不熟悉的,尽管是Cortex M内核的芯片。而CMSIS的目的是让不同厂家的Cortex M的MCU至少在内核层次上能够做到一定的一致性,提高软件移植的效率。CMSIS的结构:CMSIS 包含以下组件:CMSIS-CORE:提供与 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 处理器与外围寄存器之间的接口CMSIS-DSP:包含以定点(分数 q7、q15、q31)和单精度浮点(32 位)实现的 60 多种函数的 DSP 库CMSIS-RTOS API:用于线程控制、资源和时间管理的实时操作系统的标准化编程接口CMSIS-SVD:包含完整微控制器系统(包括外设)的程序员视图的系统视图描述 XML 文件此标准可进行全面扩展,以确保适用于所有 Cortex-M 处理器系列微控制器。其中包括所有设备:从最小的 8 KB 设备,直至带有精密通信外设(例如以太网或 USB)的设备。(内核外设功能的内存要求小于 1 KB 代码,低于 10 字节 RAM)。框架看上去CMSIS-Core和CMSIS-DSP很好理解,但是CMSIS-RTOS不好理解,这玩意是干嘛的再看一张图吧:看了这张图的含义更清楚些,CMSIS-RTOS在用户的应用代码和第三方的RTOS Kernel直接架起一道桥梁,一个设计在不同的RTOS之间移植,或者在不同Cortex MCU直接移植的时候,如果两个RTOS都实现了CMSIS-RTOS,那么用户的应用程序代码完全可以不做修改。已经支持的MCU和工具链: 完整的CMSIS文档可以从ARM公司网站下载,大小有100多M字节。 如何使用CMSIS,需要哪些文件,以Freescale Kinetis L系列举例。独立于编译器的文件:● Cortex-M3内核及其设备文件(core_cm0.h + core_cm0.c)─ 访问Cortex-M0内核及其设备:NVIC等─ 访问Cortex-M0的CPU寄存器和内核外设的函数● 微控制器专用头文件(device.h) - MKL25Z4.h─ 指定中断号码(与启动文件一致)─ 外设寄存器定义(寄存器的基地址和布局)─ 控制微控制器其他特有的功能的函数(可选)● 微控制器专用系统文件(system_device.c) -- system_MKL25Z4.h + system_MKL25Z4 .c ─ 函数SystemInit,用来初始化微控制器--函数 void SystemCoreClockUpdate (void); 用于获取内核时钟频率─SystemCoreClock,该值代表系统时钟频率─ 微控制器的其他功能(可选)● 编译器启动代码(汇编或者C)(startup_device.s) - startup_MKL25Z4.s for Keil─ 微控制器专用的中断处理程序列表(与头文件一致)─ 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)一、前言二、CMSIS标准三、CMSIS文件1、Include文件2、Source文件四、总结一、前言使用过ARM单片机的朋友肯定听说过CMSIS,可以说CMSIS是开启ARM单片机的金钥匙,是不是想到单片机的启动文件了呢,对的,启动文件只是CMSIS的一部分,你是不是跟我一样对它感到既熟悉又陌生呢?二、CMSIS标准CMSIS ( Cortex Microcontroller Software Interface Standard ),翻译过来是ARM Cortex™ 微控制器软件接口标准 。这个标准是谁提的呢?提的这个标准是用来干什么的呢?这里不得不说说ARM和STM32、TI这些公司的关系了,ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而TI、ST这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 Cortex M3 芯 片 ,他们的内核结构都是一样的,不同的是他们的存储器容量, 片上外设 IO 以及其他模块的区别。标准是谁提的呢?ARM跟芯片厂商共同提出的,目的就是为了不同芯片厂商生产的Cortex-M3芯片能在软件上基本兼容,各芯片厂商就得按照这个标准去编写自己芯片内核的驱动程序,比如系统函数的命名、芯片初始化启动流程等;STM32的官方库(标准库、HAL库、LL库)就是按照这个标准写的。这个标准是用来干什么的呢?如下图它向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。分为 3 个基本功能层:核内外设访问层:ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。中间件访问层:定义访问中间件的通用 API, 也是 ARM 公司提供。外设访问层:定义硬件寄存器的地址以及外设的访问函数。三、CMSIS文件看完上面的介绍是不是已经晕菜了,看完跟没看一样没看到实际的代码。下面就打开任意一工程下的CMSIS,我以STM32F4xx为例,在路径 \CMSIS\Device\ST\STM32F4xx 下,有Include、Source两个文件,我们主要用到了这两个文件下的微控制器专用头文件、启动代码 。1、Include文件在该文件中主要使用了stm32f4xx.h 和 stm32f429xx.h(不同的芯片这个文件不同),如下图(1)在stm32f429xx.h 头文件包含了该芯片所有外设的寄存器定义和封装内存操作,直接操作这些寄存器就可以控制外设了,使用STM32任何型号的芯片都需要包含这个头文件。(2)在stm32f4xx.h中会根据芯片型号宏标识符(我这里是STM32F429xx )选择对应的头文件(stm32f429xx.h),如果定义了USE_HAL_DRIVER宏标识符,还会将HAL库外设驱动包含进来,具体包含关系为:2、Source文件在该文件中主要用到了 system_stm32f4xx.c、startup_stm32f429xx.s、stm32f429xx_flash.icf。如下图:startup_stm32f429xx.s启动文件的作用主要是进行堆栈的初始化,中断向量表以及中断函数定义等。会设置系统复位后,直接调用 SystemInit函数进行系统初始化。还有一个很重要的作用就是系统复位后引导进入 main函数。system_stm32f4xx.c主要是声明和定义了系统初始化函数 SystemInit 以及系统时钟更新函数 SystemCoreClockUpdate。SystemInit函数的作用是进行时钟系统的一些初始化操作以及中断向量表偏移地址设置,但它并没有设置具体的时钟值stm32f429xx_flash.icf定义了芯片的FLASH和RAM的起始和结束地址、以及大小STM32单片机的启动流程:四、总结CMSIS就是定义了一套芯片外设控制及编写规范的标准。我们在移植一个新的工程时,只需要修改添加:1、添加system_stm32f4xx.c、startup_stm32f429xx.s、stm32f429xx_flash.icf2、添加stm32f4xx.h3、修改全局宏标识 STM32F429xx
2025年07月04日
10 阅读
0 评论
0 点赞