• 本科毕业的硬件工程师进大厂越来越难了...

    要说现在什么最挣钱,多数人的第一反应就是:程序员!随手看下各大厂技术岗校招薪水,以字节跳动的算法岗为例,SSP级别的Offer年薪高达50W!▲数据来源校招薪水50W,对于传统行业来说,已经是工资天花板;但对优秀程序员而言,这仅是校招起薪,之后通过晋升和跳槽,更是可能达到百万年薪。即使进不了大厂,在一个小厂做程序员,工资相比运营和HR等岗位照样是一骑绝尘。也因此,无论是在校生还是工作党,一大波人都铆足了功夫转行计算机。自学刷题、上培训班、直接背代码......方式可谓五花八门。▲图片来源于知乎然而,转行程序员后的前景虽好,转行本身却并非易事。一来,当下技术岗竞争激烈,互联网公司尤其看重学历和项目经验,非科班专业优势不大。二来,没编程基础和正确引导,光是靠自学和刷题,入门耗时久,代码能力提升慢。那又要扎实转码,又想拿高薪Offer,有什么一举两得的方法吗?2021年,我们有一个更好的选择——计算机硕士!计算机硕士同时提供全日制和非全日制两种解决方案,无论在校生还是工作党,都可选择合适的方式转码。选择全日制,拿下985、211名校计算机硕士学历,获得学历 专业的双重背书。选择非全,不必脱产学习,在职就能跟着专业老师学编程;并且国家和企业对非全的认可度也相当高。▲图片来源国家官网为了帮助想转行的大家同时提升学历背景 代码能力,开课吧联合资深技术专家重磅打造「0基础-计算机硕士上岸集训营」 。计算机硕士上岸集训营 ☑ 0基础    ☑  含金量高   ☑ 提升专业能力粉丝优惠!仅需 1 元!速来定制专属你的备考方案报名赠「基础必备代码合集」1计算机硕士让你离50W年薪更近!012年拿证,轻松转行跳槽、升职加薪计算机硕士2年即可毕业拿双证:学历证 学位证,学信网可查。学历 专业能力的双保障下,无论你是什么身份,身处哪个阶段,都能轻松实现转行、跳槽、升职加薪……转行人士:系统学习编程代码,快速更换职业赛道,跨行拿高薪应届生:强化科班背景,提高代码实战能力,校招脱颖而出在职人员:提高学历,提升职场天花板,升职、加薪、跳槽机会多02系统学习新技术,对标大厂人才需求计算机技术日新月异,大厂相对应地开设了新兴岗位,绝对高薪,但招聘需求都是硕士起步。▲处于程序员鄙视链顶端的算法岗,明确要求硕士学历及以上很多高校跟随技术发展,设置了大量新兴专业,只要你拿下计算机硕士,既能提升学历、系统学习专业知识,又能高度对标大厂人才需求!计算机硕士包含多门核心课程及选修课程,覆盖计算机科学、人工智能、大数据等热门方向:计算机与软件架构;数据库;云计算;人工智能;机器学习;数据挖掘、社交网络分析;自然与语言处理;计算机视觉…03考公优势大,彻底摆脱35岁瓶颈期互联网的高速发展影响各行各业,央企、国企、政府部门对计算机人才的需求不断增加,计算机一度成为国考、公考最热门的专业。然而不可忽略的是,体制内对于学历的把控更严格,稍微好点的岗位都是硕士起步!即使不进大厂,拥有计算机硕士学位,也可以去央企国企拿着不错的薪水养老,或选择进入政府部门端起铁饭碗。2只需1元全方位助你蜕变成「硕」!01AI精准择校择专业,系统制定备考方案无论你是想提升技术能力和学历背景的工作党,还是有转行意向的非技术人员,或是毕业后想入职大厂技术岗的在校大学生。开课吧自主研发的AI系统,都能通过结合数据,科学估分、排位、对比,帮你精准择校择专业。在后期学习中,更能结合你的自身情况,为你制定专属备考方案,科学复习,一击即中!02开放全部代码,课后复用方便高效对于课程中涉及到的全部代码,我们将免费开放!你可以用于课后自查、复习巩固,甚至复用于日后的业务,方便高效!03名师1V1带练,伴随式编程环境在「0基础-计算机硕士上岸集训营」,你将获得伴随式的编程环境。名师1V1带练、带背,运用科学的记忆方法引导,帮你消化疑难知识点04三位一体跟踪服务,技术氛围浓厚只要报名,就能收获讲师、助教、班班全程三位一体跟踪式服务,24H为你答疑解惑。同时还有来自五湖四海的大牛做同学,技术氛围浓厚,想不进步都难!幸运的话,没准还有人帮你内推!只需1块钱,不到一瓶水的价格,给自己一次转行拿高薪的机会吧!如果你还处于观望中,不确定是否要考,或是因为考试难度和是否脱产等问题有所犹豫,也可以先报名了解、咨询,或许就会豁然开朗!快来加入我们,和志同道合的小伙伴一起抱团成长!计算机硕士上岸集训营 ☑ 0基础    ☑  含金量高   ☑ 提升专业能力粉丝优惠!仅需 1 元!速来定制专属你的备考方案报名赠「基础必备代码合集」Q

    8号线攻城狮

  • 三极管电路必懂的几种分析方法!

    ▼点击下方名片,关注公众号▼三极管有静态和动态两种工作状态。未加信号时三极管的直流工作状态称为静态,此时各极电流称为静态电流,给三极管加入交流信号之后的工作电流称为动态工作电流,这时三极管是交流工作状态,即动态。一个完整的三极管电路分析有四步:直流电路分析、交流电路分析、元器件和修理识图。一、直流电路分析方法直流工作电压加到三极管各个电极上主要通过两条直流电路:一是三极管集电极与发射极之间的直流电路,二是基极直流电路。通过这一步分析可以搞清楚直流工作电压是如何加到集电极、基极和发射极上的。如图所示,是放大器直流电路分析示意图。对于一个单级放大器而言,其直流电路分析主要是图中所示的三个部分。分析三极管直流电路时,由于电路中的电容具有隔直流特性,所以可以将它们看成开路,这样上图所示电路就可以画成如下图所示的直流等效电路,再用这一等效电路进行直流电路分析就相当简洁了。二、交流电路分析方法交流电路分析主要是交流信号的传输路线分析,即信号从哪里输入到放大器中,信号在这级放大器中具体经过了哪些元器件,信号最终从哪里输出。如图所示,是交流信号传输路线分析示意图。另外还要分析信号在传输过程中受到了哪些处理,如信号在哪个环节放大,在哪个环节受到衰减,哪个环节不放大也不衰减,信号是否受到了补偿等。上图电路中的信号经过了C1、VT1、C2、VT2和C3,其中C1、C2和C3是耦合电容,对信号没有放大和衰减作用,只是起着将信号传输到下级电路中的耦合作用,VT1和VT2对信号起了放大作用。三、元器件作用分析方法1、元器件特性是电路分析关键分析电路中元器件的作用时,应依据该元器件的主要特性来进行。例如,耦合电容让交流信号无损耗的通过,而同时隔断直流通路,这一分析的理论根据是电容隔直通交特性。2、元器件在电路中具体作用电路中的每个元器件都有它的特定作用,通常一个元器件起一种特定的作用,当然也有一个元器件在电路中起两个作用的。在电路分析中要求搞懂每一个元器件在电路中的具体作用。3、元器件简化分析方法对元器件作用的分析可以进行简化,掌握了元器件在电路中的作用后,不必每次对各个元器件都进行详细分析。例如,掌握耦合电容的作用之后,不必对每一个耦合电容都进行分析。如图所示,是耦合电容分析示意图。四、修理识图方法修理识图为检修电路故障服务,这一识图要求在完全搞懂电路工作原理之后进行,否则没有意义。因为故障现象明确,因此故障检修过程中的修理识图可以有针对性的选择电路中的元器件进行,而不需要对电路中的每个元器件都进行故障分析。分析时,找出电路中的主要元器件,并分别假设它们出现开路、短路、阻值变大和变小等故障,分析这种故障对直流电路和交流电路的影响,从而推理出可能的故障根源。修理识图的关键是找出电路中关键测试点:1、单级放大器关键测试点如图所示,单级放大器主要是三极管的关键测试点。三极管的关键测试点用来测量三个电极的直流工作电压,其中集电极是第一测试点,其次是基极,第三是发射极。2、集成电路关键测试点集成电路关键测试点最重要的是电源引脚,还有输入信号引脚和输出信号引脚。五、三极管基极偏置电路分析方法三极管基极偏置电路分析最为困难,掌握一些电路分析方法可以方便基极偏置电路的分析。1、电路分析的第一步是在电路中找出三极管的电路符号,如图所示,然后在三极管电路符号中后找出基极,这是分析基极偏置电路的关键一步。2、第二步从基极出发,将与基极和电源端相连的所有元器件找出来,如图所示,电路中的RB1,再将基极与地端相连的所有元器件找出来,如电路中的RB2,这些元器件构成基极偏置电路的主体电路。上述与基极相连的元器件中,要区别哪些元器件可能是偏置电路中的元器件。电阻器有可能构成偏置电路,电容器具有隔直作用而视为开路,所以在分析基极直流偏置电路时,不必考虑电容器。3、第三步确定偏置电路中的元器件后,进行基极电流回路的分析,如图所示。基极电流回路是:直流工作电压VCC→偏置电阻RB1→VT1基极→VT1发射极→VT1发射极电阻RE→地端来源 | 电子电路end微信公众号后台回复关键字“加群”,添加小编微信,拉你入技术群。

    8号线攻城狮 电路 三极管

  • 推荐|嵌入式AI大神做的学习笔记(20G/代码/PPT)

    有粉丝问我:“当前乃至未来5-10年,嵌入式开发者还有哪些风口?” 画外音:风口的本质,其实就是一段时间的人才供需不平衡。说白了就是由于行业突变,敏锐的资本快速进入,导致短时间内行业大量扩张,需要大量开发者。 目前的嵌入式开发越来越倾向于智能化,也就是我们所说的智能硬件(硬件 软件)。以百度机器人为例,机器人的核心是大脑,即是“数据和算法” ,但机器人大脑想机器人身躯能够像人类一样活动,能说会道,行走自如,那么就必须得依靠嵌入式技术。 人工智能虽然红火了这些年,但它真正业务落地的大舞台就是在物联网端侧AI嵌入领域,这里面有非常庞大的应用场景。  所以,我个人觉得,在物联网和人工智能的促进下,嵌入式在未来的5-10年内会迎来更多的发展机会,一方面嵌入式开发会迎来更多的应用场景,另一方面嵌入式开发的技术体系也会逐渐丰富,从而拓展物联网开发的技术边界。目前已经有不少AI框架已经逐步支持端侧AI了,比如谷歌的tensorflow lite 和 tensorflow lite micro,以及华为的mindspore lite。芯片厂商ST和NXP 也都推出了部分面向端侧AI的工具和demo。我本人一直从事嵌入式开发工作,同时也一直关注着嵌入式AI的发展,相信随着5G时代的到来,AI于各行业垂直领域应用具有巨大的潜力。每一个风口下技术人才永远是最难求的一个工种,自从移动互联网来,优秀的开发者身价被翻了几倍之多。在当下,我个人非常看好嵌入式AI行业在未来的发展潜力,并且不用太焦虑于是否行业已经发展到了瓶颈,我们要做的,首先是巩固自身的实力水平,让自己能在机会来时抓住它。那么在这样的时代背景下对于从事嵌入式开发的技术人员来说,我给3点建议,来提升自身的职场价值: 进一步丰富自身的知识结构,要重点关注人工智能技术;注重行业经验的积累,嵌入式开发与行业领域有非常多的联系(未来嵌入式开发会逐渐向传统行业覆盖);关注工业互联网领域的相关技术。最近整理一套AI入门必备的学习资料,强烈推荐大家学习,作者王小天,拥有8年人工智能领域实战经验,目前就职于BAT之一,AI算法高级技术专家,法国TOP3高校双硕(计算机科学和数学应用双硕士)毕业。他在人工智能和芯片领域发表10余篇论文,具有深厚的学术背景和丰富的项目及业务落地经验。工作期间主要负责人工智能业务线CV与NLP相关算法工作,推进人机混合智能、语义分割、机器翻译、虹膜识别等模块的核心算法研究与优化。对图像分类、物体检测、目标跟踪、自动驾驶、计算机体系结构等有深入的研究。他兼具理论与实战落地经验,深知初学者学习痛点。说实话,这样资历的人,很难得。(资料内容过多,仅截取部分)由于工作需要,这份教程我本人也在学习中,虽然已经从事这个行业多年,再看这份教程的时候,仍然能查漏补缺,收获满满,我相信不管是AI入门,还是已经具备了一定的工作经验,这份学习资料,都值得你去认真学习研究。所有以上相关的的内容全部都已经打包好了,汇总成了一份百度云的链接,小贴心之处是怕有的兄弟没有买百度云会员的朋友,能用2MB /S的速度下载,还特地给大家准备了下载工具。长按下方二维码 2 秒立即领取接下来,我详细介绍一下,这份资料该如何学习?首先,入门AI,掌握一门深度学习框架是必备的生存技能之一。所以教程会从深度学习框架学习入手,带你从零开始训练网络,做到独立搭建和设计卷积神经网络(包括主流分类和检测网络),并进行神经网络的训练和推理(涉及PyTorch、Tensorflow、Caffe、Mxnet等多个主流框架),通过实战让你掌握各种深度学习开源框架。截取框架学习部分目录大家感受下。深度学习与神经网络深度学习简介基本的深度学习架构神经元激活函数详解(sigmoid、tanh、relu等)感性认识隐藏层如何定义网络层损失函数 推理和训练神经网络的推理和训练bp算法详解归一化Batch Normalization详解解决过拟合dropoutsoftmax手推神经网络的训练过程 从零开始训练神经网络使用python从零开始实现神经网络训练构建神经网络的经验总结 深度学习开源框架pytorchtensorflowcaffemxnetkeras优化器详解(GD,SGD,RMSprop等在计算机视觉技术方面,会系统讲解卷积神经网络、目标检测、OpenCV等,从检测模型教学逐步深入,直到达到CV算法核心能力的提升。网上相关AI入门资源也很多,但很多技术内容太少,也不成体系,或是写的不全面半懂不懂,重复内容占绝大多数(这里弱弱吐槽百度的搜索结果多样化)。画外音:同质性的教程有一份就够,注意筛选,不要浪费不必要的时间。长按下方二维码 2 秒立即领取由于微信限制,一个号每天加人上限是100人,太多就被限制了,抓紧扫码领取,先到先得。

    8号线攻城狮 嵌入式 AI

  • 如何正确地理解电源纹波、噪声及其测试?

    ▼点击下方名片,关注公众号▼1、概述关于电源噪声与纹波相关的测试,是每个硬件工程师都避不开的话题。那么如何正确区分纹波与噪声并采用高效的方法测试显得尤其重要。本篇文章针对电源纹波与噪声的测试做一些简单的描述。2、纹波与噪声对比讲噪声与纹波测试方法之前,我们先来认识一下到底什么是电源的纹波与噪声呢?抛开一些繁琐的文字概念,下面用一个图和一张表概括的描述下(关于更细节的内容,建议到各大芯片网站自行查阅) 一个图图 1 电源纹波与噪声一张表频率特点频率范围影响要求纹波频率固定,与开关频率有关一般认为≤5MHz影响芯片基本性能和稳定性1%噪声频率不固定,与用电器件有关一般认为≥5MHz影响数据收发数据可靠性、丢包,错包概率3%~5%3、如何进行噪声与纹波的测试?噪声测试方法示波器耦合方式选择交流耦合档位;带宽限制选择全带宽;将示波器探头的地夹线去掉,换上接地环,用探针靠接需要测试位置,接地环就近连接在裸露的地上,观察输出的波形。纹波测试方法在测试纹波的时候需要使用20MHz的带宽限制,目的是为了把高频的噪声去掉,位置要选择在电源输出位置,抓到真实的电源纹波。示波器耦合方式选择交流耦合档位;带宽限制选择20MHz;将示波器探头的地夹线去掉,换上弹簧接地环,用探针靠接电源的输出端,接地环就近连接在裸露的地上,观察输出的波形。4、注意事项注1:为了获取噪声的真实情况,电源噪声测试时一般不做带宽限制,测试位置一般选择在电容输出引脚上;注2:对于纹波,一般是指在电源输出的时候,电源自身开关引起的一种固定频率波动的现象,纹波一般跟电源的开关频率同步,由电容的充放电、 PWM调节等产生,频率一般不会高于20MHz,因此测试时一般带宽限制选择20MHz;注3:测试时去掉地夹线,换上弹簧接地环,是为了减小环路面积,减小外部环境对测试结果产生干扰(参照下图2);注4:测试时需要带负载测试,不带负载测试纹波有时会偏大;图 2  地夹线--->弹簧接地环5、一点感想简单聊聊经常会遇到的一些事情:如何判断一家公司适不适合自己?对于这个问题我一般看三点:1、这份工作是否有前途?能否对自己有提升?2、薪资待遇是否达到自己的要求?3、公司氛围是不是合适自己?end微信公众号后台回复关键字“加群”,添加小编微信,拉你入技术群。

    8号线攻城狮 噪声 电源纹波

  • 精辟,16张图说透Modbus-RTU协议

    ‍[导读] 大家好,今天来总结一下Modbus-RTU协议,原本想把实现思路也一起发出来,但是感觉太长了,就拆开了。前世今生 照例简单说下这个协议的历时,Modicon公司于1979年制定了Modbus协议标准,并用在其PLC产品上。后来Modicon公司被施耐德收购。已成为一种事实标准协议,同时也被IEC-61158工业通信总线规范收录于type 15子集。所谓一流的企业做标准,二流的企业做品牌,三流的企业做产品。这些标准国人都基本是使用者,而非缔造者,所以使用一下,产品上印个标志,做做相关的测试认证都要给老外交钱。这里只是顺带牢骚几句,与本文想说的无关。打住!Modbus的应用除了常见的过程控制系统,在其他很多领域都有其身影,比如一些楼宇控制,消防控制等等都有大量的产品采用Modbus协议,因为这个协议实现简单,工作可靠,还是标准化的协议!Modbus分很多实现版本,总的来说是一种应用层协议。从OSI七层模型来看,位于第七层应用层。它定义了在不同类型的总线或网络上连接的设备之间提供 ”客户端/服务器“ 通信。对于使用串口的版本,也定义了layer 1 和 layer 2,实现在主站和一个或多个从站之间交换MODBUS 报文。具体有哪些版本呢?其实主要分两种:Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。Modbus ASCII :报文使用 ASCII 字符。ASCII 格式使用纵向冗余校验和。Modbus ASCII 报文由冒号 (":")开始 和换行符 (CR/LF) 结尾构成。当然其他还根据所使用的物理层不一样,有这么些做法:Modbus TCP/IP 或 Modbus TCP :这是一种 Modbus 变体版本,使用 TCP/IP 网络进行通信,通过 502 端口进行连接。报文不需要校验和计算,因为以太网底层已经实现了CRC32 数据完整性校验。Modbus over TCP/IP 或 Modbus over TCP 或 Modbus RTU/IP :这也是一种 Modbus 变体,与 Modbus TCP 的不同之处在于,与 Modbus RTU 一样,校验和包含在报文中。Modbus UDP:也有在UDP上传输Modbus报文的,不过需要做错误重传机制,这么干的应该不多。在具体实现之前,先梳理一下基本概念。Modbu标准 概况Modbus-串口版本基本定义了物理层、链路层以及应用层:物理层可以使用485或232, 这里EIA/TIA都是标准协会的简称,也常写成RS-485/RS-232。RS-485:半双工收发接口,这是最为常用的modbus物理层,信号采用差分电平编码,用一对双绞线现场布线,抗干扰性能也不错RS-422:全双工收发接口,这种物理层也有比较多的应用,信号采用差分电平编码,需要两对双绞线现场布线,抗干扰性能也不错。与RS-485相比,其优势在于可以实现全双工,通信的效率高些,所需要的代价就是现场布线需要两对双绞线,增加了一定的成本。RS-232:全双工收发接口,这个基本用在点对点通信场景下,不适合多点拓扑连接,采用共模电平编码,一般需要Rxd/Txd/Gnd三根线连接。物理层RS-485,前面总结了,直接看看链路层。链路层单播与广播modbus从链路控制的角度属于主(Master)/从(Slave)方式,比较简单。对介质的访问控制相当于时分复用。通讯总是由主站发起,但可分为单播和广播两种方式,单播就是主站向特定的从站发出通讯请求,广播是向总线所有的设备发起通讯请求。看下面两个图就比较清楚了:单播(unicast): 报文中的地址字段指定所需要访问的设备,该设备收到请求后作出对应的应答。广播(Broadcast):主站向总线所有设备发出广播报文,所有从设备都不做应答,报文中地址为0则为广播请求:讲到了单播以及广播,广播地址为0,自然就需要看看modbus寻址方式了:‍寻址‍modbus-RTU从设备都具有一个单字节地址,其地址分配定义为:地址0:广播地址,所有的从设备必须处理广播报文。1-247:从设备地址,主设备是没有地址的,这一点需要注意。248-255:保留地址报文结构前面说过,通信模式是主/从方式,也即主请求、从应答的方式。无论主请求报文,还是从应答报文其结构都是如下图这样的:地址:取值范围是0-247,如果是0,就是主站广播报文;如果是1-247,则有可能是主站请求或者从站应答。功能码:也就是报文命令,代表主站对从站的操作,读或者写数据:数据字段,主请求报文,从应答报文会有所差异。也就是说假设抓取总线报文,如何区分是主站请求还是从站应答,则需要通过数据字段进行区分了。CRC校验:采样CRC16,16位循环冗余校验。主站状态机链路层一个最最重要的职责就是对通讯介质的管理,如果没有介质的管理,就不能成其为总线。Modbus如何进行介质管理呢?前面介绍了从链路管理的角度来看,总线介质上发送报文的有两种设备,一种是主设备,另一种是从设备。对于主设备来说,它会有两种报文会向总线介质发送:一种是广播报文,另一种是单播报文。那么究竟是怎么控制介质的呢?其实很简单,看看下面这个状态机就很清楚了:图中的事件的产生,将会触发主设备链路状态机从一个状态迁移到另一个状态,再事件触发后,还伴随动作需要执行。空闲:主设备处于空闲态。如果此时应用程序需要发送一个从设备请求,就会切换到等待应答状态;如果此时应用需要发送总线广播,此时,主设备就切换到广播延时。等待应答:在等待应答状态时,主设备将等待来自从设备的应答报文,如果接收到从站的报文,则进入应答处理。如果等待超时则进入错误处理状态机;在等待过程中,状态机不发生迁移。广播延时:如果主设备需要发送广播报文,则发送完就进入广播延时状态。这里为什么要延时呢?延时的设计目的就是留给从设备一点时间去处理接收到的广播请求。如果主设备没有这个延时,那么如果应用马上在发一个请求,则从设备有可能来不及处理。但是从设备只做接收处理,任何从设备都不可以对广播报文进行应答。从站状态机对于从设备来说,只接收主设备请求或者发送应答,因此从设备的状态机就更简单了。从设备的状态机很简单,系统一上电就进入空闲状态,空闲态一直监听总线报文,当收到一个完整的报文时,首先校验报文的正确性,再检查报文是否是发给该设备的,如果是请求本设备的,则先完成请求的操作,然后准备好应答报文,如果出错则将出错信息发送给主站。如果收到的是主站广播请求,则仅仅处理相应请求,不做任何应答。字节编码格式报文以字节为单位,每个字节再物理层又以什么格式出现再总线呢?其字节编码格式为:1个起始位,8个数据位,1个校验位,1个停止位。校验位可选择奇校验、偶校验、或无校验,有一个地方标准特别说明了一下,如果选择无校验,会采用2个停止位。介质管理对于帧的时间管理,其实就是对介质的冲突管理,modbus-RTU对于介质管理规定了2个重要的时间参数,以实现成帧、冲突管理等。来看看下面这几个图:这个图可以用于断帧,也就时判断是否接收到一个完整的帧,因此只需要使用一个定时器在每次收到一个字节后,就重启一个3.5字节定时器,如果这个3.5字节定时器中断了,就证明收到了一个Modbus报文,至于这个报文是不是正确的报文,可以在进一步根据帧格式进行校验。另外还规定了报文需要连续发送,字节间隔不得超过1.5字节时间。上面对于介质管理所规定得时分复用,可以用一个状态机来描述:当T3.5定时器超时后,对于modbus-RTU来说,帧校验采用CRC-16。对于CRC-16得实现,标准给出了查表法得实现栗子:查表法:static unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40 } ;  static char auchCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7,0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE,0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2,0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB,0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91,0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88,0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,0x40 }; unsigned short CRC16 ( unsigned char *puchMsg, unsigned short usDataLen )  {  unsigned char uchCRCHi = 0xFF ;  /* 高字节初始化值   */  unsigned char uchCRCLo = 0xFF ;  /* 低字节初始化值   */  unsigned uIndex ;     while (usDataLen--)  {   uIndex = uchCRCLo ^ *puchMsg  ;     uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ;   uchCRCHi = auchCRCLo[uIndex] ;  }  return (uchCRCHi 

    小麦大叔

  • 这14种嵌入式实时系统,你用过哪些?

    满足实时控制要求的嵌入式操作系统(RTOS) 以下介绍14种主流的RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX,而国产的嵌入式操作系统包括都江堰操作系统(djyos)、Alios Things、Huawei LiteOS、RT-Thread、SylixOS。下面分别介绍这14种嵌入式操作系统的特点。1、μClinuxμClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。综上可知,μClinux最大特点在于针对无MMU处理器设计,这对于没有MMU功能的stm32f103来说是合适的,但移植此系统需要至少512KB的RAM空间,1MB的ROM/FLASH空间,而stmf103拥有256K的FLASH,需要外接存储器,这就增加了硬件设计的成本。μClinux结构复杂,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品注重文件系统和与网络应用则μClinux是一个不错的选择。2、μC/OS-IIμC/OS-II是在μC/OS的基础上发展起来的,是用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和扩展性强等特点。在文件系统的支持方面,由于μC/OS-II是面向中小型嵌入式系统的,即使包含全部功能,编译后内核也不到10 KB,所以系统本身并没有提供对文件系统的支持。但是μC/OS-II具有良好的扩展性能,如果需要也可自行加入文件系统的内容。在对硬件的支持上,μC/OS-II能够支持当前流行的大部分CPU,μC/OS-II由于本身内核就很小,经过裁剪后的代码最小可以为2KB,所需的最小数据RAM空间为4 KB,μC/OS-II的移植相对比较简单,只需要修改与处理器相关的代码就可以。综上可知,μC/OS-II是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,针对于没有MMU功能的CPU,它是非常合适的。它需要很少的内核代码空间和数据存储空间,拥有良好的实时性,良好的可扩展性能,并且是开源的,网上拥有很多的资料和实例,所以很适合向stm32f103这款CPU上移植。3、eCoseCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。eCos操作系统的可配置性非常强大,用户可以自己加入所需的文件系统。eCos操作系统同样支持当前流行的大部分嵌入式CPU,eCos操作系统可以在16位、32位和64位等不同体系结构之间移植。eCos由于本身内核就很小,经过裁剪后的代码最小可以为10 KB,所需的最小数据RAM空间为10 KB。在系统移植方面 eCos操作系统的可移植性很好,要比μC/OS-II和μClinux容易。综上所述,eCos最大特点是配置灵活,并且支持无MMU的CPU的移植,开源且具有很好的移植性,也比较合适于移植到stm32平台的CPU上。但eCOS的应用还不是太广泛,还没有像μC/OS-II那样普遍,并且资料也没有μC/OS-II多。eCos适合用于一些商业级或工业级对成本敏感的嵌入式系统,例如消费电子领域中的一些应用。4、FreeRTOS由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。FreeRTOS的不足:相对于常见的μC/OS—II操作系统,FreeRTOS操作系统既有优点也存在不足。其不足之处, 一方面体现在系统的服务功能上,如FreeRTOS只提供了消息队列和信号量的实现,无法以后进先出的顺序向消息队列发送消息;另一方 面,FreeRTOS只是一个操作系统内核,需外扩第三方的GUI(图形用户界面)、TCP/IP协议栈、FS(文件系统)等才能实现一个较复杂的系统, 不像μC/OS-II可以和μC/GUI、μC/FS、μC/TCP-IP等无缝结合。5、mbed OS开源嵌入式操作系统,ARM公司将mbed OS免费提供给所有厂商使用,mbed提供了一个相对更加系统和更加全面的智能硬件开发环境。主要功能:提供用于开发物联网设备的通用操作系统基础,以解决嵌入式设计的碎片化问题。支持所有重要的连接性与设备管理开放标准,以实现面向未来的设计。使安全可升级的边缘设备支持新增处理能力与功能。通过自动电源管理解决复杂的能耗问题。主要特点:开发速度快,功能强大,安全性高,为了量产化而设计,可离线开发,也可以在网页上编辑。6、RTX是ARM公司的一款嵌入式实时操作系统,使用标准的C结构编写,运用RealView编译器进行编译。不仅仅是一个实时内核,还具备丰富的中间层组件,不但免费,而且代码也是开放的。主要功能:开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。主要特点:支持时间片,抢占式和合作式调度。不限制数量的任务,每个任务都具有254的优先级。不限制数量的信号量,互斥信号量,消息邮箱和软定时器。支持多线程和线程安全操作。使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。7、VxWorks美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系(RTOS),具有硬实时、确定性与稳定性,也具备航空与国防、工业、医疗、汽车、消费电子产品、网络及其他行业要求的可伸缩性与安全性。主要功能:支持可预测的任务同步机制、支持多任务间的通信、存储器优化管理、操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。实时时钟服务 中断管理服务。主要特点:具有一个高性能的操作系统内核Wind(实时性好、可裁减)友好的开发调试环境、较好的兼容性、支持多种开发和运行环境8、QNX诞生于1980年,是一种商用的遵从POSIX规范的类Unix嵌入式实时操作系统。主要功能:支持在同一台计算机上同时调度执行多个任务;也可以让多个用户共享一台计算机,这些用户可以通过多个终端向系统提交任务,与QNX进行交互操作。主要特点:核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。9、NuttXNuttX是一个实时嵌入式操作系统(Embedded RTOS),第一个版本由 Gregory Nutt 于 2007 年在宽松的 BSD 许可证下发布。主要功能:可以构建为开放的、平面的嵌入式 RTOS,或单独构建为具有系统调用接口的微内核。容易扩展到新的处理器架构、 SoC 架构或板级架构。实时的、确定性的、支持优先级继承。BSD 套接字接口。优先级管理的扩展。可选的具有地址环境的任务(进程)。主要特点:配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。10、都江堰操作系统(djyos)(注意:网友提示都江堰操作系统官网提示,stm32的f4和f7没调通)都江堰操作系统,简称djyos,得名于一个伟大的水利工程:都江堰。与传统操作系统不同,djyos不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了VC似的。djyos的调度算法使程序员可以摆脱线程和进程的束缚,djyos没有有关线程的api,一个完全不懂线程知识的程序员也可以顺利地在djyos下编写应用程序。djyos 操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。11、Alios Things据著名媒体嵌入式操作系统RTOS介绍,AliOS Things 是 AliOS 家族旗下、面向 IoT 领域的、高可伸缩的物联网操作系统。AliOS Things将致力于搭建云端一体化IoT基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云Link,可广泛应用在智能家居、智慧城市、新出行等领域。点评:阿里系,背靠阿里资源来势汹汹杀入物联网市场,芯片 模组厂商合作,是非常有力的一个玩家,但这也是其最大的劣势!12、Huawei LiteOS嵌入式操作系统RTOS介绍,Huawei LiteOS 是华为面向IoT领域,构建的轻量级物联网操作系统,以轻量级低功耗、快速启动、互联互通、安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。点评:华为系,不过其开源程度比较低,其主要用于华为自己的产品,有大树罩着。13、RT-Thread嵌入式操作系统RTOS介绍,RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。点评:国内最有可能成为Top 1,优势在于丰富的组件,中立立场!赶上了时机,得到诸多芯片厂商的支持,也挺受开发者喜欢的。缺点在于本身的教程文档和freertos等之类的比还是很弱。嵌入式操作系统RTOS推荐的学习资源:① 文档:https://www.rt-thread.org/document/site/② 书籍:《 嵌入式实时操作系统:RT-Thread设计与实现 》《 RT-Thread内核实现与应用开发实战指南 基于STM32 》14、SylixOS嵌入式操作系统RTOS介绍,SylixOS 是一个开源的跨平台的大型实时操作系统(RTOS),SylixOS诞生于2006年,经过十多年的持续开发,SylixOS 已成为功能最为全面的国产操作系统之一。目前已有众多产品和项目应用案例,行业涉及航空航天、军事防务、轨道交通、智能电网、工业自动化等诸多领域。SylixOS 完全符合 POSIX 规范,开源社区丰富的自由软件移植非常方便。点评:这家也是挺有意思的,2006年就开始了,吃军工饭,最近一两年才露头角。其实力不容小觑!参考网站:http://www.sylixos.com/当然,RTOS并不仅上面这些,欢迎补充直接来源:最后一个bug  版权归原作者所有。—— The End ——推荐好文  点击蓝色字体即可跳转☞ 非常重要!单片机模块化设计让我事半功倍☞ 推荐一个直接用于项目开发的PID库!很好用,很稳定☞ 80家MCU国产和国外厂家汇总!☞ 推荐一款我私藏已久的串口示波神器欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!点击名片关注我分享   点赞   在看 ❤️ 以“三连”行动支持优质内容!

    小麦大叔 嵌入式

  • RTOS和Android操作系统,如何选择?

    有一朋友研究生做了两年Android应用,实习时转了嵌入式应用软件开发,拿着一块移植了RTOS的设备学习。入门了才发现,两者都是开源、稳定、经历众多设备厂商打磨的优秀操作系统,根据以下几点对比学习。两个操作系统经常一起应用Android手机的双MCU1. AP(Application Processor)是ARM架构搭载Android,运行系统和应用,由于高功耗待机时和WIFI、LCD均休眠。2. BP(BaseBand Processor)架构搭载RTOS,运行通信协议、射频、GPIO,低功耗。TP_Link小白路由的双系统1. 搭载Android4.2,运行APP加强应用功能。2. 搭载RTOS,完成安全、严密、专业的路由功能。高通骁龙810/7系列处理器1. 一个ARM运行基于Linux的Android OS。2. 一个ARM运行(RTOS)。适用于 TI 处理器的可扩展 Linux 和 TI RTOS 解决方案查资料过程中,发现TI也提供了一套基于自己家处理器的可扩展Linux、Android、RTOS解决方案,同样的处理器,可选的SDK和操作系统,也是棒。当然Android做为操作系统更为丰满,更上层,而实时操作系统比如ucos,比如最近在学的rtos,都仅提供了任务调度、同步、互斥、时钟等功能,所以必须内核组,BSP

    嵌入式ARM 操作系统 Android RTOS

  • 可怕!日企调查称市场上超30%半导体为假冒品

    据日本共同社报道,在全球半导体短缺的背景下,产品上标注的厂家名被改写或是从废家电中取出的“假冒”半导体大量流通。有企业购买了以往供货渠道以外的半导体,冲电气工业的子公司受其委托实施调查,结果发现3成以上为“假冒”。如果劣质半导体的流通扩大,不仅会导致产品性能下降,还可能对安全性造成负面影响。半导体厂家因新冠疫情扩大而一度减产,但近期面向汽车与数字设备的需求快速回升。再加上日本巨头瑞萨电子的生产设备遭遇火灾,半导体持续缺货。在采购半导体并组装产品的厂家中,从专业贸易公司等购买已停产的老旧半导体的动向扩展开来。要求确认这样获得的半导体质量的呼声高涨,冲电气工业的子公司“冲Engineering”(东京)6月启动半导体真伪鉴定服务,已接到100家以上企业的委托。据该公司透露,假冒产品中最多的是把产品上标注的厂家名改写成大企业名称等的仿制品。此外还存在从10年前生产的废家电中取出后当做“新品”销售的半导体、以及原本应被废弃的不合格产品。这些半导体被用于美容仪器、血压计、行车记录仪、电子烟等并上架销售。据悉,有些因初始故障无法启动,还有起火冒烟的产品。冲Engineering表示,“设备组装厂家很难辨别半导体是否为正品”。有意见指出,假冒半导体是从中国、韩国、东南亚出口的。据悉,很多是在网上交易,由接到组装厂家订单的专业贸易公司等购买。冲Engineering事业部长高森圭指出:“预计半导体短缺目前无法解决,仿制品等增多的可能性较大。”华尔街日报:芯片短缺催生了大量假冒零件据华尔街日报之前报道,全球芯片短缺为不良行为者创造了一座金矿。他们指出,需要芯片的企业正在承担他们以前不会考虑的供应链风险——那就是发现他们购买的东西不起作用。可疑的卖家正在搜索引擎上购买广告以吸引绝望的买家。这样的结果是导致可以检测假冒零件的 X 光机销量激增。这是一场质量控制危机,由世界不惜一切代价争夺难以找到的半导体而导致。如果没有这些必不可少的部件,那么随着全球经济的复苏,家用电器和工作卡车等各种产品的制造商就会陷入停滞状态。今年春天,一家总部位于纽约的 3D 打印机制造商BotFactory Inc.因为数周以来都无法从其任何首选供应商处采购微芯片。最终,他们转向了全球速卖通(由中国阿里巴巴集团控股有限公司运营的在线销售平台)上的一个不知名卖家 。麻烦的早期迹象:订单到达时用保鲜膜包装,而不是通常的防静电保护袋。今年在芯片短缺期间需求增加的 X 光机可以揭示芯片内部是否为空(如右数第二个)或电路不一致。照片: 创意电子“当然,其中一些没有用,”BotFactory 的首席软件工程师 Andrew Ippoliti 说。Ippoliti 先生怀疑有缺陷的零件是假货。他说,在购买之前,BotFactory 已经确定微芯片是合法的,但在产品无法正常工作后,卖家沉默了。BotFactory 向全球速卖通提出争议,后者全额退款。该公司最终通过直接从制造商处订购,采购了大约 200 个微芯片。行业监管机构副总裁克里斯塔尔·斯奈德 (Kristal Snider) 表示,在电子产品供应链中保存不当行为记录的 ERAI Inc. 几乎每天都会收到新的投诉。她补充说,来自 40 多个国家的买家已经提交了关于电汇欺诈的报告。违法者通常是机会主义的罪犯。他们通过搜索引擎上的有针对性的广告引诱受害者,将他们引导到炫耀的网页,然后在收到电汇后消失。ERAI 已标记了数十个高风险网站,其中许多网站位于香港。芯片短缺已经削弱了全球的汽车制造商,福特汽车公司上个月表示将在 7 月份削减六家以上美国工厂的产量。照片: 丽贝卡库克/路透社一家被标记的公司是 Blueschip Co.,它自称是世界上“最大和增长最快的”电子元件分销商之一。ERAI 表示,该公司的网站与已知不良行为者的网站有相似之处——包括一些使用相同措辞的保证。但Blueschip 在对《华尔街日报》的书面回应中表示,他们不会费心回应 ERAI 的说法。“无辜的人知道自己是无辜的,”这家总部位于香港的公司表示。ERAI 的斯奈德女士在一封电子邮件中说:“现在在提供难以找到、已分配和过时部件的网站数量令人震惊。” “在这个行业调查和报告欺诈行为 27 年之后,我需要付出很多努力。”行业参与者和专家表示,芯片欺诈的案例历来被低估,因为受害者不愿意公开承认他们被骗了。追究刑事指控很困难,尤其是跨境。马里兰大学研究假冒电子产品的研究员迪甘塔·达斯 (Diganta Das) 表示,对于造假者和黑幕经销商来说,被抓到的可能性不足以改变他们的行为。信念太少了,达斯先生说,如果他尝试,他可以把它们全部背下来。在这波短缺之前就存在假芯片。仿制品的范围从复杂的复制品到翻新的旧零件看起来很新。芯片专家表示,尽管假冒技术不断发展,但许多买家的测试能力有所提高,从而降低了错误零件最终出现在成品中的几率。总部位于宾夕法尼亚州霍舍姆的 Aegis Software Corp. 的高级主管迈克尔福特估计,大多数公司每年都会遇到大约 3 次假冒零件,他致力于制定电子零件质量和跟踪的行业标准。他补充说,几乎在所有情况下,假冒零件都没有报告。“整个供应链都不想看起来好像受到了损害,”福特先生说。鉴于今年缺货的混乱局面,一些买家正在收紧反欺诈措施。电子独立分销商协会表示,其 250 页关于识别可疑部件的手册的订单数量是去年的两倍。该集团执行董事 Faiza Khan 表示,一些买家是获得有缺陷或可疑组件的公司。稍微刮一下就可以发现假冒芯片的原始标记。相片: 电子协会独立经销商英国经销商 Princeps Electronics Ltd.的运营总监伊恩·沃克 (Ian Walker) 表示, 今年对最昂贵和最复杂的电气测试的要求几乎翻了两番。他说,这需要专门的工程师,在某些情况下,这意味着客户要支付数万美元才能确认 3 美元芯片的真实性。“以一种高效且廉价的方式完全消除假冒零件的风险是一件非常困难的事情,”沃克先生说。Creative Electron Inc. 的欺诈检测 X 光机售价高达 90,000 美元,可以检测芯片内部是否为空或电路不一致,其销售额在过去一年中翻了一番,加利福尼亚州圣马科斯公司的首席执行长比尔卡多索说。该公司运营副总裁 Dane Reynolds 表示,电子元件分销商 Astute Electronics Inc. 计划很快购买其第五台 X 光机进行内部检查。在年初,他们已经购买了两个。Reynolds 先生说,随着客户需求激增,该公司正在分析更多组件。“因此,我们发现了更多的坏部分。”END来源:半导体行业观察版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM 半导体

  • 看看你的MCU能跑多少分?极简教程教会你测试MCU性能!

    提起MCU性能测试,最著名的就是CoreMark和Dhrystone。CoreMark以每秒迭代次数作为性能评价,而Dhrystone的DMIPS与Dhrystone标准相关。本文讨论CoreMark,先来看看MCU厂家如何宣传自家产品性能。NXP i.MX RT1170,CoreMark:6468 ;ST STM32H747/757 CoreMark:3224▍揭开神秘面纱:CoreMark是什么?为什么它可以作为MCU的性能指标?这个数是怎么计算出来的?CoreMark是衡量嵌入式系统中微控制器性能的基准。通过包含列表处理(查找和排序)、矩阵处理(常见的矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC(循环冗余校验)等算法的测试给出性能评价。需要下载的软件包是免费开源的, 可以在官方网站找到:EEMBC’s CoreMark®,网页截图如下。部分朋友无法直接下载的,文末进入“阅读原文”也提供下载好的软件包。▍作业不难:怎么将CoreMark移植到自己的MCU上?运行CoreMark需要哪些外设支持?51单片机也可以跑CoreMark的,所以硬件上不用担心。运行CoreMark,需要定时器提供计时功能,还需要一种向外部打印消息的手段。一个比较简单的方法是,调用stdio.h中定义的printf()函数,将其重定向到串口。现以使用STM32CubeIDE将CoreMark移植到STM32G071为例进行说明。● Step1:复制必要文件到目标工程。现已准备好目标MCU的软件工程,其文件结构如下图右侧所示。从CoreMark官网获得软件包,软件包解压后文件结构如下图左侧所示。在右侧软件工程中新建文件夹CoreMark,将左侧绿色框中,core_list_join.c、core_main.c、core_matrix.c、core_state.c、core_util.c、coremark.h等文件放到CoreMark文件夹里。打开左侧simple文件夹,将core_portme.c复制到Src文件夹中,将core_portme.h复制到Inc文件夹中。(彩色高亮标记与图中颜色标记对应,共5个步骤)● Step2:由于core_main.c文件已定义了main()函数,该main()函数执行时调用core_portme.c中的portable_init()函数作为MCU初始化接口,因此需要将MCU工程中原main.c文件MCU初始化代码移动到到portable_init()函数里并删除原有main.c文件。以STM32CubeIDE工程为例,需要移动SystemClock_Config和一堆MX_开头的初始化函数(注意相关结构体、函数原型与函数实现要一起移动)。● Step3:CoreMark的分数最终表示为Iterations/Sec,也就是每秒迭代数,而Sec和系统Ticks相关。用过RTOS的朋友应该对这个概念很熟悉,考虑文字不太好解释,直接看core_portme.c里这个宏定义。#define EE_TICKS_PER_SEC 1000● 这里我定义每秒1000个Tick,每个Tick时长1ms,对应定时器每1ms触发一次中断。使用一个计数变量,定时器进入中断一次,该变量值 1;对该变量值/1000即可求得定时器运行时长,也就是上文的Sec。所以EE_TICKS_PER_SEC并非一定要设置为1000,和定时器中断频率对应即可。与定时相关的函数有以下三个。void start_time(void);//启动计时器;void stop_time(void);//停止计时器;CORE_TICKS get_time(void);//获取计时器的计数值。● 在start_time()里实现定时器启动功能,在stop_time()里实现定时器停止功能,在get_time()中获取中断计数值。数据类型“CORE_TICKS ”实际上就是“unsigned long”。为方便操作,推荐将计数变量设置为全局变量,这样可以通过extern关键字直接访问。此处以TIM1为例,代码如下://计数变量unsigned long time_ms_ticks=0;//定时器启动void start_time(void){ (

    嵌入式ARM MCU

  • 模电和数电打了一架,结局万万没想到...

    # 推荐语 #模电、数电之间积怨已深,因为争风吃醋,两人吵了起来。它们在吵什么呢?请往下看...村里有个小伙叫“模电”,浓眉大眼,身高力壮,村里的大事小情都要找他。引得众多小mm纷纷拜倒在他脚下,那可真是风光无限。不料,好景不长,某天不知从哪里来了个叫“数电”的帅哥,虽然没有八块腹肌,但是能掐会算,口齿伶俐,还能变个魔术。从此后,村里但凡有大事,都会去找数电,只是在需要干力气活的时候才会想起“模电”。众mm也纷纷离开了“模电”,竞相向“数电”献殷勤。“模电”心生嫉妒,但知道自己头脑差,也只能默默咽下这口气。可是,有一天,“模电”发现自己最后的粉丝“电源”mm也跑去给“数电”暗送秋波,积攒了多时的怨气终于爆发了。模电把数电堵在村口,吵起来了。数电:我比你更能抗干扰。模电:我比你的精度高。数电:我可以实现各种算法。模电:我可以实现无线通讯。数电:没有我,电子行业还得倒退几十年呢。模电:没有我,你还只能生存在各种数字公式当中。……村里的长老ASIC终于看不下去,喊了一句:“吵什么吵,都跑到我肚子里去。”咕噜的一声,模电和数电都混合在ASIC体内,两人合体了。ASIC深思片刻说:你们俩,其实长得很像啊。模电和数电异口同声道:我才不像它呢。ASIC捋一捋胡须,说:好吧,让老纳一一道来。01晶体管 VS 二进制数模电里面的二极管、三极管(开关状态)、晶闸管,分别对应数电的二进制数0和1。02放大器 VS 乘法/移位器模电里的放大器就是把信号放大N倍,对应数电里面的乘法,当然如果乘的系数是2的多少次方,就可以用左移位来实现。而衰减器就对应着除法/右移了。03负阻振荡器 VS 环形振荡器模电里面经常需要输出一路正弦信号(如本地振荡),这就可以用电容/电感三端式振荡来实现,但是由于晶体输出的频率稳定性更高、且具有温度补偿的功能,实际工程用晶体振荡器居多。而在超高频的应用领域中,常常使用负阻振荡器(输出的频率更高)。那么,数电则需要输出一路方波(如时钟信号),这路方波可以通过正弦信号整形来获得,而在超高速的应用领域中,常常使用环形振荡器。04模拟上/下变频 VS 数字上/下变频变频,就是改变频率的意思。在无线电领域中,经常会用到一种叫混频器的东西,它就是利用三角函数的积化和差的原理来实现上/下变频(和就是上变频,处理后的信号频率提高了;差就是下变频,处理后的信号频率下降了),而模电当中的混频器常常是由模拟乘法器来实现的,对应着数电的,就是CIC滤波器。其中,CIC滤波器的插值(在原有的数字信号当中插入一些值,增加了信号的变化频率)可以实现上变频,而抽取(在原有的数字信号当中取走一些值,减少了信号的变化频率)可以实现下变频。05模拟滤波器 VS 数字滤波器模拟滤波器分为无源和有源两种,其中无源是由RLC组成的,而有源则是在无源的基础上增加了运放,可以调整增益。数字滤波器分为FIR和IIR两种,一般情况下,FIR是线性相位的,无反馈的(零极点相消的话,是可以有反馈的);IIR是非线性相位的,有反馈的。以滤波器的频率响应来分类,是可以分为高通、低通、带通、带阻、全通五种。此外,按照设计方法来分类,可以分成巴特沃期、切比雪夫、贝塞尔、椭圆等等,就算是这种分类方法,模拟滤波器仍然由RLC等组成,而数字滤波器仍然由乘加器、寄存器等组成。06模拟调制 VS 数字调制所谓调制就是,有两路信号A和B,用A去控制B的幅度、频率、相位。模拟电路的调制方式有AM、FM、PM三种,分别对应着数字电路当中的ASK、FSK、PSK。但是数字电路可以实现更为复杂多样的调制方式,比如:QAM、MSK、OFDM等。07模拟指数\对数运算 VS 数字指数\对数运算在模拟电路中,利用器件的特性(如二极管的电流方程)再加上运放等,可以实现指数、对数运算(以前的模拟计算机就是这样搞的)。而数电则是通过数值计算当中的逼近法来计算指数、对数(如泰勒级数、对数表等)。08模拟微积分运算 VS 数字微积分运算模拟电路可以利用电容的电压电流特性来计算微分和积分(以前的模拟计算机就是这样搞的)。而在数电当中,则是通过寄存器的反馈来实现积分(不断地把输出反馈到输入端,进行累加)。然后,模拟的微分对应的是数字的差分,差分就是前一时刻的值减去后一时刻(得到的是增量),也是用寄存器去保存不同时刻的值,再做减法运算。此外,如果要像高数那样计算微积分,那得依靠数值计算的各种逼近的方法了。听了ASIC的一席话后,模电跟数电抱头痛哭,“原来你就是我失散多年的孪生兄弟啊!”END版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM 模电

  • 硬核魔改! 宜家灯泡当主机, 能玩

    来源 | 量子位(公众号ID: QbitAI)这年头,“万物皆可《毁灭战士》”!(Doom)极客们把这款猛男必玩的游戏移植到五花八门的设备上,iPod Nano、ATM机、示波器、验孕棒(壳)……现在连灯泡也可以了?一位外国全栈野生钢铁侠,直接找来了这只宜家出品的20美元灯泡:然后Up主买了块小屏幕,经过一番改造,便成了这样:看完demo,网友直呼宜家电灯泡已经远超自己当年的PC。更夸张的是,这台机器的微处理器只有108kB内存。要知道,毁灭战士的最低系统要求也要8MB内存。甚至有网友还表示新“摩尔定律”诞生:大约每两年就可以将Doom运行的大小减半。游戏移植“最跨界”之前“验孕棒玩《毁灭战士》”大火,国外互联网上疯传。但是,「全栈野生钢铁侠」Nicola Wrachien看了技术方案以后表示:这个不够硬核。所谓“验孕棒”玩《毁灭战士》,其实只用了验孕棒的壳,原有的处理器和屏都被换掉了。钢铁侠Nicola表示,要做就做全套。而且定下了《毁灭战士》跨界“铁则”:1、必须基于现成的设备,且不是用来玩Doom或一般游戏的。2、所选择的设备有一个计算能力和/或内存相当有限的微控制器,否则没有挑战性。3、不能添加额外的微控制器。可以超频,但不能额外加冷却装置。但如今电子设备大部分的计算能力都相当高,运行Doom不在话下…老哥环顾四周,发现宜家在售的TRÅDFRI Zigbee灯泡不错。这款灯泡可以实现自由控制明暗、颜色,其中的微控制器,刚好是Nicola Wrachien工作的美国半导体商芯科科技的产品。Cortex M33处理器,96 12kB的RAM(总共108kB),1MB 的闪存,基频80MHz 。计算能力肯定够了,但毁灭战士的最低系统要求也要8MB内存。所以,优化RAM成为了最关键的工作。为了节省RAM,必须牺牲CPU?Nicola的最低目标,是能在108kB内存上运行《毁灭战士》第一张地图。随着优化推进,他发现可以将全部全部地图运行时的RAM使用量控制在108kb以内,而且包括动态和静态、堆栈和帧缓冲区。为此,他进行了15项大大小小的优化,这些工作,构成了这次全栈移植《毁灭战士》到灯泡控制的核心。首先是对Doom代码本身优化。Doom广泛使用32位,但其实16位或8位指令就足够了。其次是枚举的使用非常频繁。移植后的Doom没有使用枚举数据类型,而是将数据大小修剪为能存储的最大值。此外,还减少了画面材质的路径、绘图数、和视觉数。因为最后呈现的显示器像素并不高,所以不会对视觉效果产生负面影响。还有一点最重要的优化:既然如今已经不采用32位指令,而且内存也小于128k,那么也没有必要再用32位指针了。游戏中几乎所有的指针都指向4字节对齐的结构,这意味着 16 位指针就足够了。这个策略实际上是为RAM牺牲CPU能力,但处理器0MHz的基频完全没有压力。此外,其余的优化还包括:游戏中的对象结构(mobj_t)优化到到92字节,在更复杂的关卡地图上可以省出很多。静态对象,如关卡bonus和装饰品,专门为它们创建了一个静态mobj类型,将内存需求削减到一半(44字节)。在某些关卡中,有超过200个这样的对象。节省了超过30kB的内存。对象(mobj_t和static_mobj_t)使用了内存池,动态分配的开销减少到1字节/对象,而池内只有16个条目。但为了实现这一点,还必须尽可能使用8位或16位数组索引,而不是指针。游戏中的纹理,比如墙面、地面在游戏过程中会发生变化,所以它们需要长时间保存在RAM中。但实际游戏中的纹理数量是非常有限的。因此,单独创建了数组来存储可改变的纹理信息,而其他的静态纹理则从外部闪存中读取。选用的160×128像素的显示器本来需要一个20kB的缓冲区,但Nicola选择首先计算并渲染160×96像素的3D场景,将结果发送到显示器。然后再绘制游戏中的状态栏,发送剩余的160×32像素。这样就节省了5个宝贵的KB,却不影响性能。最后,优化中彻底删除了占用16Kb的复合纹理渲染模块。内存优化达标,实际上是对CPU进行了降频,此外还禁用了数据缓存,但这也造成出了一个非常严重的问题:读写速度极其依赖于数据接口,而不是实际的CPU能力。解决办法是,使用SPI闪存读取命令来检索数据,而不是使用内存映射模式。这款处理器的SPI时钟速率被限制在20MHz,外围总线速度被限制在50MHz,但实测后发现这个数字是非常保守的,至少在室温下超频到80MHz完全没压力。对游戏本身搞了“削足适履”式的优化,还对CPU进行了极限超频,《毁灭战士》硬核跨界的基础条件终于具备了,接下来就是硬件DIY部分。如何攒机?怎么攒出这台“游戏机”呢?先规划一下大体结构:连原理图都给你画好了:主角是一只宜家Tradfri GU10 RGB灯泡,确切来说是它的MGM210L模块。(高端玩家直接用EFR32MG21射频微控制器,也不是不行。)第一步拆灯,同时也要拆分高压AC-DC电源和RF模块 DC-DC转换器。由于在输入电压过低时,R25会使DC-DC转换器关闭,因此在这里要把R25移除。接下来,只需将DC-DC和RF板焊接到原型板上,当然还需要留出输入、输出、接地电线。然后就来到了布满线路的第二块板。看着头大?不用担心,开发者将会开源这一步的PCB设计图。这块板上的组件包括SMD元件、逻辑芯片74HC165和8MB闪存IC。如果想要更高质量的音频,还可以连接一个低通滤波器。由于空间限制,开发者在这里只留了一个2针接头。键盘部分就清爽多了,一目了然:最后,把几块板组装起来,再接上价格友好的TFT 160×128 SPI显示器,就可以进行编程调试了。需要注意的是,改装后的设备只支持低于30V的直流电压供电,不能在交流电源下运行。该设备可以用任何兼容JLink(JTAG调试仿真器)的SWD编程器进行编程。可以使用Silicon Labs的Simplicity Studio V5,对GitHub中给出的源代码进行编译。(如果提示出错,忽略即可)然后将设备通电,设置为YMODEM上传模式,这一步完成之后就能进入游戏了。调试完毕之后,把电路板暴力塞回灯座里……大功告成!开发者还表示,实际颜色其实要比图片中好得多。目前,全部优化条目和代码已经开源,直接下载就能使用。参考链接:[1]https://www.youtube.com/watch?v=7ybybf4tJWw[2]https://next-hack.com/index.php/2021/06/12/lets-port-doom-to-an-ikea-tradfri-lamp/[3]https://github.com/next-hack/MG21DOOM[4]https://hackaday.io/project/180182-hacking-an-ikea-trdfri-lamp-to-run-doom[5]https://news.ycombinator.com/item?id=27498789[6]https://www.reddit.com/r/programming/comments/nze7lk/doom_running_on_an_ikea_lamp/[7]https://gamesystemrequirements.com/game/doomEND来源:量子位版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM 宜家 灯泡

  • PCB回流是什么? 高速信号回流路径分析

    01回流的基本概念数字电路的原理图中,数字信号的传播是从一个逻辑门向另一个逻辑门,信号通过导线从输出端送到接收端,看起来似乎是单向流动的,许多数字工程师因此认为回路通路是不相关的。毕竟,驱动器和接收器都指定为电压模式器件,为什么还要考虑电流呢?实际上,基本电路理论告诉我们,信号是由电流传播的,明确的说,是电子的运动。电子流的特性之一就是电子从不在任何地方停留,无论电流流到哪里,必然要回来。因此电流总是在环路中流动,电路中任意的信号都以一个闭合回路的形式存在。对于高频信号传输,实际上是对传输线与直流层之间包夹的介质电容充电的过程。02回流的影响数字电路通常借助于地和电源平面来完成回流。高频信号和低频信号的回流通路是不相同的,低频信号回流选择阻抗最低路径,高频信号回流选择感抗最低的路径。当电流从信号的驱动器出发,流经信号线,注入信号的接收端,总有一个与之方向相反的返回电流:从负载的地引脚出发,经过敷铜平面,流向信号源,与流经信号线上的电流构成闭合回路。这种流经敷铜平面的电流所引起的噪声频率与信号频率相当,信号频率越高,噪声频率越高。逻辑门不是对绝对的输入信号响应,而是对输入信号和参考引脚间的差异进行响应。单点终结的电路对引入信号和其逻辑地参考平面的差异做出反应,因此地参考平面上的扰动和信号路径上的干扰是同样重要的。逻辑门对输入引脚和指定的参考引脚进行响应,我们也不清楚到底哪个是所指定的参考引脚(对于TTL,通常是负电源;对于ECL通常是正电源,但是并不是全都如此),就这个性质而言,差分信号的抗干扰能力就能对地弹噪声和电源平面滑动具有良好的效果。当PCB板上的众多数字信号同步进行切换时(如CPU的数据总线、地址总线等),这就引起瞬态负载电流从电源流入电路或由电路流入地线,由于电源线和地线上存在阻抗,会产生同步切换噪声(SSN),在地线上还会出现地平面反弹噪声(简称地弹)。而当印制板上的电源线和接地线的环绕区域越大时,它们的辐射能量也就越大。因此,我们对数字芯片的切换状态进行分析,采取措施控制回流方式,达到减小环绕区域,辐射程度最小的目的。举例说明:IC1为信号输出端,IC2为信号输入端(为简化PCB模型,假定接收端内含下接电阻),第三层为地层。IC1和IC2的地均来自于第三层地层面。TOP层右上角为一块电源平面,接到电源正极。C1和C2分别为IC1、IC2的退耦电容。图上所示的芯片的电源和地脚均为发、收信号端的供电电源和地。在低频时,如果S1端输出高电平,整个电流回路是电源经导线接到VCC电源平面,然后经橙色路径进入IC1,然后从S1端出来,经第二层的导线经R1端进入IC2,然后进入GND层,经红色路径回到电源负极。在高频时,PCB所呈现的分布特性会对信号产生很大影响。我们常说的地回流就是高频信号中经常要遇到的一个问题。当S1到R1的信号线中有增大的电流时,外部的磁场变化很快,会使附近的导体感应出一个反向的电流,如果第三层的地平面是完整的地平面的话,那么会在地平面上产生一个蓝色虚线标示的电流,如果TOP层有一个完整的电源平面的话,也会在TOP层有一个沿蓝色虚线的回流。此时信号回路有最小的电流回路,向外辐射的能量最小,耦合外部信号的能力也最小。高频时的趋肤效应也是向外辐射能量最小,原理是一样的。由于高频信号电平和电流变化都很快,但是变化周期短,需要的能量并不是很大,所以芯片是和离芯片最近的退耦电容取电的。当C1足够大,而且反应又足够快(有很低的ESR值),位于顶层的橙色路径和位于GND层的红色路径可以看成是不存在的(存在一个和整板供电对应的电流,但不是与图示信号对应的电流)。因此,按图中构造的环境,电流的整个通路是:由C1的正极→IC1的VCC→S1→L2信号线→R1→IC2的 GND→过孔→GND层的黄色路径→过孔→电容负极。可以看到,电流的垂直方向有一个棕色的等效电流,中间会感应出磁场,同时,这个环面也能很容易的耦合到外来的干扰。如果和图中信号为一条时钟信号,并行有一组8bit的数据线,由同一芯片的同一电源供电,电流回流途径是相同的。如果数据线电平同时同向翻转的话,会使时钟上感应一个很大的反向电流,如果时钟线没有良好的匹配的话,这个串扰足以对时钟信号产生致命影响。这种串扰的强度不是和干扰源的高低电平的绝对值成正比,而是和干扰源的电流变化速率成正比,对于一个纯阻性的负载来说,串扰电流正比于:dI/dt=dV/(T¬10%-90%*R)式中的dI/dt (电流变化速率)、dV(干扰源的摆幅)和R(干扰源负载)都是指干扰源的参数。如果是容性负载的话,dI/dt是与T¬10%-90%的平方成反比的。从式中可以看出,低频的信号未必比高速信号的串扰小。也就是我们说的:1KHz的信号未必是低速信号,要综合考虑沿的情况。对于沿很陡的信号,是包含很多谐波成分的,在各倍频点都有很大的振幅。因此,在选器件的时候也要注意一下,不要一味选开关速度快的芯片,不仅成本高,还会增加串扰以及EMC问题。任何相邻的电源层或其它的平面,只要在信号两端有合适的电容提供一个到GND的低电抗通路,那么这个平面就可以作为这个信号的回流平面。在平常的应用中,收发对应的芯片IO电源往往是一致的,而且各自的电源与地之间一般都有0.01-0.1uF的退耦电容,而这些电容也恰恰在信号的两端,所以该电源平面的回流效果是仅次于地平面的。而借用其他的电源平面做回流的话,往往不会在信号两端有到地的低电抗通路。这样,在相邻平面感应出的电流就会寻找最近的电容回到地。如果这个“最近的电容”离始端或终端很远的话,这个回流也要经过“长途跋涉”才能形成一个完整的回流通路,而这个通路也是相邻信号的回流通路,这个相同的回流通路和共地干扰的效果是一样的,等效为信号之间的串扰。对于一些无法避免的跨电源分割的情况,可以在跨分割的地方跨接电容或RC串联构成的高通滤波器(如10欧电阻串680p电容,具体的值要依自己的信号类型而定,即要提供高频回流通路,又要隔离相互平面间的低频串扰)。这样可能会涉及到在电源平面之间加电容的问题,似乎有点滑稽,但肯定是有效的。如果一些规范上不允许的话,可以在分割处两平面分别引电容到地。对于借用其它平面做回流的情况,最好能在信号两端适当增加几个小电容到地,提供一个回流通路。但这种做法往往难以实现。因为终端附近的表层空间大多都给匹配电阻和芯片的退耦电容占据了。回流噪声是参考平面上的噪声主要的来源之一。因此有必要研究一下返回电流的路径和流经范围。03回流路径理论知识下图中是印制板中的一条线路,在导线上有电流通过,通常,我们只看到了敷在表面的用于传输信号的导线,从驱动端到接收端,实际上,电流总是在环路上才能流动,传输线是我们可以看到的,而电流回流的途径通常是不可见的,他们通常借助于地平面和电源平面流回来,由于没有物理线路,回路途径变得难于估计,要对他们进行控制有一定的难度。如图3.1所示, PCB板上每条导线和其回路构成一个电流环路,根据电磁辐射原理,当突变的电流流过电路中的导线环路时,将在空间产生电磁场,并对其他导线造成影响,这就是我们通常所说的辐射,为了减少辐射的影响,首先应该了解辐射的基本原理和与辐射强度有关的参数。图3.1 印制板上的差模辐射这些环路相当于正在工作的小天线,向空间辐射磁场。我们用小环天线产生的辐射来模拟它,设电流为I,面积为S的小环,在自由空间为r的远场测得的电场强度为:式3.1适用于放置在自由空间且表面无反射的小环,实际上我们的产品是在地面进行而非自由空间,附近地面的反射会使测得的辐射增加6dB,考虑到这一点,式3.1必须乘2,如果对地面反射加以修正并假设为最大辐射方向,则式3.1为:由式3.2知,辐射与环路电流和环面积成正比,与电流频率的平方成正比。印刷电路板中返回电流的路径是与电流的频率密切相关的。根据电路基本知识,直流或低频电流总是流向阻抗最小的方向;而高频的电流在电阻一定的情况下,总是流向感抗最小的方向。如果不考虑过孔在敷铜平面上形成的孔、沟的影响,阻抗最小的路径,也就是低频电流的路径,是由地敷铜平面上的弧形线组成,如图3.2。每根弧线上的电流的密度与此弧线上的电阻率有关。图3.2 PCB敷铜平面上高频电流路径对传输线来说,感抗最小的返回路径,也就是高频电流返回路径,就在信号布线的正下方的敷铜平面上,如图3.3。这样的返回路径使得整个回路包围的空间面积最小,也就使得此信号形成的环形天线向空间辐射的磁场强度(或接收空间辐射的能力)最小。对于比较长、直的布线,可以看作理想的传输线。在其上传播的信号返回电流流经范围是以信号布线为中心轴的带状区域,距离信号布线中心轴距离越远,电流密度越小,如图3.3。这一关系近似满足式3.3:式3.3图3.3 传输线返回电流密度分布图根据式3.3,表3.1列出了流经以传输线中心为中心,宽度为 的带状区域内的返回电流占所有返回电流的百分比。假设英寸,则经过距离传输线0.035英寸以外的区域返回的电流只占所有返回电流的13%,具体分到传输线的一侧只有6.5%,而且密度很小。因此可以忽略不计。小结:当信号布线下方具有连续、致密、完整的敷铜平面时,信号返回电流对敷铜平面的噪声干扰是局部的。因此,只要遵循布局、布线局部化的原则,即人为地拉开数字信号线、数字器件与模拟信号线、模拟器件之间的距离到一定程度,可以大幅度降低数字信号返回电流对模拟电路的干扰。高频瞬态返回电流,经由与信号走线紧邻的平面(地平面或电源平面)回流到驱动端。驱动器信号走线的终端负载,跨接在信号走线和与信号走线紧邻的平面(地平面或电源平面)之间。当印制板上的电源线和接地线的环绕区域越大时,它们的辐射能量也就越大,因此,我们通过控制回流路径,可以使得环绕区域最小,从而控制辐射程度。04回流问题的解决办法在PCB板上引起回流问题通常有三个方面:芯片互连,铜面切割,过孔跳跃。下面具体对这些因素进行分析。4.1 芯片互连引起的回流问题当数字电路工作时,将发生高、低电压之间的转换,这就引起瞬态负载电流从电源流入电路或由电路流入地线。对于数字器件而言,它引脚输入电阻可以认为无穷大,相当于开路(即下图中的i=0),事实上,回路电流是通过芯片与电源和地平面产生的分布电容和分布电感来返回的。以下以集电极输出电路作为输出信号的内部电路为例进行分析。4.1.1 驱动端从低电平变化到高电平当输出信号由低电平跳变为高电平时,相当于输出引脚对传输线输出一个电流,由于输入电阻无穷大,我们认为对于芯片而言,没有电流从输入管腿上流入即 ,那么,这个电流必须返回到输出芯片的电源管腿上。①信号走线与电源平面紧邻驱动端对信号走线和电源平面及终端负载构成的传输线进行充电,电流从驱动器的电源管脚进入器件,并从驱动器输出端流向负载端;高频瞬态返回电流在信号走线下方的电源平面上回流到驱动器的输出端,返回电流直接通过电源平面,从驱动器的电源管脚进入驱动器,构成电流环路。②信号走线与地平面紧邻驱动器对信号走线和电源平面及终端负载构成的传输线进行充电,电流从驱动器的电源管脚进入器件,并从驱动器输出端流向负载端;高频瞬态返回电流在信号走线下方的地平面上回流到驱动器的输出端,返回电流必须借助在驱动器输出端的电源平面和地平面的耦合电容,从地平面跨越到电源平面,再从驱动器的电源管脚进入驱动器,构成电流环路。4.1.2 驱动端从高电平变化到低电平相当于输出引脚吸收传输线上的电流。① 信号走线与电源平面紧邻负载对信号走线和电源平面及驱动器输出端构成的传输线进行放电,电流从驱动器的输出管脚进入器件,从驱动器的地管脚流出,进入地平面,并通过在驱动器地管脚附近的电源平面和地平面耦合电容,跨越到电源平面,返回负载端;高频瞬态返回电流在信号走线下方的电源平面上回流到负载端,构成电流环路。② 信号走线与地平面紧邻负载对信号走线和电源平面及驱动器输出端构成的传输线进行放电,电流从驱动器的输出管脚进入器件,从驱动器的地管脚流出,进入地平面,返回负载端;高频瞬态返回电流在信号走线下方的地平面上回流到负载端,构成电流环路。在驱动器的输出管脚、地管脚附近,应当布放电源平面和地平面的耦合电容,为返回电流提供返回通路,否则,返回电流将寻找最近的电源平面和地平面的耦合途径进行回流(使得回流途径难以预知和控制,从而对其他走线造成串扰)。4.2 覆铜切割造成的回流问题解决办法地平面和电源平面可以减少电阻引起的电压损失。如图所示,回路电流经过地流回,由于电阻R1的存在,势必在1和2点产生电压降,电阻越大,压降越大,引起对地电平的不一致,如果有地层,可视为线宽无限大,电阻很小的信号线。回路电流总是从最靠近信号的地层上流过,当地层不止一层时,如果信号处于两层地平面之间而两者又完全相同时,回路电流将等分在两个平面上通过。4.2.1 在布局、布线局部化的条件下,数字地平面与模拟地平面公用同一块敷铜平面,即对数字地与模拟地不加区分,数字电路本身的噪声并不会给模拟电路系统带来额外的噪声。4.2.2 在数字、模拟混合电路系统中,数字地与模拟地的共地点选择在板外,即两敷铜平面完全独立,使得数字电路与模拟电路之间的信号线不具备传输线的特征,给系统带来严重的信号完整性问题。数字电路与模拟电路采用同一个电源系统,地平面不加分割,在数字、模拟混合电路系统的设计中,在布局模块化、布线局部化的基础上,数字电路模块和模拟电路模块公用一个完整的、不加分割的电压参考平面,不但不会增大数字电路对模拟电路的干扰,由于消除了信号线“跨沟”问题,能够大幅度降低信号间的串扰和系统的地弹噪声,提高了前端模拟电路的精度。4.3 过孔造成的回流问题解决办法在印制板信号布线时,如果是多层板,很多信号必须通过换层来完成连接任务,这时就要用到大量的过孔,过孔对回流的影响有两种:一是过孔形成沟槽阻断回流,二是过孔造成的回流跳层流动。4.3.1 过孔形成的沟槽在印制板信号布线时,如果是多层板,很多信号必须通过换层来完成连接任务,这时就要用到大量的过孔,如果过孔在电源或地平面排列比较密集,有时候会出现许多过孔连成一片的情况,形成所谓的沟,如图所示。首先,我们应该对这种情况进行分析,看看是否回流需要经过沟槽,如果信号的回流无需经过沟槽,就不会对回流造成阻碍影响。如果回路电路要绕过这条沟返回,形成的天线效应将急剧增加,对周边信号产生干扰。通常我们可以在涂敷数据生成后,对过孔过密而形成沟槽的地方加以调整,使过孔之间留有一定的距离。4.3.2 过孔形成的跳层现象下面我们以六层板为例进行分析。该六层板有两个涂敷层,第二层为地层,第五层为电源层,因此表层和第三层的信号回流主要在地层;底层和第四层的回流主要在电源层。换层布线时有以下六种可能:表层第三层表层第四层表层底层第三层第四层第三层底层第四层底层这六种可能的情况根据其回路电流的情况可以分为两大类:回路电流在同一层上和在不同层上流动的情况,即是否有跳层现象。① 回路电流在同一层上流动的情况包括表层第三层、第四层底层。在这种情况下,回路电流都在同一层上流动,但是,由静电感应原理可知,处于电场中的完整的导体,其内部电场强度为零,所有的电流均在导体表面流动,地平面和电源平面实际上就是这样一个导体。我们使用的过孔均为通孔,这些过孔经过电源和地平面时留下的孔洞就给涂敷层上下表面的电流的流通通过了路径,因此,这些信号线的回流途径是很好的,无需采用措施来改善。② 回路电流在不同层上流动的情况包括表层第四层、表层底层、第三层第四层、第三层底层。下面以表层底层和第三层第四层为例,分析其回流情况。具有跳层现象的信号,需要其在过孔密集区附近增加一些旁路电容,通常为0.1uf的磁片电容,用来提供一个回流通路的。END来源:网络版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM PCB 高速信号

  • 理解了这几个基础电路,模电分析就不难

    在电子电路中,电源、放大、振荡和调制电路被称为模拟电子电路,因为它们加工和处理的是连续变化的模拟信号。1反馈反馈是指把输出的变化通过某种方式送到输入端,作为输入的一部分。如果送回部分和原来的输入部分是相减的,就是负反馈。2耦合一个放大器通常有好几级,级与级之间的联系就称为耦合。放大器的级间耦合方式有三种:①RC 耦合(见图a): 优点是简单、成本低。但性能不是最佳。② 变压器耦合(见图b):优点是阻抗匹配好、输出功率和效率高,但变压器制作比较麻烦。③ 直接耦合(见图c): 优点是频带宽,可作直流放大器使用,但前后级工作有牵制,稳定性差,设计制作较麻烦。3功率放大器能把输入信号放大并向负载提供足够大的功率的放大器叫功率放大器。例如收音机的末级放大器就是功率放大器。3.1 甲类单管功率放大器负载电阻是低阻抗的扬声器,用变压器可以起阻抗变换作用,使负载得到较大的功率。这个电路不管有没有输入信号,晶体管始终处于导通状态,静态电流比较大,困此集电极损耗较大,效率不高,大约只有 35 %。这种工作状态被称为甲类工作状态。这种电路一般用在功率不太大的场合,它的输入方式可以是变压器耦合也可以是 RC 耦合。3.2 乙类推挽功率放大器下图是常用的乙类推挽功率放大电路。它由两个特性相同的晶体管组成对称电路,在没有输入信号时,每个管子都处于截止状态,静态电流几乎是零,只有在有信号输入时管子才导通,这种状态称为乙类工作状态。当输入信号是正弦波时,正半周时 VT1 导通 VT2 截止,负半周时 VT2 导通 VT1 截止。两个管子交替出现的电流在输出变压器中合成,使负载上得到纯正的正弦波。这种两管交替工作的形式叫做推挽电路。3.3 OTL 功率放大器目前广泛应用的无变压器乙类推挽放大器,简称 OTL 电路,是一种性能很好的功率放大器。为了易于说明,先介绍一个有输入变压器没有输出变压器的 OTL 电路,如下图所示。4直流放大器能够放大直流信号或变化很缓慢的信号的电路称为直流放大电路或直流放大器。测量和控制方面常用到这种放大器。4.1 双管直耦放大器直流放大器不能用 RC 耦合或变压器耦合,只能用直接耦合方式。下图是一个两级直耦放大器。直耦方式会带来前后级工作点的相互牵制,电路中在 VT2 的发射极加电阻 R E 以提高后级发射极电位来解决前后级的牵制。直流放大器的另一个更重要的问题是零点漂移。所谓零点漂移是指放大器在没有输入信号时,由于工作点不稳定引起静 态电位缓慢地变化,这种变化被逐级放大,使输出端产生虚假信号。放大器级数越多,零点漂移越严重。所以这种双管直耦放大器只能用于要求不高的场合。4.2 差分放大器解决零点漂移的办法是采用差分放大器,下图是应用较广的射极耦合差分放大器。它使用双电源,其中 VT1 和 VT2 的特性相同,两组电阻数值也相同, R E 有负反馈作用。实际上这是一个桥形电路,两个 R C 和两个管子是四个桥臂,输出电压 V 0 从电桥的对角线上取出。没有输入信号时,因为 RC1=RC2 和两管特性相同,所以电桥是平衡的,输出是零。由于是接成桥形,零点漂移也很小。差分放大器有良好的稳定性,因此得到广泛的应用。5集成运算放大器集成运算放大器是一种把多级直流放大器做在一个集成片上,只要在外部接少量元件就能完成各种功能的器件。因为它早期是用在模拟计算机中做加法器、乘法器用的,所以叫做运算放大器。6振荡器不需要外加信号就能自动地把直流电能转换成具有一定振幅和一定频率的交流信号的电路就称为振荡电路或振荡器。这种现象也叫做自激振荡。或者说,能够产生交流信号的电路就叫做振荡电路。一个振荡器必须包括三部分:放大器、正反馈电路和选频网络。放大器能对振荡器输入端所加的输入信号予以放大使输出信号保持恒定的数值。正反馈电路保证向振荡器输入端提供的反馈信号是相位相同的,只有这样才能使振荡维持下去。选频网络则只允许某个特定频率f0能通过,使振荡器产生单一频率的输出。振荡器能不能振荡起来并维持稳定的输出是由以下两个条件决定的;一个是反馈电压Uf和输入电压 Ui要相等,这是振幅平衡条件。二是 Uf 和 Ui 必须相位相同,这是相位平衡条件,也就是说必须保证是正反馈。一般情况下,振幅平衡条件往往容易做到,所以在判断一个振荡电路能否振荡,主要是看它的相位平衡条件是否成立。振荡器按振荡频率的高低可分成超低频( 20赫以下)、低频( 20赫~ 200千赫)、高频(200千赫~ 30兆赫)和超高频( 10兆赫~ 350兆赫)等几种。按振荡波形可分成正弦波振荡和非正弦波振荡两类。正弦波振荡器按照选频网络所用的元件可以分成 LC 振荡器、 RC振荡器和石英晶体振荡器三种。石英晶体振荡器有很高的频率稳定度,只在要求很高的场合使用。在一般家用电器中,大量使用着各种 LC振荡器和 RC 振荡器。6.1 LC振荡器LC 振荡器的选频网络是LC 谐振电路。它们的振荡频率都比较高,常见电路有 3 种。1) 变压器反馈 LC 振荡电路图(a)是变压器反馈 LC 振荡电路。晶体管 VT 是共发射极放大器。变压器 T 的初级是起选频作用的 LC 谐振电路,变压器 T 的次级向放大器输入提供正反馈信号。接通电源时, LC 回路中出现微弱的瞬变电流,但是只有频率和回路谐振频率 f 0 相同的电流才能在回路两端产生较高的电压,这个电压通过变压器初次级 L1 、 L2 的耦合又送回到晶体管 V 的基极。从图(b)看到,只要接法没有错误,这个反馈信号电压是和输入信号电压相位相同的,也就是说,它是正反馈。因此电路的振荡迅速加强并最后稳定下来。变压器反馈 LC 振荡电路的特点是:频率范围宽、容易起振,但频率稳定度不高。它的振荡频率是:f 0 =1/2π LC 。常用于产生几十千赫到几十兆赫的正弦波信号。2) 电感三点式振荡电路图(a)是另一种常用的电感三点式振荡电路。图中电感 L1 、 L2 和电容 C 组成起选频作用的谐振电路。从 L2 上取出反馈电压加到晶体管 VT 的基极。从图(b)看到,晶体管的输入电压和反馈电压是同相的,满足相位平衡条件的,因此电路能起振。由于晶体管的 3 个极是分别接在电感的 3 个点上的,因此被称为电感三点式振荡电路。电感三点式振荡电路的特点是:频率范围宽、容易起振,但输出含有较多高次调波,波形较差。它的振荡频率是:f 0 =1/2π LC ,其中 L=L1 L2 2M 。常用于产生几十兆赫以下的正弦波信号。3) 电容三点式振荡电路还有一种常用的振荡电路是电容三点式振荡电路,见图(a)。图中电感 L 和电容 C1 、 C2 组成起选频作用的谐振电路,从电容 C2 上取出反馈电压加到晶体管 VT 的基极。从图(b)看到,晶体管的输入电压和反馈电压同相,满足相位平衡条件,因此电路能起振。由于电路中晶体管的 3 个极分别接在电容 C1 、 C2 的 3 个点上,因此被称为电容三点式振荡电路。电容三点式振荡电路的特点是:频率稳定度较高,输出波形好,频率可以高达 100 兆赫以上,但频率调节范围较小,因此适合于作固定频率的振荡器。它的振荡频率是:f 0 =1/2π LC ,其中 C= C 1 C 2 。上面 3 种振荡电路中的放大器都是用的共发射极电路。共发射极接法的振荡器增益较高,容易起振。也可以把振荡电路中的放大器接成共基极电路形式。共基极接法的振荡器振荡频率比较高,而且频率稳定性好。6.2 RC 振荡器RC 振荡器的选频网络是 RC 电路,它们的振荡频率比较低。常用的电路有两种。1) RC 相移振荡电路RC 相移振荡电路的特点是:电路简单、经济,但稳定性不高,而且调节不方便。一般都用作固定频率振荡器和要求不太高的场合。它的振荡频率是:当 3 节 RC 网络的参数相同时:f 0 = 1 2π 6RC 。频率一般为几十千赫。2) RC 桥式振荡电路RC 桥式振荡电路的性能比 RC 相移振荡电路好。它的稳定性高、非线性失真小,频率调节方便。它的振荡频率是:当 R1=R2=R 、 C1=C2=C 时 f 0 = 1 2πRC 。它的频率范围从 1 赫~ 1 兆赫。7调幅和检波电路广播和无线电通信是利用调制技术把低频声音信号加到高频信号上发射出去的。在接收机中还原的过程叫解调。其中低频信号叫做调制信号,高频信号则叫载波。常见的连续波调制方法有调幅和调频两种,对应的解调方法就叫检波和鉴频。7.1 调幅电路调幅是使载波信号的幅度随着调制信号的幅度变化,载波的频率和相位不变。能够完成调幅功能的电路就叫调幅电路或调幅器。调幅是一个非线性频率变换过程,所以它的关键是必须使用二极管、三极管等非线性器件。根据调制过程在哪个回路里进行可以把三极管调幅电路分成集电极调幅、基极调幅和发射极调幅 3 种。下面举集电极调幅电路为例。上图是集电极调幅电路,由高频载波振荡器产生的等幅载波经 T1 加到晶体管基极。低频调制信号则通过 T3 耦合到集电极中。C1 、 C2 、 C3 是高频旁路电容, R1 、 R2 是偏置电阻。集电极的 LC 并联回路谐振在载波频率上。如果把三极管的静态工作点选在特性曲线的弯曲部分,三极管就是一个非线性器件。因为晶体管的集电极电流是随着调制电压变化的, 所以集电极中的 2 个信号就因非线性作用而实现了调幅。由于 LC 谐振回路是调谐在载波的基频上,因此在 T2 的次级就可得到调幅波输出。7.2 检波电路检波电路或检波器的作用是从调幅波中取出低频信号。它的工作过程正好和调幅相反。检波过程也是一个频率变换过程,也要使用非线性元器件。常用的有二极管和三极管。另外为了取出低频有用信号,还必须使用滤波器滤除高频分量,所以检波电路通常包含非线性元器件和滤波器两部分。下面举二极管检波器为例说明它的工作原理。上图是一个二极管检波电路。VD 是检波元件, C 和 R 是低通滤波器。当输入的已调波信号较大时,二极管 VD 是断续工作的。正半周时,二极管导通,对 C 充电;负半周和输入电压较小时,二极管截止, C 对 R 放电。在 R 两端得到的电压包含的频率成分很多,经过电容 C 滤除了高频部分,再经过隔直流电容 C0 的隔直流作用,在输出端就可得到还原的低频信号。8调频和鉴频电路调频是使载波频率随调制信号的幅度变化,而振幅则保持不变。鉴频则是从调频波中解调出原来的低频信号,它的过程和调频正好相反。8.1 调频电路能够完成调频功能的电路就叫调频器或调频电路。常用的调频方法是直接调频法,也就是用调制信号直接改变载波振荡器频率的方法。下图画出了它的大意,图中用一个可变电抗元件并联在谐振回路上。用低频调制信号控制可变电抗元件参数的变化,使载波振荡器的频率发生变化。8.2 鉴频电路能够完成鉴频功能的电路叫鉴频器或鉴频电路,有时也叫频率检波器。鉴频的方法通常分二步,第一步先将等幅的调频波变成幅度随频率变化的调频 — 调幅波,第二步再用一般的检波器检出幅度变化,还原成低频信号。常用的鉴频器有相位鉴频器、比例鉴频器等。END来源:网络版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM 电路

  • 字节员工炸锅了,薪资普降 17%

    8 月 31 日是字节跳动取消大小周后的首个发薪日。然而,收到薪资的字节员工却炸开了锅,他们发现自己的工资比往常都有不同程度的下调。一位字节的员工在社交平台上称:“有生之年终于等来了字节跳动的普调,全体员工普调降低了 17%。”另一位字节的员工对 AI 财经社透露:“少了 4 天工资,不到 20%。”但由于研发的工资普遍较高,这意味着员工不加班将损失一笔不小的资金。另外,很多字节员工在入职谈薪酬时会将加班费也算入了全年薪资包里,而取消了大小周之后,字节目前也没有公布对这部分员工的补偿方案。1/3 字节员工曾反对取消大小周,因为加班费给的太多了今年 6 月,字节跳动 CEO 梁汝波公开了「关于是否取消大小周」的调研结果,1/3 的人不支持取消大小周,1/3 的人支持。为什么有这么多人愿意(大小周)加班呢?这又回到了大多数打工人的初心。出来工作大部分都是为了赚钱,如果你觉得大小周加班不值,那么可能是报酬不到位。而在字节跳动员工的眼中,一些人愿意大小周,主要是因为他们给的太多了。一位刚刚跳槽加入字节跳动的员工表示,如果取消了大小周,自己每年损失 10 万元收入,“我当初加入字节,这部分收入是算在薪酬总包里的”。“一些人加班一天,就有几千块收入”,一位熟悉字节跳动的猎头表示。一些字节跳动员工在脉脉上发帖称,加班两天我一个月的房租就有了,为什么不加班?为什么部分字节员工的反应会非常激烈?经常加班,已经习惯性地把加班费当成固定工资中的一部分了。取消大小周之后,由于这两天是算加班,2 倍薪资,等于是每个月少了 4 个工作日,4/22 = 18.18%。取消大小周,任务里程碑不变,工作量不变,故而,相当于字节员工,降薪了 18.2%。此前就有字节员工吐槽称,“工作量不减少,只取消大小周,是耍流氓”。如今工作量没减少,到手的钱减少了。厌恶情绪更大了。如果他们看到另外一个资讯,可能“伤害”会更大。8 月 17 日,BOSS 直聘宣布从 9 月 1 日起取消大小周。恢复双休后,员工薪资中的“周末加班费”仍正常发出,薪资总额不变。BOSS 直聘的薪资结构中,“周末加班费”部分约占员工年薪的 20%,此举也相当于变相全员涨薪。网友讨论@大眼睛琳:又不想加班又想双休,又想工资保持不变,自己开公司去吧@科技洋洋:老板还会发现,其实完成项目的时间还是一样的@清寂月夜:然后发现不用加班任务完成得也挺好?支出还减少了,大家休息时间还多了。参考:Tech星球、AI财经社、新智元、知乎、微博END版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM

  • 终于明白!为何大部分通信总线都差不多?

    在进行嵌入式开发中你一定遇到了各种总线,包括芯片内的地址总线和数据总线,高速总线和低速总线,还有芯片外的各种通信总线等等,而往往大家对总线似乎还是把握得不太好,所以今天挑选了一篇关于总线的文章供大家阅读:如果一座只能容一个人来往的独木桥,两端的人都想要过桥,为了不拥挤、阻塞,那我们就得采取有效的办法。比如规定某段时间哪端的人过桥,另一端的人就等着该他过桥的时间段的到来,同时也还可以规定人多时要按先来后到或年龄长幼的次序过桥。在这不经意间,我们就体会到了现代电子信息数据通过总线按时分系统传输的最原始的思想。现代网络信息的发展,特别是对于成本和空间而言,总线传输替代点对点传输是目前发展的热点,它的出现将给信息传输上提供了最大的方便和最有效的技术解决方案。假如一个微处理器与它的部件和外围设备都分别用点对点的线路来连接通讯,则所有连线将会错综复杂,甚至难以实现。目前与我们生活习习相关的一系列活动都无不牵涉到总线技术的应用,如我们上英特网、给亲戚朋友打电话、用U盘来存储信息等。虽然流行的总线所采取的形式不同,但他们主要的原则性思想无非就是时分系统、频分系统、相分系统和码分系统等。常言道“兵来将挡,水来土淹”,面对种类繁多的总线,我们只有从基本原理出发,从骨子里去了解它的实质,而不要被它形式多样的外表所迷惑,才能熟练掌握和灵活运用眼下正在或将要用到的各种总线技术。1总线的定义于分类1、定义总线,英文叫作“BUS”,即我们中文的“公共车”,这是非常形象的比如,公共车走的路线是一定的,我们任何人都可以坐公共车去该条公共车路线的任意一个站点。如果把我们人比作是电子信号,这就是为什么英文叫它为“BUS”而不是“CAR”的真正用意。当然,从专业上来说,总线是一种描述电子信号传输线路的结构形式,是一类信号线的集合,是子系统间传输信息的公共通道。通过总线能使整个系统内各部件之间的信息进行传输、交换、共享和逻辑控制等功能。如在计算机系统中,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过主机相连接,外部设备通过相应的接口电路在于总线相连接。2、分类总线分类的方式有很多,如被分为外部和内部总线、系统总线和非系统总线等等,下面是几种最常用的分类方法:◆ 按功能分类最常见的是从功能上来对数据总线进行划分,可以分为地址总线(address bus)、数据总线(data bus)和控制总线(control bus)。在有的系统中,数据总线和地址总线可以在地址锁存器控制下被共享,也即复用。地址总线是专门用来传送地址的。在设计过程中,见得最多的应该是从CPU地址总线来选用外部存储器的存储地址。地址总线的位数往往决定了存储器存储空间的大小,比如地址总线为16位,则其最大可存储空间为216(64KB)。数据总线是用于传送数据信息,它又有单向传输和双向传输数据总线之分,双向传输数据总线通常采用双向三态形式的总线。数据总线的位数通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。在实际工作中,数据总线上传送的并不一定是完全意义上的数据。控制总线是用于传送控制信号和时序信号。如有时微处理器对外部存储器进行操作时要先通过控制总线发出读/写信号、片选信号和读入中断响应信号等。控制总线一般是双向的,其传送方向由具体控制信号而定,其位数也要根据系统的实际控制需要而定。◆ 按传输方式分类按照数据传输的方式划分,总线可以被分为串行总线和并行总线。从原理来看,并行传输方式其实优于串行传输方式,但其成本上会有所增加。通俗地讲,并行传输的通路犹如一条多车道公路,而串行传输则是只允许一辆汽车通过单线公路。目前常见的串行总线有SPI、I2C、USB、IEEE1394、RS232、CAN等;而并行总线相对来说种类要少,常见的如IEEE1284、ISA、PCI等。◆ 按时钟信号方式分类按照时钟信号是否独立,可以分为同步总线和异步总线。同步总线的时钟信号独立于数据,也就是说要用一根单独的线来作为时钟信号线;而异步总线的时钟信号是从数据中提取出来的,通常利用数据信号的边沿来作为时钟同步信号。2总线传输基本原理依据前面对总线的定义可知总线的基本作用就是用来传输信号,为了各子系统的信息能有效及时的被传送,为了不至于彼此间的信号相互干扰和避免物理空间上过于拥挤,其最好的办法就是采用多路复用技术,也就是说总线传输的基本原理就是多路复用技术。所谓多路复用,就是指多个用户共享公用信道的一种机制,目前最常见的主要有时分多路复用、频分多路复用和码分多路复用等。1、时分多路复用(TDMA)时分复用是将信道按时间加以分割成多个时间段,不同来源的信号会要求在不同的时间段内得到响应,彼此信号的传输时间在时间坐标轴上是不会重叠。2、频分多路复用(FDMA)频分复用就是把信道的可用频带划分成若干互不交叠的频段,每路信号经过频率调制后的频谱占用其中的一个频段,以此来实现多路不同频率的信号在同一信道中传输。而当接收端接收到信号后将采用适当的带通滤波器和频率解调器等来恢复原来的信号。3、码分多路复用(CDMA)码分多路复用是所被传输的信号都会有各自特定的标识码或地址码,接收端将会根据不同的标识码或地址码来区分公共信道上的传输信息,只有标识码或地址码完全一致的情况下传输信息才会被接收。3总线的通信协议对于总线的学习,了解其通讯协议是整个过程中最关键的一步,所有介绍总线技术的资料都会花很大的篇幅来描述其协议,特别是ISO/OSI的那七层定义。其实,要了解一种总线的协议,最主要的就是去了解总线的帧数据每一位所代表的特性和意义,总线各节点间有效数据的收发都是通过各节点对帧数据位或段的判断和确信来得以实现。如图1所示是常见的I2C总线上传输的一字节数据的数据帧,其总线形式是由数据线SDA和时钟SCL构成的双线制串行总线,并接在总线上的电路模块即可作为发送器(主机)又可作为接收器(从机)。帧数据中除了控制码(包括从机标识码和访问地址码)与数据码外还包括起始信号、结束信号和应答信号。起始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。控制码:用来选泽操作目标与对象,即接通需要控制的电路,确定控制的种类对象。在读期间,也即SCL时钟线处于时钟脉冲高电平时,SDA上的数据位不会跳变。数据码:是主机向从机发送的具体的有用的数据(如对比度、亮度等)和信息。在读期间,SDA上的数据位不会跳变。应答信号:接收方收到8bit数据后,向发送方发出特定的低电平。读/写的方向与其它数据位正好相反,也即是由从机写出该低电平,主机来读取该低电平。结束信号:SCL为高电平时,SDA由低电平向高电平跳变表示数据帧传输结束。当然不同的总线其数据位或段的定义肯定不同,但依据同样的原理可以更快的去了解它的协议的特性和特点。虽然其信息帧的大小不一,但具体的某一数据位或数据段都类似于本文所提及的I2C总线,会依据它的协议的要求来定义它所达标的意义和功能。4主要的技术指标评价总线的主要技术指标是总线的带宽(即传输速率)、数据位的宽度(位宽)、工作频率和传输数据的可靠性、稳定性等。1、带宽(传输速率)、位宽和工作频率总线的带宽指的是单位时间内总线上传送的数据量,即每钞传送MB的最大数据传输率。总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念;总线的位宽越宽,数据传输速率越大,总线的带宽就越宽。总线的工作时钟频率以MHz为单位,它与传输的介质、信号的幅度大小和传输距离有关。在同样硬件条件下,我们采用差分信号传输时的频率常常会比单边信号高得多,这是因为差分信号的的幅度只有单边信号的一半而已。总线的带宽、位宽和工作频率,这三者密切相关,它们之间的关系:2、传输数据的可靠性可靠性是评定总线最关键的参数,没有可靠性,传输的数据都是错误的信息,便就失去了总线的实际意义。为了提高总线的可靠性,通常采用的措施有:1)采用数据帧发送前发送器对总线进行侦听,只有侦听到总线处于空闲状态下时才可向总线传送数据帧,这样避免了不同节点的数据冲突。2)采用双绞线差分信号来传送数据,以降低单线的电压升降幅度,减小信号的边沿产生的高次谐波。3)适当的让数据的边沿具有一定的斜坡。4)增加匹配电阻和电容等来减少总线上信号的发射和平衡总线上的分布电容等。5)采用合适的网络拓扑结构和屏蔽技术等来减少受其他信号的干扰。还有就是在软件上通过数字滤波、数据校验纠错等措施来提高数据传输的可靠性。5结束语学习是一个循序渐进的过程,对总线技术的学习和理解也是随着其技术的不断发展而不断更新的过程。子曰“工欲善其事,必先利其器。”只有从最基本的原理出发,打好基础,才能在今后的学习中融会贯通,前仆后继,更进一步深入该知识点和拓宽知识面。END来源:最后一个bug版权归原作者所有,如有侵权,请联系删除。▍

    嵌入式ARM 通信总线

发布文章