嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读

技术阅读

  • Windows-不能记住samba密码

    2024-07-03

    在Win 7上使用VmWare安装了一个Ubuntu系统,等我搭建好samba服务器,通过Win 7去访问Ubuntu系统的samba服务器时,第一次提示输入用户名和密码,点击记住密码之后,下次重启电脑,依然提示输入用户名和密码。这个问题困扰了我很久,虽然输入用户名和密码不是很费时间,但是每次重启电脑都要求去输入一遍,着实麻烦,于是在网上搜索相关的文章,实在太少,可以说没有能解决这个问题的方法,后来无意间看到一个评论,尝试了下,居然能够解决这个问题。这里记录下,方便自己和遇到相同问题的人进行参考。打开Win 7的控制面板,然后搜索凭据管理器,然后...

  • word怎么在方框里打勾

    2024-07-03

    在编写Word文档时,有时会碰到在方框里打上勾,这种操作虽然不是经常需要,但是遇到了总要知道怎么去做吧,这里参考网上的一些方法给大家讲讲。1、方法1 选中需要打勾的方框,然后按住键盘上的ALT键不放,在小键盘区输入“9745”这几个数字,最后松开 ALT 键,自动变成框框中带勾符号。或者直接按住ALT键,然后在小键盘区输入“9745”这几个数字,最后松开 ALT 键,那么就会自己创建一个带勾号的方框:2015-12-01_1312392、方法2在Word文档中输入数字“2611” ,然后选中“2611”这几个数字,接着按下键盘上的快捷键 ALT + X ,此时,这几个数字就会...

  • C语言-宏定义中使用do {...} while(0)到底图个啥

    2024-07-03

    这篇文章内容来自:《Linux设备驱动开发详解》,在这里记录下来方便自己和其他小伙伴查阅。在 Linux 内核中,经常会看到do{} while(0)这样的语句,许多人开始都会疑惑,认为do{} while(0)毫无意义,因为它只会执行一次,加不加do{}  while(0)效果是完全一样的,其实do {}while(0)的用法主要用于宏定义中。这里用一个简单的宏来演示:#define SAFE_FREE(p) do{ free(p); p = NULL;} while(0)假设这里去掉do...while(0),即定义SAFE_DELETE为:#define SAFE_FREE(p) free(p); p = NULL;那么以下代码:if(NULL != p)    SAFE_DELETE...

  • git拉取远程分支到本地(两种方法)

    2024-07-03

    1、当本地有其他分支的代码仓库时 通过下述命令查看所有的远程分支:git branch -r下面有2种方法来拉取远程分支代码:(1).需要本地分支和远程分支建立映射关系执行如下命令:git checkout -b 本地分支名xxx origin/远程分支名xxx使用这种方式会在本地仓库新建分支xxx,并自动切换到新建的分支xxx,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支会和远程分支建立映射关系。(2).不需要本地分支和远程分支建立映射关系执行如下命令:git fetch origin 远程分支名xxx:本地分支名xxx使用这种方式会在本地仓库新...

  • STM32无法连接JLink(Flash读写保护) 解决方法

    2024-07-03

    CPU:STM32F429IGT6对于其他的stm32芯片或者其他ARM芯片,其实解决方法都相通,主要就是先修改启动方式,再去更改flash或者ram中的程序。1.问题出现原因 最近在调试一个程序时,始终调试不通,没办法了,就想着参考网上的例程来看看,结果下载的stm32工程可能和板子的硬件不太一样导致stm32 flash读写保护,此后使用JLink再也无法连接上stm32了,Keil中也没办法识别出设备:Snipaste_2020-12-10_10-37-112.解决方法 首先,修改stm32的启动方式,我的板子默认设置的是从内部flash启动,这里要解决stm32的读写保护就不能选择从内部flash启动了。修改启...

  • C语言-fseek不起作用,写操作定位无效

    2024-07-03

    情况说明 最近在写一个操作文件的函数,使用fseek()函数定位到文件某个位置,然后用fwrite()重新更新该位置的内容,发现该位置处的内容并没有更新,反而更新的内容竟然出现在了文件末尾,真的是不知道什么情况。问题复现 下面先简单复现我所遇到的问题吧,示例代码如下:/* *By:Ailson Jack *Date:2019.01.24 *Blog:www.only2fire.com *Des:fseek 测试*/#include <stdio.h>int main(void){ char *fileName = "test.txt"; char ch = 'W'; FILE *fp = NULL; int iRet = 0; fp = fopen(fileName, "a+"); if (!fp) {  ...

  • VSCode使用 - 搭建python运行调试环境

    2024-07-03

    VSCode是一个优秀的编辑工具,适合代码阅读,代码编辑,甚至配置好之后,可以编译与调试代码。为了方便编辑,运行python程序,本文就聊聊如何将VSCode搭建为一个python的IDE吧,具备运行与调试python程序的能力。1、安装python程序 首先,安装python程序,这样才能进行python开发,我这里安装了python-3.7.4和python-2.7.16,都是目前的最新版本了。具体的安装过程这里就不说明了,很简单的。2、安装python扩展 VSCode的python扩展对python有着很好的支持,比较突出的功能有:智能提示,代码调试,代码导航,代码格式化等。在VSCode编辑器的扩展页面...

  • S3C6410学习笔记-Windows下搭建ARM11裸机开发环境(3):Eclipse+JLink调试代码

    2024-07-03

    之前,写过两篇文章,介绍了在Windows下搭建ARM11的裸机开发环境,以及使用Eclipse创建ARM11的裸机程序管理工程,需要的朋友可以过去看看。我这里提供了文章所需资源,为了防止公开链接被和谐,请关注博主,然后私信发送关键字 "arm11开发环境" 进行获取。网盘里也分享了我使用的Eclipse的绿色版本,后面的文章将会讲讲如何制作Eclipse的绿色版本,方便随时拷贝到其他电脑使用,敬请关注吧。系统环境:Windows 7 64位ARM11:Tiny6410Eclipse:2019-03 (4.11.0)这篇文章,讲讲如何在Eclipse开发环境中使用JLink来调试ARM11的裸机程序。需要的朋友可以...

  • S3C6410学习笔记-Windows下搭建ARM11裸机开发环境(2):Eclipse创建工程

    2024-07-03

    上一篇文章介绍了在Windows下搭建ARM11的裸机开发环境,需要的朋友可以过去看看。我这里提供了文章所需资源,为了防止公开链接被和谐,请关注博主,然后私信发送关键字 "arm11开发环境" 进行获取。网盘里也分享了我使用的Eclipse的绿色版本,后面的文章将会讲讲如何制作Eclipse的绿色版本,方便随时拷贝到其他电脑使用,敬请关注吧。系统环境:Windows 7 64位ARM11:Tiny6410Eclipse:2019-03 (4.11.0)1、创建Makefile工程 这里我介绍的是创建Makefile工程,使用自己的Makefile来编译代码,当然了你也可以创建其他类型的工程,结果都是一样的,都是...

  • S3C6410学习笔记-Linux下搭建ARM11开发环境:安装交叉编译器

    2024-07-02

    最近又把我布满灰的ARM11开发板拿出来搞了下,发现好多操作都要去文档找,太过麻烦,索性自己弄一系列文档,记录下来,以后查阅也方便许多。开发环境介绍:主机:Windows 7 64位;虚拟机:Fedora-14 32位;开发板:mini6410(CPU:S3C6410);好了下面进入正题,讲讲如何搭建交叉编译环境。我这里提供了文章所需资源,为了防止公开链接被和谐,请关注博主,然后私信发送关键字 "arm11开发环境" 进行获取。1、解压交叉编译器 将arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz文件解压到一个目录中,我这里在/home/AilsonJack/share/arm11/tool目录中进行解...

  • 一颗烂电阻吓得大家冒冷汗

    2024-07-02

    -- The Start --1. 案情发生:某电剪刀老客户向代理商反应:在某批次量产过程中,发现120把整机电量显示异常,比例为120/13000。因问题原因不明,所以,暂停生产。急等代理商和我们协助分析。2. 现场了解量产出问题,无论大小,都比天大。于是,代理商和我们的商务负责人第一时间赶赴现场,了解详情。具体情况如下:该款电剪刀前前后后已累计出货超百万单。本次是第一次发现电量显示异常的问题。具体显示异常情况,客户原话是:通电显示95%电量是准的,然后剪两下,电量就变为80%,25%都有。因是数据显示异常,所以可以排除是LCD屏的问题。电量数...

  • PMSM驱动基础篇:手撕转子磁链ψ和反电动势E的关系

    2024-07-02

    -- The Start --前言:根据文章:中的内容,我们不仅知道了反电动势常数Ke的测量和计算方法,还知道了磁链ψ和反电动势常数Ke的关系。同时,文中也提到转子磁链ψ和相反电动势E之间的关系为:E=ψ*W,W为转子角速度。但是,文中并未做公式推导。本文就对此做重点补充。与此同时,再补充一种转子磁链ψ与反电动势常数Ke的关系的推导思路。1. 转子磁链ψ与反电动势常数Ke公式推导根据文章:中的内容,我们知道如下信息:(1)Ke本质是电机转速在1000RPM时,定子线圈中产生的相反电动势。(2)转子磁链ψ和相反电动势E的关系为:E=ψ*W(下文推导)...

  • PMSM驱动基础篇:手撕转子磁链ψ和反电动势常数Ke的关系

    2024-07-02

    -- The Start --前言:根据文章:中的内容,我们知道无感PMSM的转子位置θ角可以通过磁链观测法得到。尽管目前本号还没分享磁链观测法的具体理论和实现方法,但是我们已经知道磁链观测法的原理是:根据转子磁链ψ不变的特性,计算转子位置θ角。转子磁链ψ不变,这很好理解,也就是当一个电机设计完毕,那么转子磁链ψ就固定了。既然我们要根据不变的转子磁链ψ,计算转子位置θ角,那么,首先得知道转子磁链ψ到底是多少。于是,怎么得到转子磁链ψ就成为了问题。有同学肯定会说,电机铭牌上肯定会标注。理论上,我认为电机厂家也应该标注。但实...

  • PMSM驱动基础篇:怎么设计Q15正弦表?

    2024-07-02

    -- The Start --前言:根据文章:中的内容,我们了解了获取转子位置θ角的方法。尽管只是对各种方法做了基本理论的介绍,还没介绍实现的具体过程,但是对于新手而言,首先有个概要的理解,对后续明确学习方向也很有必要。那么,假如我们都已经掌握了获取转子位置θ角的方法,是不是就可以驱动PMSM了呢?答案还是很残酷。还是那句话:做PMSM驱动,一定要有耐心,必须把每个技术点都打通,才能成功。为什么还不行呢?我们知道,在Park变换(文章链接:)和逆Park变换(文章链接:)中,都用到了正弦函数sin(θ)和余弦函数cos(θ),那么,知道θ角,...

  • PMSM驱动基础篇:绕不开的转子位置θ角

    2024-07-02

    -- The Start --前言:根据文章:中的内容,我们了解了使用位置式PID和增量式PID的时候,双闭环的不同点。这个知识点,看似简单,但是如不点破,那么很多本来就对双闭环各个环节的理论就理解不够透彻的新手必将陷入万劫不复的地步,永无调通之时。搞技术就是这样,各个知识点环环相扣,掉了哪一环都不行。那么,如果掌握了不同PID的双闭环,那么是不是就可以驱动PMSM了?答案当然是不可以。PMSM驱动就是这样,知识点太多,必须要有学习的耐心,循序渐进一个知识点一个知识点吃透才行。为什么还不行呢?因为我们还不知道转子位置θ角。请大家回忆一...

  • 节后BLDC驱动已然开启

    2024-07-02

    -- The Start --1. 整机样子客户寄来待调试整机和PCBA,请见下图1。                                                  图1如图1所示,该项目为一款BLDC电剪刀。电机参数为:供电6到8.4V,7对极,转速1.4WRPM。从供电范围可知,后续供电为2节4.2V锂电池供电。第一步先把电机驱动起来,下一步还需要调试刀口位置、带负载能力、各种保护参数等。节后第一周,刚收到整机并把电机驱动起来,算是热热身,后续工作还得持续进行。2. 驱动波形驱动波形,请见下图2。图2图2又见熟悉而美丽的梯形波。3. 驱动视频8.4V供电,驱动视...

  • 节前PMSM驱动仍在继续

    2024-07-02

    -- The Start --前言:该项目是去年的老项目了,一款PMSM高压风机。客户改了电机,改了控制要求。于是,我们又得重调。1.  风机样子,请见下图1图1看过去年视频的朋友,对该风机应该还会有印象。2.  PCBA样子,请见下图2图2从图2可知,该系统为高压且PCB尺寸不富裕,因此,最终使用的是:主控+IGBT+单电阻FOC驱动方案。3. 驱动电流波形低速电流波形,请见下图3。图3中速电流波形,请见下图4。图4高速电流波形,请见下图5。图54. 驱动视频,请见视频1视频1从视频1中可知,转速和温度在设定区间内成反比例关系;过温保护具备自动恢复功能。小结:(...

  • 手持MINI降温散热暴力BLDC小风扇驱动

    2024-07-02

    -- The Start --1. 电机的样子侧视图,请见下图1。图1正视图,请见下图2。图22. PCB设计美丽的PCB,艺术品一般,请见图3。图33. 板子贴好了修长帅气的PCBA,先做5块调着玩。请见下图4。图44. 按键功能定义两个按键,镶嵌板中,1键档位控制,1按键暴启控制。让你操作无忧,随心所欲。请见下图5。图55. 驱动功能演示启动顺滑,加速流畅,档位切换瞬间响应,暴启控制实在够暴力!请见功能演示视频1。功能演示视频16. 技术指标低占空比,小电流,小功率,高转速。请见表1。表17. 产品实物装上外壳,精致美丽,是你居家出行必备之选。请见图6。图6小结...

  • PMSM驱动基础篇:不同PID的双闭环

    2024-07-02

    -- The Start --前言:根据文章:中的内容,我们了解了双闭环的系统框图和双闭环的相关细节,实现了速度闭环控制。在双闭环的细节部分,文中提到:PID的输出值实际上只是一个调整量,并无实际物理意义。我估计很多新手很难理解这句话的意思。这其实并不奇怪,因为上周同事们在设计一个与PID相关的控制算法的时候,还差点把我带入坑中。可见,无论新手还是老手,在使用PID设计无刷电机控制算法的时候,时不时都会跑偏,入坑,且不能自拔。因此,本文就针对不同PID(位置式和增量式)在双闭环的使用的细节再做梳理。1. 位置式PID的双闭环位置式PID的...

  • PMSM驱动基础篇:绕不开的双闭环

    2024-07-02

    -- The Start --前言:文章:中的内容,我们了解了Id和Iq的本质含义和作用:(1)通过Id实现励磁和弱磁控制;通过Iq实现正转和反转控制。(2)通过Id和Iq实现了电流闭环控制。增大设置Iq,电机转速上升;减小设置Iq,电机转速下降。根据文章:中的内容,我们了解逆Park变换的过程和作用,以及电流闭环各个阶段的电压和电流信号特征。即,通过以上两篇文章中的内容,我们已经可以将电机转动起来。但是,还存在一个问题就是:在设置Id和Iq固定的情况下,不同负载,电机转速就会波动。即,还需要增加速度闭环控制。于是,双闭环诞生了。本文就此做梳...

  • BLDC驱动基础篇:堵转保护

    2024-07-02

    -- The Start --前言:堵转保护,是电机驱动中最为常见且必要的保护之一。对于电机驱动老手而言,堵转检测与保护就很简单了。但是,自从上月开通微信联系方式后,有部分新手朋友就在希望我分享堵转检测相关知识,请见下图1和图2。图1图2再回想自己刚开始接触电机驱动时,好像也有过一段时间没搞明白什么是堵转,怎么检测堵转,怎么设计堵转保护。可见,一些相对简单的理论,也有必要做分享。于是,本文就对堵转相关内容做分享。1. 堵转定义和保护分类电机堵转如何定义?这个问题好办,百度一下,立马清楚,请见下图3。图3从图3中内容可知,所谓堵...

  • PMSM驱动基础篇:Id和Iq有啥用?

    2024-07-02

    -- The Start --前言:根据文章:中的内容,我们利用Park变换将αβ两相静止坐标系的电流Iα和Iβ信号转换成了dq两相旋转坐标系下的电流Id和Iq,实现了电流信号与时间的分离。对于新手,一定会问:我们通过Clarke和Park变换得到Id和Iq,拿Id和Iq来干什么?换句话说,Id和Iq有啥用?本文就此做梳理。1. Id和Iq的本质含义根据文章:中的内容,可知:(1)Id当然就是三相对称正弦电流转换到dq坐标系下的d轴电流。d轴平行于电机转子磁场方向,称为直轴(电机转子方向)。Iq当然就是三相对称正弦电流转换到dq坐标系下的q轴电流。q轴垂直于电机转子磁场...

  • PMSM驱动基础篇:Park变化有啥用?

    2024-07-02

    -- The Start --前言:题目是《Park变换有啥用?》根据以下文章:中的内容,我们掌握了Clarke变换在PMSM驱动中位置、过程和作用。Clarke变换虽然将三相对称正弦电流从三相静态坐标系转换到两相静态坐标系,但是,即使在两相静态坐标系中,电流依然和时间和速度有关。即,时间不同,电流不同;速度不同,对应的电流也会不同。那么,有没有一种方法可以将两相静态坐标系的电流转换成为与时间无关的电流呢?即,转换后的电流,无论什么时间,电流大小都不变。于是,Park变化出现了。本文将对Park变换作梳理。1. Park变换的位置在PMSM驱动系统框图中,...

  • LIN Bus从机动态识别帧头的关键细节

    2024-07-02

    -- The Start --前言:根据文中内容,我们掌握了LIN Bus从机动态识别帧头的方法。为了方便理解,文中内容都是完全基于LIN Bus协议,但是有一些关键细节在LIN Bus协议中却是一笔带过,特别容易让初学者忽略,在实际应用中却是需要特别注意并掌握的。这些关键细节决定了动态识别帧头的灵活性和可靠性。在《LIN Bus从机怎么动态识别帧头?》文中,因限于篇幅,我也没有特别提出,所以,本文就对这些关键细节梳理一遍。1. 同步间隔段到底多长?请看下图1。图1图1中红框所示位置为同步间隔段。LIN Bus协议中仅指出同步间隔段时间T_SYNBRK至少13位显性电...

  • LIN Bus从机怎么动态识别帧头?

    2024-07-02

    -- The Start --前言:近年新能源汽车发展如火如荼,从事车载电子通讯开发的同学,除了一定会用到CAN总线以外,一定也会接触到LIN总线。如果你对LIN总线协议还不熟悉甚至还不知道,那么得赶紧学。关于LIN总线协议,推荐一篇文章供大家学习,文章链接为:。本文对LIN总线协议就不再赘述。近期,我们也在调试LIN BUS从机通讯。刚开始调试,还是跳过一些坑,不过现在已经上岸。本文就将LIN Bus从机通讯最关键的动态识别数据帧头的方法分享给大家。1. 复习LIN总线数据帧数据帧格式,请看下图1。图1如图1所示,LIN总线数据帧结构包括两大部分:帧头和应...

  • BLDC驱动中级篇:怎么制动?

    2024-07-02

    -- The Start --前言:学会了启动电机,加减速电机,怎么制动电机?制动,又名刹车,也可称为刹车制动。制动的作用就是让高速旋转的电机停止。毫无疑问,这是做BLDC驱动必不可少的环节。通常新手同学会认为这很简单,把6个功率管关闭不就停机了?没错,关闭6个功率管后,电机最终肯定会停下来。但是,问题是对于中高速电机,这样停下来需要多长时间?看着慢慢悠悠停下来的电机,你心急不?遇到要求快速制动的产品,你怎么办?因此,仅关闭6个功率管的制动方法是不能满足产品开发需求的。那么问题来了,BLDC到底有哪些快速制动方法呢?具体怎么操作...

  • BLDC驱动中级篇:相间短路怎么保护?

    2024-07-02

    -- The Start --前言:上周工作记提到的新增保护不断测出问题。这保护指的就是相见短路保护。BLDC在转动过程中,UVW三相突然短路,会发生么?毫无疑问,短路会导致定子线圈电流方向异常,从而导致磁场方向异常,最终导致转子转动异常。此时,如果不能准确识别相间短路的状态并及时关闭功率管,那么就可能烧毁功率管甚至会因电机异常转动引发更大的事故。那么问题来了,怎么高效且准确检测相间短路,进而保护整个电路呢?本文就来梳理一下。1. 相电压特征先观察BLDC驱动的正常波形,请见下图1。图1从图1可知,在6步换相法中,在任意60°中,UVW三相...

  • BLDC驱动中级篇:HALL角度怎么补偿?

    2024-07-02

    -- The Start --前言:近两周连续接到两个有感BLDC案子,都遇到HALL安装位置存在偏差的问题。按照HALL信号换相,尽管电机都可以转动,但是在同样转速的情况下,电流却大了很多。这是驱动效率低的典型表现,客户当然也不可能接受的。想让客户修改HALL板是不可能的,你懂的。因此,只能通过软件将HALL安装位置偏差导致的驱动角度偏差纠正过来,也叫做HALL角度软件补偿。本文就将HALL角度软件补偿的思路梳理一遍。希望对遇到同样问题的同学有所帮助。1. HALL角度补偿定义HALL角度补偿包括:滞后补偿和超前补偿。(1)滞后补偿就是在HALL中断发生后的...

  • BLDC驱动中级篇:绕不开的PWM

    2024-07-02

    -- The Start --前言:毫无疑问,做BLDC驱动肯定绕不开配置和控制PWM。无论是使用PWM模块产生PWM,还是使用Timer模块产生PWM,原理都很简单。但是,在做BLDC驱动时,一些配置和控制PWM的细节还得注意。本文就来梳理一下。1. PWM及时开关因为根据HALL或者BEMF换相的时间是随机的,所以必须要求在PWM周期内的任意时刻,都可以关闭PWM。如下图1所示:在t0时刻,需要换相,PWM_a立刻关闭输出变为PWM_b。很明显,这样才能提高换相效率。图1如果你的芯片不具备此功能,那么请赶紧换。2. PWM翻转模式下面以计数器Counter先从0上升到Load,再从Load下降到0...

  • BLDC驱动中级篇:在改进PID算法里,挖呀挖呀挖

    2024-07-02

     -- The Start --前言:在和文中,我们掌握了PID算法的原理、两种类型的优缺点及其使用方法。尽管我建议大家在做BLDC驱动时使用增量式PID,但不乏一些同学已经习惯了使用位置式PID。在使用位置式PID的时候,由于积分项的存在,所以大概率会遇到超调、振荡和积分饱和等问题,针对这些问题,一些改进的PID算法出现了。本文就来梳理一下,希望对使用位置式PID的同学有帮助。1. 复习位置式PID控制算法根据文中内容,可知数字域位置式PID公式,请见公式(1)。Uout(k)=Kp*E(k)+Ki*∑E(kT)+Kd*[(E(k)-E(k-1))/T]--(1)公式(1)中,Kp、Ki和Kd分别为比例、积...