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

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

技术阅读

  • EasyLogger--不一样的打印输出

    2024-06-28

                做软件写代码的时候不管你的段位有多高,Debug版本的代码该加打印的还是要加打印来定位一些bug,发布Release的版本的时候关闭打印即可,程序猿????‍????想想在日常码代码的时候没有打印怎么调试代码呢    在我遇到EasyLogger之前呢,我的打印都是这样的      当我在里面去查找我们添加的一些特殊的打印信息的时候就不得不推一推我的“老花镜”,然而这还只是我的初始化的log输出,看完整个运行过程后通常需要去挂个眼科的专家号????,懂得都懂~        特别是要在定位bug的时候为了捕捉几条Error信息,...

  • 低成本的USB转双高速串口的实现方案

    2024-06-28

                    最近在看一个基于Linux系统开发的代码,拿到代码第一步就是看打印,根据log信息来看代码的执行过程,在了解到串口的波特率是1500000后,苦于手上没有更高速的TTL模块,于是还是使用CH340G的模块去尝试了一下,果然,波特率太高了,CH340G不支持,是一条打印信息都没有。        于是激发了我要做一个高速的USB转串口的决心,为了在平常调试项目中方便,本次低成本的实现方案中主要实现了以下功能,还严格控制板子的大小,方便日常使用:    a) 实现了USB转双串口,宽范围的波特率支持,50bps~12Mbpsb) ...

  • 浅谈FOC

    2024-06-28

    1. FOC简介最近项目中需要使用三相无刷电机带动激光做测距,之前从未接触过三相无刷电机的我来说是一个不小的挑战,起初觉得不就是一个电机嘛,小意思啦,后面越看资料我越慌,越看越觉得我对他一无所知,顿时不知从何下手。但是也没办法,老板给我发工资我就要给老板搬砖,在找资料的过程中慢慢的FOC这个三个英文字母映入我的眼帘,但它是做什么的、有什么用、为什么要使用、涉及到哪些技术等等我是一无所知。好啦,来简单介绍一下什么是FOC,以及我们为什么要使用它,使用他的好处有哪些?带着这些问题我们来进一步学习。FOC的全称Field Oriented ...

  • 一个完美MAX宏的诞生及进化

    2024-06-28

            我们在写代码的时候经常会需要比较两个值的大小,进而获取最大值或最小值,而最常用的方法是把其写成标准的宏,方便移植的同时也增加了代码的阅读性。        当然,当你在面试的时候也很有可能面试官会让你写一个MAX的宏定义来侧面反映你的编程功底,虽说无法考量一个程序员的实际功底有多强,但足以反映出一个程序员的基本素质是否达标。        到这里很多人可能都会想,MAX宏?比较两值的大小?这不是很简单嘛,简直就是信手拈来啊,于是就直接写出了下面的宏:#define   MAX(a, b)   a > b ? a : b如果写成...

  • 码云代码托管平台

    2024-06-28

            在使用了Github,SVN之后觉得Github还是比较好用的,全球的程序员大多也是用它做代码的托管,但是由于是国外的网站,在国内打开的就很慢,常常clone代码到本地进入都要花费些时间。        为了使用更加便捷,于是找了国内的代码托管平台,最终选择了码云这个平台,和github的操作完全一样,又支持中文,打开平台也不会一直转圈圈,因此,今天来安利一波码云!        下面就是我的码云仓库!下面介绍一下怎么在码云上的同一个仓库的不同分支下托管不同项目的代码。                    1、注册码云账号...

  • 没有DSP的浮点单元不能进行浮点运算?

    2024-06-28

    最近在项目上需要控制直流无刷电机,使用到FOC及PID算法,进行FOC运算的时候需要用到三角函数和反三角函数,因此不可避免的就是浮点数的运算,而使用的MCU不带有浮点单元,因此需要使用Q格式来简化,提高计算速度。后期等项目结束后准备来详细分享一下FOC算法的实现,控制三相无刷直流电机,进而可以拓展使用机器人的关节电机及其驱动。今天的重点不在这里,还是回归主题介绍一Q格式以及其如何实现浮点数(定点数)的运算。Q格式Q格式是二进制的定点数格式,相对于浮点数,Q格式指定了相应的小数位数和整数位数,在没有浮点运算的平台上,可以更快地...

  • FFT

    2024-06-28

    最近在项目中需要用到FFT,之前对于FFT也只是有一个模糊的印象也并不清楚他的具体物理意义,之前几次想学习都被搁置了,现在项目需要又从新学习,在此把我收获的和大家分享一下:1- FFT简介FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform)。傅里叶变换是时域--频域变换分析中最基本的方法之一。可以将一个信号变换到频域。有些信号在时域上很难看出什么特征,不利于分析,但是如果变换到频域之后,就很容易看出信号的特征了。这就是很多信号分析采用FFT变换的原因。FFT也可以将一个信号的频谱提取出来,常应用于频谱分析上。...

  • STM32串口空闲中断

    2024-06-28

    STM32如何接收不定长数据?在Modbus协议中经常返回的数据的长度是不同的,或者在使用串口通讯的一些模块的时候发送不同的命令返回的一帧数据的长度也是不同,因此在接收的时候我们需要准确判断一帧数据是否已经传输完成,传输完成后再对数据进行分析。判断一帧数据是否传输完成有两种方法,第一种是使用定时器,定时一个字节的数据传输的时间,当进入定时器中断,表示在一个字节的传输时间内未收到数据,表示一帧数据传输完成,同时在串口接收中断中需不断重新开始定时器计时,该方法比较麻烦,还占用定时器的资源。第二种是使用串口的空闲中断判断...

  • 485自动收发电路

    2024-06-28

        最近在调试485的收发电路,由于项目上的电路不是自动收发在软件上还需要控制其简单的收发时序有点繁杂,因此做了这个自动收发的电路,这样就可以直接像串口一样不用管RE和DE两个脚的状态啦(图片电路使用立创EDA画出,实测可用)(1)引脚说明 (2)发送状态: 发送1时:TXD为高电平,Q1三极管导通,RE和DE为低电平进入接收状态,此时A、B线上为高阻态,通过R8和R4对A和B上拉和下拉,使得A\B上传输数据1。 发送0时:TXD为低电平,此时Q1三极管截止,RE和DE为高电平进入发送状态,由于DI脚接地,因此将0发送出去。(3)接收状态:在接收数据...

  • STM32--ADC

    2024-06-27

    亲们,没有关注我的还请关注一下哟,在这里会不定期更新单片机类,电路类的原创文章。好啦,距离上次更新已经有几天了,上一次我们介绍了stm32驱动1602,以及如何根据时序写程序,如何看数据手册配置自己想要的功能,今天我们来说一下STM32--ADCADC: 就是把模拟量转换成单片机可以识别的数字量,在日常生活中应用也极其广泛,比如万用表上,测电压,电流、音乐频谱等ADC都是必不可少的一部分下面我们来说说stm32的ADC,STM32每款芯片的ADC通道就不一一赘述,不同芯片其引脚通道等都有所不同,如ZET6和VET6就不一样,具体用那个可以查一下芯片的数据...

  • 双十一不孤独,小巴陪你搞技术-STM32驱动1602时钟

    2024-06-27

    好久都没有更新微信公众号了,今日闲暇,搞了一个1602的时钟,特此分享给大家,共同学习。废话就不多说了咱们先来看看LCD1602的引脚1602的引脚十分简单,三根信号线,8跟数据线,两根背光电源线,一个背光调节线,在上表中也解释的很详细,对于1602的引脚就介绍到这里下面主要来看看它的时序图,分为“写时序”和“读时序”写时序由时序图可知,写指令时,EN引脚需要一个下降沿,RS = 0;RW = 0;故我们的写指令函数可以这样写:读时序同理:根据时序图我们可以写出写数据的函数读写操作都配置好以后我们来看一下如何初始化LCD1602在初始化之前呢,我...

  • LM358光控灯

    2024-06-27

    亲们,感谢关注“创客小巴”,这里会不断推送新的文章,提升您的专业技能,我们是认真的。还没关注的亲们,还请您关注一下,关注后,你会发现“创客小巴”是公鸡中的战斗鸡。上一次我们介绍了使用两个三极管做的光控灯电路,控制三极管的导通和截止来实现的,今天我们换一种方法,采用LM358比较器来实现,在这里介绍的LM358实现光控灯电路的,仅仅用到他的比较功能,即做一个比较器用,而他还有放大的功能,大家可以也深入研究一下哟!我们先来 看一下LM358是怎么使用的以及他的引脚功能。LM358实物图    LM358引脚图从引脚图里我们可以看出,LM...

  • 光控灯小电路

    2024-06-27

    亲们,感谢关注“创客小巴”,这里会不断推送新的文章,提升您的专业技能,我们是认真的。还没关注的亲们,还请您关注一下,关注后,你会发现“创客小巴”是公鸡中的战斗鸡。今天和大家分享一个光控灯的小电路,这个电路没有用LM358或LM393这种比较器,仅仅采用三个三极管就可以实现,让我们一起来看看吧。无光时灯亮有光时灯灭相信大家看到图以后对这个电路的原理就清楚了,利用了三极管的道统和截至下面我们就来简单分析一下这个电路图的工作原理吧。1,有光时:此时光敏电阻的阻值很小,则Q1三极管的电位几乎为0,Q1三极管的B极电压减去E极电压小...

  • 嵌入式工程师必备的加解密与认证基础(五)

    2024-06-27

    本文是加密系列中的第五篇,前文请参考如下链接:前面几篇文章从对称加密一直讲到了非对称加密以及混合加密。加密技术与认证技术通常是紧密联系在一起的,很多嵌入式工程师对加解密多多少少会有一些了解,但是对散列、数字签名、证书这些互联网中常见的名词却是一头雾水。因此从本篇文章开始,我们将进入本系列文章的第二个部分:认证技术体系。什么是认证?关于什么是认证,我觉得还是举几个例子讲更容易被人理解:“认证”就是证明“你是谁”,或者证明“这个东西是谁的”,又或者证明"这个文件有没有被篡改过"。这些问题看似简单,其实挺有难度,...

  • 嵌入式工程师必备的加解密与认证基础(四)

    2024-06-27

    本文是加密系列中的第四篇,前文请参考如下链接:上一篇科普了一下非对称加密的数学原理以及几种常见对称加密算法。本篇将是本系列文章关于加密部分的最后一篇,本系列后续文章将集中讲述认证技术体系的基础知识。前文从对称加密一直讲到非对称加密,也提了非对称加密的优点。然而一个硬币必然有两面,没有什么东西是完美的。一个东西某些指标上的优势通常都是用牺牲其它指标而实现的,非对称加密也不例外。非对称加密最大的劣势就是计算量大,计算时间远远高于对称加密。为了缓解这个问题,人们发明了混合加密系统。混合加密系统:结合对称加密与非...

  • 嵌入式工程师必备的加解密与认证基础(二)

    2024-06-27

    本文是加密系列中的第二篇,前文请参考如下链接:1. 引子:密钥配送问题前文从加解密技术的起源一直说到了常用的对称加密算法,但是不管是DES还是AES,只要是对称加密,那么必然面临一个共同的问题:加密与解密必须使用相同的密钥。这里有一个巨坑,就是密钥的配送问题。如何把密码安全地送到对方手上,而不泄漏? 这也导致密码的保护工作难上加难。人生总有猪队友!此外,在使用对称加密的情况下,为了保证信息安全,每两个人之间的通信都必须使用一份单独的密钥,假设该公司10个人,那么需要用到排列组合 C(10,2) = 45个不同的密码,如果有100人呢...

  • 嵌入式工程师必备的加解密与认证基础(一)

    2024-06-27

    最近几年,单片机软件日益复杂与多样化,对加解密与安全认证的考虑也越来越多的出现在单片机系统设计中,但是很多单片机工程师对于加密算法和认证体系缺乏基本了解,本文就来科普一下相关知识。1. 加解密技术的起源:字符替换加密法 毫无疑问,密码技术最初就是为了字符信息加密。最初人们的加密手段非常初级,就是字符替换,从千年前古罗马时代鼎鼎有名的“凯撒密码”到二战时期“Engima”密码机都可以看成是这种。这种密码机制就是将明文的字母按一定的规律替换成另一个字母来实现加密。凯撒密码原理示意图:   Engima密码机:2. 计算机革命与...

  • 实例化i2c设备的4种方式

    2024-06-27

    前篇关于i2c驱动的架构,, 中介绍了kernel提供的i2c framework。但是没有写完i2c 设备驱动。如何实例化i2c设备?4种方式如下:方法1:静态声明I2C设备通过devicetree声明I2C设备在板级文件中声明I2C设备方法2:显式实例化设备方法3:对某些设备的I2C总线进行探测方法4:从用户空间实例化在本篇中,主要看一下方法1,3和方法4。对于方法2,在下一篇的一个I2C ADC/DAC的misc设备驱动实例中再加以详述。通过devicetree声明I2C设备翻出很久之前的一篇博客,如何通过 DeviceTree Overlays来实例化rtc ds3231, https://blog.csdn.net/feiwatson/article/det...

  • PCI Express板卡电气机械规范

    2024-06-27

    PCI express card electromechanical specificationRevision 5.0, Version 1.0June 9, 2021规范内容• Auxiliary signals辅助信号连接器上也提供一些辅助信号,以协助某些系统级功能实现。高速信号逻辑电平与先进的硅工艺兼容。可选择的低速信号被定义为使用+3.3V或+3.3Vaux电源,因为它们是可用的最低公共电压。大多数专用集成电路 (ASIC, Application Specific Integrate Circuit)工艺使用与+3.3 V兼容的高压(厚栅氧化层)输入/输出晶体管。提供+3.3 V电源允许PCI Express使用现有的控制总线结构信号传输,避免了信号缓冲和总线桥接。• Add-in Car...

  • PCI Express板卡电气机械(CEM)规范

    2024-06-27

    PCI express card electromechanical specificationRevision 5.0, Version 1.0June 9, 2021术语定义x1, x2, x4, x8, x12, x16x1 refers to one PCI Express Lane of basic bandwidth. For example: x4 refers to a collection of four PCI Express Lanes and is typically read as by four.x1指单个通道(lane),单个基本带宽。例如,x4指4条通道(lane)的集合,一般读作by four.AIC, Add-In Card扩展卡A card that is plugged into a connector and mounted in a chassis slot.插在连接器上和安装于底板槽中的板卡。AGP, Accelerated Graphics PortAc...

  • PCI Express板卡电气机械(CEM)规范介绍

    2024-06-27

    PCI express card electromechanical specificationRevision 5.0, Version 1.0June 9, 2021介绍PCI express card electromechanical (CEM) specification Revision 5.0是PCI express base specification Revision 5.0姊妹篇。它主要关注基于早些时候PCI桌面机/服务器的机械和电气规范策略演变的实现。该规范在旧的系统板form factor (如AGP和PCI)的现有框架内为PCI Express (PCIe) Add-in Cards (AIC)提供了附加能力。过去,PCI Express解决方案空间仅限于Advanced Technology eXtended  (ATX)或基于ATX的form factor (计算机硬件或硬件组件尺寸...

  • 低成本双绞线以太网技术:10BASE-T1L

    2024-06-27

    说起现场总线,我们最常见的是RS485。RS485确实有着其优点,传输距离远,成本低,通信协议简单,支持菊花链拓扑,可以满足大部分的IO总线需求。但是随着IoT的崛起,以及MCU功能的强大,现场总线上的IO设备越来越智能化,甚至可以支持AI算法,对带宽的需求也更高。IoT的架构也要求smart IO设备能够直接入云。RS485总线便显得跟不上新需求。这里介绍一种低成本的以太网物理层,T1L技术。一种2线以太网解决方案,线路长达1000米,传输速度为10 Mbps,同时支持PROFINET、Ethernet/IP、OPC UA、Modbus-TCP等传输协议。利用这个标准,我们可以继续使用现有...

  • 查看Linux Kernel源码的方式

    2024-06-27

    介绍两种查看Linux Kernel源码的方式。Online查看Linux系统下本地查看通过Online查看是一种在windows系统下写文档或者设计时查看代码比较方便的方式。下面是两个比较好用的链接。https://elixir.bootlin.com/linux/latest/source下面这个网站可以将函数在右上角列出https://codebrowser.dev/linux/linux/Linux系统下通过VSCode阅读代码Linux Kernel源码一般路径都是在根目录下的/usr/src下,其中linux-***代表版本号。如果没有则需要安装一下。sudo apt-get install linux-source使用apt-get install,会下载到/usr/src下,不会解压。还需要手动解...

  • 直流开关电压源纹波和噪声-1

    2024-06-27

    本来想在网络中摘抄一副直流开关电压源输出示波器直流耦合条件下的测试波形,没有找到,至少没有找到合适的。不过,我们终归会自己测试这一波形,然后仔细观察它,甚至会放大某些细节观察,或者测量其频谱。现在我们可以想象一下其波形。纹波和噪声定义电源轨电压必须位于目标负载容许范围内。下图摘抄自Tektronix网页,图中可以看出其电源电压包含直流,噪声,周期性偏差及瞬变。瞬变可能自于目标负载瞬变(Load transient)或者输入电源电压瞬变(Line transient)。不过,这篇文档我们主要简单描述一下噪声及周期性偏差。下图摘自于Keysight网页,图...

  • tags, 标签

    2024-06-27

    标签是什么?为什么需要标签?如何使用标签?在一文中提到了,双碳、低碳、碳达峰,等新标准、新要求推动了“能效管理系统”应用。“能效管理系统”可以帮助提高建筑物的能源效率从而减少能源需求,降低运营成本,抑制碳排放,改善室内空气质量。在廉价嵌入式传感器和网络设备的推动下,现代建筑正在与各种传感器和设备集成,以实现集中操作和管理。“物联网”(IoT)技术将灯、电表、occupancy传感器和以及各种电器接入BMS(Building Management System楼宇管理系统)。然而缺乏通用“数据表示”妨碍了建筑物之间的互操作性,并限制了能源应用的部署,...

  • 一个楼控项目的周期

    2024-06-27

    一个楼控项目从竞标到实施,再到交付都需要经过哪些具体的步骤?尝试梳理一下,限于经验,不免以点带面,管中窥豹。有些公司的产品和服务往往会分为直销和分销两种模式,我们这里就不加以区分。售前服务与合作伙伴及客户初步接触客户的痛点是什么我们提供的方案帮客户解决什么需求,竞争力在哪里市场调研竞争对手的信息(价格,方案等)方案设计草稿帮助客户评估和发现能源管理中存在的问题,提供初步解决方案及预算提供多种方案,以及方案间优缺点比较方案演示以便帮客户更直观的理解方案方案设计和项目竞标竞标准备竞标申请竞标提交优化竞标方案详...

  • 适合单片机系统的开源文件系统

    2024-06-27

        在设计和开发单片机软件时,相较传统方式——直接在flash中分配固定的区域来存储数据文件,使用文件系统无疑具有先进性和便利性。   然而,尽管MCU进入了32位arm时代,能力也越来越强,但是适合于PC机与MPU的大型文件系统,例如ext2/3/4等,对于单片机而言,还是太“笨重”了。本期公众号就推荐几款适合MCU的小型开源文件系统供大家参考和学习。FatFs(Generic FAT Filesystem Module) - 经久不衰老戏骨     FatFs 是专为小型嵌入式系统开发的一种通用FAT 文件系统。它完全是由 AISI C 语言编写,并且完全独立于底层的 I/O 介质。能够...

  • Robot Framework 自动测试框架

    2024-06-27

    程序员们对敏捷开发大概都是爱恨交加的。摸鱼的机会被压缩了,每天的站会全靠口才。测试组也头疼每个迭代的发布,以及迭代中无休止的各种临时发布(内测版本)。因此,CI/CD (持续集成,持续部署)在敏捷开发流程中就很重要。而CI/CD中的自动化测试(自动化单元测试,自动化回归测试)更是保证质量、减少开发和测试人员无休止重复劳动的重要环节。常见的自动化单元测试的框架有 CPPUTest, Junit, gunit, 适合不同的语言, 开发编译平台。这里我们重点介绍一个可用于自动化回归测试的框架,Robot Framework。 Robot Framework 是一个基于Python语言...

  • 智能电表

    2024-06-27

    双碳,低碳,碳达峰,……新标准,新要求,推动了“能效管理系统”。而能效管理系统,除了炫酷的大屏之外,智能电表不可或缺。这篇看看智能电表的原理,以及应用。看一张能耗管理系统的思维导图。用电检测部分,自然用到电表。而敲门抄电表的时代已经过去了。远程抄表目前都有哪些呢?最常见的国电采用的电力载波表,通过电线连到采集器,采集器通过GPRS上传读数到远抄服务器,所以国家电网居民用户基本上可通过掌上电力查看自己家每一天的用电量。提供这解决方案与产品的厂家大都直接跟国电合作。其次就是大型建筑里用的走485总线连网的智能电表,...

  • 碾压串口三剑客的终极串口神器:VOFA+

    2024-06-27

    让我们先来回顾一下,作者曾向大家推荐过三款串口数据可视化神器:Serial Studio、SerialPlot 以及SerialChartSerialChart:串行数据可视化程序SerialPlot :虚拟串口示波器SerialChart:串口实时数据图形化工具想详细了解的读者可以查看之前的文章:但是今天我们的主角不是它们,而是一款国产串口神器:VOFA+。准确的说,将VOFA+称为串口神器是有点小瞧它了,因为它其实是一个可扩展的数据可视化平台,而且也不仅仅支持串口,还支持网络通信!它的官方名称也不是“串口神器”,而是“插件驱动的高自由度上位机”。VOFA+的目标就是降低图形化调试的...