分类目录:摩登3平台开户

摩登3注册网站_红外遥控38KHz载波,收发调制解码工作原理

关注+星标公众号,不错过精彩内容 作者 | sugar 转自 | MultiMCU EDU 红外遥控我们并不陌生,身边随处可见,最常见的就是家电中的红外遥控,那你知道其中的收发原理吗? 今天就来分享一篇关于红外解码的文章。 1硬件连接 红外解码只需连3 根线(2 根电源 + 1 根数据)即可,如下图中TSOP382。 2NEC 协议解码 本文所述的红外编解码采用 NEC 协议。通信的数据帧里使用 高电平时间 来区分 0 和 1。 对于按一下然后按住不动的情况,NEC 协议下是这么处理的: 上图中写的“固定重复指令”也叫作“重复引导码”。对于红外通信协议,搜关键词“IR 引导码”会比较容易搜出结果。 NEC 的编码规则非常简单,如下图: 实际用逻辑分析仪抓取的波形如下,可以与上面的规则相互印证: 3Arduino 红外解码 把上图中的代码复制到下面: #include const int irReceiverPin = 2;IRrecv irrecv(irReceiverPin);decode_results results;decode_results res_last;void setup() { Serial.begin(9600); irrecv.enableIRIn();}void loop() { if(irrecv.decode(&results)){ if(res_last.value != results.value){ res_last.value = results.value; Serial.print("irCode: "); Serial.print(results.value, HEX); Serial.print(", bits: "); Serial.println(results.bits); } irrecv.resume(); }} 4STM32 红外解码 1.外部中断方式 参考《江涛带你玩STM32-CubeMX红外NEC解码实战(上)—外部中断方式》 外部中断方式的优点在于:用哪个引脚都可以。因为没有使用片上定时器外设,所以需要使用 CPU 计数方式来算时间。 2.定时器捕获方式 参考《江涛带你玩STM32-CubeMX红外NEC解码实战(下)—定时器TIM捕获方式》 定时器捕获方式需要使用与定时器相关的引脚,优点是 CPU 不参与计时,被解放出来的 CPU 可以做其他的事。 PS 除了 NEC 协议,红外通信还有很多其他的协议,这在 Mixly 图形化编程软件中看得很明显,如下图: 本文选择最简单的 NEC 协议谈红外解码意在简单地体现 IR 通信的应用,所以没有引入 38kHz 载波的概念,如果想深入了解可以参考《STM32之红外遥控信号自学习实现》。 5收、发解码差异 如上图,红外通信比较奇特的一点就是收发数据反相。这就导致虽然从发送方或接收方都能解出正确数据,但必解码时必须注意极性,极性要是反了就解不出或解不对数据。 通信实验: 如上图,作者觉得发与收之间的相位差加强了实验的真实感。作者用了两个单片机,分别是 ATMega 2560 和 ATMega 644,选 Arduino 系单片机的原因是想偷个懒不写软件。 下面放大一个数据,仔细看一看 38KHz 的载波长什么样: 上图的结论是占在“接收方”的角度写的“发送方”的行为。也就是说: 1.想让接收方接到 0,发送方就发 38KHz 的载波; 2.想让接收方接到 1,发送方就停止发送载波。 这里不免有人会问:停止发送载波实际上让接收方收到了 1,那该怎么区分“停止通信”和“通信中的 1”呢? 这答案就能看出…

摩登三1960_基于STM32F103自制CMSIS-DAP下载器

关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | strongerHuang 市面上针对Cortex-M处理器的下载器,有很多是基于CMSIS-DAP演变而来,比如:e-Link、GD-Link等。 之前给大家分享过自制ST-Link的教程,今天继续为大家分享一篇:基于STM32F103C8,自制CMSIS-DAP下载器。 1 关于CMSIS-DAP CMSIS-DAP是支持访问 CoreSight 调试访问端口(DAP)的固件规范和实现,以及各种Cortex处理器提供CoreSight调试和跟踪。 地址: https://arm-software.github.io/CMSIS_5/DAP/html/index.html CMSIS-DAP固件作为源代码提供,并且可以完全配置为新的调试单元。 这里相关的更多内容,可以参看我之前分享过的一篇文章:Cortex-M软件接口标准CMSIS那些重要内容。 2 CMSIS-DAP固件 CMSIS-DAP固件Arm以源码形式提供,不存在版权问题(因为针对Arm Cortex处理器,他们还希望更多人使用)。 1.固件版本 目前有两个版本: 版本1配置使用USB HID作为与主机PC的接口。 版本2配置使用WinUSB作为与主机PC的接口,并提供高速SWO跟踪流。 2.源码位置 目前源码提供在Keil MDK V5版本,安装好Keil MDK,你在安装目录下就能找到源码。 C:\Keil_v5\ARM\Packs\ARM\CMSIS\5.7.0\CMSIS\DAP\Firmware (目前MDK V5.33,CMSIS版本为5.7.0) 3.源码描述 从文件目录可以看出,官方源码提供了一些模板和例子。 目前只提供了LPC处理器的例子,如果你有这个处理器对应的板卡,可以直接使用该源码做一个下载调试器。(下面就针对于LPC这个例子进行“改装”) 3 配置 利用STM32CubeMX图形化配置工具,帮助用户选择单片机引脚的功能,并自动生成外设初始化代码。配置了USB、SPI1和USART1,并选择了USB的Custom HID middleware模式。GPIOB10到GPIO15被配置为JTAG调试需要的引脚。GPIOC13用于驱动单片机上的LED灯。 ST公司也开发了他们自己的JTAG调试器——STLink。当然它并不是必要的,你也可以使用J-Link或者其他种类的调试器。STLink的驱动和程序可以在ST官网上下载。在网站里还有一个基于Eclipse开发环境开发的IDE,STM32CubeMX也被包含其中。我选择的IDE是基于CodeBlocks的Embitz,IDE中的arm_none_eabi_gcc版本是5.4.1。在我完成我的CMSIS-DAP之前,我必须使用STLink来调试我的代码。现在我在使用新做出来的CMSIS-DAP结合OpenOCD进行日常的开发。 4 从CMSIS-DAP的源码开始 源码可以在官网下载: https://github.com/ARM-software/CMSIS_5 也可以直接在 Keil MDK 安装目录下获取: C:\Keil_v5\ARM\Packs\ARM\CMSIS\5.7.0\CMSIS\DAP 将从示例V1的头文件 DAP_config.h 开始分析。 选择LPC-Link-II V1作为我的参考是因为它是通过USB HID实现的(V2是通过WinUSB实现)。我分析的第一个文件是DAP_Config.h。第一个关键位置如下: #ifdef _RTE_#include "RTE_Components.h"#include CMSIS_device_header#else#include "device.h" #endif 不用RTE的相关文件,创建我自己的device.h。 我将参数CPU_CLOCK重定义为72000000(72MHz)。根据文件里的注释,参数DAP_PACKET_SIZE必须重新定义为64U。我把SWO_UART改为0,这让我的工作轻松不少。参数TIMESTAMP_CLOCK也要重定义为72000000。LPC-Link-II使用Cortex-M3 的 DWT模块实现时间戳(TIMESTAMP),这也是为什么我想在CubeMX中尝试配置STM32F103的DWT。最后我自己写了一小段代码来实现这个功能(在device.c中): CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;/** * On Cortex-M7 core there is a LAR register in DWT domain. * Any time we need to setup DWT registers, we MUST write * 0xC5ACCE55 into LAR first. LAR means Lock Access Register. */DWT->CYCCNT = 0;DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; 我定义的引脚和NXP LPCxx的完全不同。我为STM32F103重写了所有的引脚的操作代码。在DAP_Config.h这个文件中还有一些奇怪的地方,比如: // SWCLK/TCK I/O pin ------------------------------------- /** SWCLK/TCK I/O pin: Get Input.\return Current…

摩登3注册开户_精编汇整!13个电路公式

1 欧姆定律计算 计算电阻电路中电流、电压、电阻和功率之间的关系。 ▶欧姆定律解释: 欧姆定律解释了电压、电流和电阻之间的关系,即通过导体两点间的电流与这两点间的电势差成正比。 说明两点间的电压差、流经该两点的电流和该电流路径电阻之间关系的定律。该定律的数学表达式为V=IR,其中V是电压差,I是以安培为单位的电流,R是以欧姆为单位的电阻。若电压已知,则电阻越大,电流越小。 2 计算多个串联或并联连接的电阻的总阻值 3 计算多个串联或并联连接的电容器的总容值 4 电阻分压计算 计算电阻分压器电路的输出电压,以实现既定的阻值和电源电压组合。 什么是分压器? 分压器是一个无源线性电路,能产生一个是其输入电压(V1)一部分的输出电压(Vout)。分压器用于调整信号电平,实现有源器件和放大器偏置,以及用于测量电压。 欧姆定律解释了电压、电流和电阻之间的关系,即通过两点间导体的电流与这两点间的电势差成正比。 这是一个说明两点间的电压差、流经该两点的电流和该电流路径电阻之间关系的定律。该定律的数学表达式为V=IR,其中V是电压差,I是以安培为单位的电流,R是以欧姆为单位的电阻。若电压已知,则电阻越大,电流越小。 5 电流分流器-电阻计算 计算连接到电流源的多至10个并联电阻上流过的电流: 6 电抗计算 计算指定频率下电感器或电容器的电抗或导纳大小。 (1)感抗/导纳 (2)容抗/导纳 7 RC时间常数计算 计算电阻与电容的积,亦称RC时间常数。该数值在描述电容通过电阻器进行充电或放电的方程式中出现,表示在改变施加到电路的电压后,电容器两端的电压达到其最终值约63%所需的时间。同时该计算器也会计算电容器充电到指定电压所存储的总能量。 如何计算时间常数: 时间常数(T)可由电容(C)和负载电阻(R)的值确定。电容器(E)中存储的能量(E)由两个输入确定,即由电压(V)和电容(C)决定。 8 LED串联电阻器计算器 计算在指定电流水平下通过电压源驱动一个或多个串联LED所需的电阻。注意:当为此目的选择电阻器时,为避免电阻器温度过高,请选择额定功率是下方计算出的功率值的2至10倍之间的电阻器。 9 dBm转W换算 10 电感换算 11 电容器换算表 换算包括pF、nF、μF、F在内的不同量级电容单位之间的电容测量值。 12 电池续航时间 电池续航时间计算公式: 电池续航时间=电池容量(mAh)/负载电流(mA) 根据电池的标称容量和负载所消耗的平均电流来估算电池续航时间。电池容量通常以安培小时(Ah)或毫安小时(mAh)为计量单位,尽管偶尔会使用瓦特小时(Wh)。 将瓦特小时除以电池的标称电压(V),就可以转换为安培小时,公式如下: Ah=Wh/V 安培小时(亦称安时),是一种电荷度量单位,等于一段时间内的电流。一安时等于一个小时的一安培连接电流。毫安小时或毫安时是一千分之一安培小时,因此1000mAh电池等于1Ah电池。上述结果只是估算值,实际结果会受电池状态、使用年限、温度、放电速度和其它因素的影响而发生变化。如果所用电池是全新的高质量电池,在室温下工作且工作时间在1小时到1年之间,则这种预估结果最贴近实际结果。 13 PCB印制线宽度计算 使用IPC-2221标准提供的公式计算铜印刷电路板导体或承载给定电流所需“印制线”的宽度,同时保持印制线的温升低于规定的极限值。此外,如果印制线长度已知,还会计算总电阻、电压降和印制线电阻引起的功率损耗。由此求得的结果是估算值,实际结果会随应用条件而发生变化。我们还应注意,与电路板外表面上的印制线相比,电路板内层上的印制线所需的宽度要大得多,请使用适合你情况的结果。 如何计算印制线宽度? 首先,计算面积: 面积[mils^2]=(电流[Amps]/(k*(温升[ ℃])^b))^(1/c) 然后,计算宽度: 宽度[mils]=面积[mils^2]/(厚度[oz]*1.378[mils/oz]) 用于IPC-2221内层时:k=0.024、b=0.44、c=0.725 用于IPC-2221外层时:k=0.048、b=0.44、c=0.725 其中k、b和c是由对IPC-2221曲线进行曲线拟合得出的常数。 公值:厚度(1oz)、环境温度(25℃)、温升(10℃)。 END 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登三1960_空载的情况下,稳压器能稳定工作吗?

作为一名应用工程师,经常被问及有关稳压器空载工作的问题。大多数现代 LDO 和开关稳压器均能在空载的情况下稳定工作,那么,人们为什么还要再三询问呢? 一些老式的功率器件要求具有最小的负载以保证稳定性,因为其中一个必须得到补偿的电极受有效负载电阻的影响。例如,图 A 显示,LM1117 至少需要 1.7 mA 的负载电流(最大 5 mA)。 图 A. LM1117 最小负载电流规格。 大多数新型器件均能在无负载的情况下工作,对于这一规则,极少有例外情况。一些设计技术使得 LDO 在使用任何输出电容(尤其是低 ESR 电容)的情况下都能保持稳定状态,它们也用于保障器件在无负载情况下的稳定性。对于少数需要负载的现代器件,这一限制一般是通过旁路元件的漏电流造成的,而不是稳定性原因造成的。那么,您如何辨别呢?请参阅数据手册。如果器件需要最小负载,数据手册必定会提供一些信息。 ADP1740 和其他低电压、高电流 LDO 都属于这一类。在最糟糕的情况下,集成电源开关产生的漏电流大约是 100 µA (85°C) 和 500 µA (125°C)。在无负载的情况下,漏电流会对输出电容充电,直到开关的 VDS 低到足以将漏电流减小至可以忽略不计的水平,同时增加空载输出电压。数据手册指出,至少需要 500 µA 的负载,因此,如果器件要在高温下工作,则建议使用仿真负载。该负载小于设备的额定值 2 A。图 B 显示了 ADP1740 数据手册中列出的最小负载电流规格。 图 B. ADP1740 最小负载电流规格 如果数据手册中未明确指出最小负载,该怎么办?在大多数情况下,是不需要最小负载的。虽然听起来可能不太令人信服,但是,如果需要最小负载,数据手册中肯定会提供此类信息。然而,困惑往往随之而来,因为数据手册中通常使用图表来显示某个工作范围的规格。大多数这些图表采用对数形式,这使得它们可以显示数十年的负载范围,但是,对数刻度不能变为零。 图C显示了 ADM7160 在 10 µA 到 200 mA 范围内的输出电压以及接地电流和负载电流。其他图表,例如接地电流与输入电压,显示了多个负载电流时的测量结果,但并未显示电流为零时的数据。 图 C. ADM7160 输出电压以及接地电流和负载电流。 此外,PSRR、电源电压调整率、负载调整、噪声等参数指定了某个不包括零的负载电流范围,如图 D 所示。但是,这绝不意味着需要最小负载。 图 D. ADM7160 负载调整。 您如果使用具有省电模式 (PSM) 的开关稳压器,则往往会担心稳压器在轻负载时的工作情况,因为 PSM 会减少工作频率、跳脉、提供脉冲群或出现这些情况的某种组合。在轻负载的情况下,PSM 会减少功耗,提高效率。其缺点在于输出纹波会显著增加,但是,器件仍可保持稳定状态,并且可以在空载时轻松工作。 如图 E 中所示,当负载在 800 mA 与 1 mA 之间切换时,ADP2370 高电压、低静态电流降压稳压器因 PSM 工作产生了更多的纹波。测试是在 1 mA 时完成的这一事实并不代表 1 mA 就是最小负载。 图 E. 省电模式下的 ADP2370 负载瞬态。 结论   PSRR性能:54 dB (100 kHz) 独立于VLOUT的超低噪声 3 μV rms(0.1 Hz至10 Hz) 9.5 μV rms(0.1 Hz至100 kHz) 9 µV rms(10Hz至100KHz) 17 µV rms(10Hz至1MHz) 低压差: 150…

摩登3测速登陆_长线or短线?博通两次出售IoT业务启示

本文来源:物联传媒 本文作者:露西 这些年来,大家见惯了大公司转型物联网,在各种发言场合提出对万物互联的美好畅想,一定很少见哪家公司5年内连续2次卖出自家IoT部门吧。 但这事真的有,而且暗藏玄机。 2016年,Cypress以5.5亿美元买下博通的IoT事业部门,整个交易案的内容物包括:使用Wi-Fi、蓝牙、以及Zigbee技术的IoT产品线及相关知识产权,以及WICED品牌与研发体系。当时,博通的物联网事业部在全球约有430位员工,过去12个月创造了1.89亿美元的营收。 赛普拉斯在其官方通告中表示,此次收购将加固公司在嵌入式系统领域的领导地位,同时博通的生态系统将有利于赛普拉斯快速打开物联网、汽车和工业等领域的新市场。而博通,如偿所愿地继续专注自身核心市场。 就在人们以为博通不走寻常路,对物联网兴趣不大的时候,或许谁也没想到,多年以后事件可以重演。 2020年7月,在人机交互技术上发展迅速,有志于探索物联网业务的Synaptics公司,宣布将以 2.5 亿美元的价格收购博通的无线 IoT 业务。更准确地说,此次交易将使Synaptics 获得博通面向IoT市场的 Wi-Fi、蓝牙和 GPS 产品以及开发中的产品和业务关系本身的”某些权利”。 Synaptics 表示,此次收购巩固和加速了该公司在消费物联网市场中的地位,预计未来能使其年销售额增长6500 万美元,以及提高公司非通用会计准则下的毛利率和利润。 将两个事件结合起来,博通在物联网上的战略方式已经初露端倪:即不断发展IoT相关业务以寻求出售的利基。 或许,博通是决定回避物联网产业链复杂、回报周期长的痛点,发挥自身在技术上的积累和优势,以更像”边缘人”的角色,采用更像资本操作的手段从中获取盈利。 更重要的是,我们很难觉得博通为此付出了多大的成本,因为出售这些业务甚至不会对博通的价值产生影响。 那么,博通有何底气如此操作?其他公司也可以复制吗?我们尝试梳理这样的问题。 博通是家什么样的公司? 按照半导体芯片行业的典型运作模式,博通属于Fabless类型,即无厂IC设计公司。 按照TrendForce旗下拓墣产业研究院最新统计数据,博通公司在IC设计公司营收排名中占据榜首,2019年在IC设计领域完成172.46亿美元营业收入,虽然较2018年营收有所下滑,原因多与半导体行业市场景气程度、中美贸易战有关,而实际上一大半IC设计厂商都遭遇了这类问题。 按照财报内容,2019财年博通实现营收225.97亿美元,同比增长8%,年度GAAP净利润为27.24亿美元。 博通的营收主要由半导体解决方案、基础设施软件、知识产权许可三部分组成。 半导体解决方案部门主要包括明星级的有线基础设施业务(以太网交换芯片/数据包处理器/ASCI等)和无线芯片业务(Wi-Fi芯片/蓝牙/GPS芯片等),二者各自拥有领先的市场份额; 基础设施软件部门主要包括主机、企业软件解决方案和光纤通道存储区域网络业务,这项业务与2018年博通斥资189亿美元收购美国商业软件公司CA Technologies,2019年斥资107亿美元收购赛门铁克旗下的企业安全部门有重要关联,借助收购,博通在IC设计以外又开拓了基础软件领域的新道路。 眼下,半导体解决方案营收占据博通整体的四分之三以上,基础设施软件在博通的收入占比逐步上升,2019 Q4所占比例为21%。 博通的成长方式,使出售IoT业务成必然 博通发展主要历程,图片来源:博通 细说博通的历史,可以分三条线展开。 第一条线,最早可追溯到1961年惠普成立的半导体产品部门,往后1999年惠普进行组织架构调整时将该部门拆分独立,组成了一家名为安捷伦(Agilent)的新公司,到2005年安捷伦精简架构时,其半导体业务又被私募行业公司—KKR和银湖资本以26.6亿美元的价格买下,并将其改名为安华高科技(Avago)。2009年,安华高科技成功在纳斯达克上市。 第二条线,通信鼻祖AT&T、贝尔实验室、朗讯科技、Agere Systems、LSI一系列产业重要角色先后登场,上演了拆分、合并等过程,最终以2013年安华高斥资66亿美元收购LSI为关键节点,安华高扩展了在存储芯片领域的能力,使业务类型扩大至更加广泛。 第三条线,则是一出更加戏剧的”蛇吞象”操作:2016年安华高以370亿美元巨资收购了比自身体量大数倍的博通公司,后者成立于1991年,在无线通信半导体领域享有国际领先优势。收购之后,新公司沿用了”博通(Broadcom limited)”的名号,直接在2016年全球半导体厂商销售额排名中跃居第五,并且多年来一直保持在高位。 2019全球半导体公司营业收入十强 数据来源:Gartner 或许人们还有印象,在2017年高通遭遇一系列困境以致股价下滑超过20%时,博通向高通抛出了收购要约。虽然最后因为反垄断政策此交易并未达成,但博通的”手段”其实前后一脉相承: 在目标对象股价低迷时买入,通过连续并购以扩充业务线。 相比于通过技术积累获取成长,严格说来更像用资本运作使其庞大。 而除了买买买以外,与文章开头两次售卖IoT部门相通的一点是,博通收购新公司后往往会留下核心的业务线,对于非核心、或认为不重要的分支,就会进行裁减或出售。 在当时,虽然业界都高喊物联网是未来的趋势,可从”旧”博通继承过来的IoT业务却始终达不到新公司规定的30%利润率及格线,在注重销售和利润的气氛背景下,物联网必须被卖出。 针对2015年面向赛普拉斯的那次出售,就是发生在安华高科技收购”旧”博通之后一年,彼时物联网事业部正是公司架构调整时分拆出来的新部门,无情地说,若不是依附其他博通产品线,几近空白的物联网事业部很难有独立产生1.89亿美元年营收的能力。 当然,凭借物联网概念在那时的盛行,以及博通在无线芯片上确有卓越的领先优势,自然有企业相信博通的IoT部门能融合碰撞出更大价值,那么也就划得来。 而对于擅长资产出售和裁员重组的博通,这样的生意当然能做的漂亮。 深究博通为何能将一系列买买买、卖卖卖交易做的水到渠成,最关键的是其背后的KKR、银湖资本两大私募基金,以及自2006年来先后在安华高科技和”新”博通掌舵的CEO陈福阳(Hock Tan )。 陈福阳的丰富履历暂且不做多说,搬用其本人在多年前于华美半导体协会年度晚宴上的自我评价:”我并不是半导体人,但是我懂得赚钱和经营。”只一句话,关于博通为何连续购入和卖出的逻辑便跃然纸上了。 自然,博通也不是物联网公司,现阶段很少像他的竞争对手英特尔、高通一样表态将拥抱或转型物联网。 可相反的,想要转型物联网的公司却需要博通,这源于博通具备物联网细分领域深厚的技术、生态和专利积累。比如当下广受关注的Wi-Fi 6技术,依然是由博通的芯片方案占据主流之一。 因此从博通的例子来看,对于深耕在物联网的无数企业来说,技术积累依然是站稳市场的关键,资金运作则是锦上添花,提供多一种选择路径。 何况眼下,瞬息变化的市场中,博通的营收正受到中美贸易战和半导体产业环境的影响而下滑,即将出现的消费电子市场的饱和让企业重新考虑战略路线,5G和物联网作为公认的重要市场,又有谁能完全弃之不顾呢? 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3注册开户_让人头痛的大事务问题到底要如何解决?

前言 最近有个网友问了我一个问题:系统中大事务问题要如何处理? 正好前段时间我在公司处理过这个问题,我们当时由于项目初期时间比较紧张,为了快速完成业务功能,忽略了系统部分性能问题。项目顺利上线后,专门抽了一个迭代的时间去解决大事务问题,目前已经优化完成,并且顺利上线。现给大家总结了一下,我们当时使用的一些解决办法,以便大家被相同问题困扰时,可以参考一下。 大事务引发的问题 在分享解决办法之前,先看看系统中如果出现大事务可能会引发哪些问题 从上图可以看出如果系统中出现大事务时,问题还不小,所以我们在实际项目开发中应该尽量避免大事务的情况。如果我们已有系统中存在大事务问题,该如何解决呢? 解决办法 少用@Transactional注解 大家在实际项目开发中,我们在业务方法加上@Transactional注解开启事务功能,这是非常普遍的做法,它被称为声明式事务。 部分代码如下: @Transactional(rollbackFor=Exception.class) public void save(User user) { doSameThing... } 然而,我要说的第一条是:少用@Transactional注解。 为什么? 我们知道 @Transactional注解是通过 spring的 aop起作用的,但是如果使用不当,事务功能可能会失效。如果恰巧你经验不足,这种问题不太好排查。至于事务哪些情况下会失效,可以参考我之前写的《spring事务的这10种坑,你稍不注意可能就会踩中!!!》这篇文章。 @Transactional注解一般加在某个业务方法上,会导致整个业务方法都在同一个事务中,粒度太粗,不好控制事务范围,是出现大事务问题的最常见的原因。 那我们该怎么办呢? 可以使用编程式事务,在spring项目中使用TransactionTemplate类的对象,手动执行事务。 部分代码如下: @Autowired private TransactionTemplate transactionTemplate; ... public void save(final User user) { transactionTemplate.execute((status) => { doSameThing... return Boolean.TRUE; }) } 从上面的代码中可以看出,使用TransactionTemplate的编程式事务功能自己灵活控制事务的范围,是避免大事务问题的首选办法。 当然,我说少使用@Transactional注解开启事务,并不是说一定不能用它,如果项目中有些业务逻辑比较简单,而且不经常变动,使用@Transactional注解开启事务开启事务也无妨,因为它更简单,开发效率更高,但是千万要小心事务失效的问题。 将查询(select)方法放到事务外 如果出现大事务,可以将查询(select)方法放到事务外,也是比较常用的做法,因为一般情况下这类方法是不需要事务的。 比如出现如下代码: @Transactional(rollbackFor=Exception.class) public void save(User user) { queryData1(); queryData2(); addData1(); updateData2(); } 可以将queryData1和queryData2两个查询方法放在事务外执行,将真正需要事务执行的代码才放到事务中,比如:addData1和updateData2方法,这样就能有效的减少事务的粒度。 如果使用TransactionTemplate的编程式事务这里就非常好修改。 @Autowired private TransactionTemplate transactionTemplate; ... public void save(final User user) { queryData1(); queryData2(); transactionTemplate.execute((status) => { addData1(); updateData2(); return Boolean.TRUE; }) } 但是如果你实在还是想用@Transactional注解,该怎么拆分呢? public void save(User user) { queryData1(); queryData2(); doSave(); } @Transactional(rollbackFor=Exception.class) public void doSave(User user) { addData1(); updateData2(); } 这个例子是非常经典的错误,这种直接方法调用的做法事务不会生效,给正在坑中的朋友提个醒。因为@Transactional注解的声明式事务是通过spring aop起作用的,而spring aop需要生成代理对象,直接方法调用使用的还是原始对象,所以事务不会生效。 有没有办法解决这个问题呢? 1.新加一个Service方法 这个方法非常简单,只需要新加一个Service方法,把@Transactional注解加到新Service方法上,把需要事务执行的代码移到新方法中。具体代码如下: @Servcie public class ServiceA { @Autowired prvate ServiceB…

摩登3主管554258:_精讲MySQL事务日志:redo log 和 undo log

来源:https://blog.csdn.net/demonson/article/details/104369733 innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。 undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志: 1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。 2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。 1.redo log 1.1 redo log和二进制日志的区别 二进制日志相关内容,参考:MariaDB/MySQL的二进制日志。 redo log不是二进制日志。虽然二进制日志中也记录了innodb表的很多操作, 也能实现重做的功能,但是它们之间有很大区别。 二进制日志是在 存储引擎的上层产生的,不管是什么存储引擎,对数据库进行了修改都会产生二进制日志。而redo log是innodb层产生的,只记录该存储引擎中表的修改。 并且二进制日志先于redo log被记录。具体的见后文group commit小结。 二进制日志记录操作的方法是逻辑性的语句。即便它是基于行格式的记录方式,其本质也还是逻辑的SQL设置,如该行记录的每列的值是多少。而redo log是在物理格式上的日志,它记录的是数据库中每个页的修改。 二进制日志只在每次事务提交的时候一次性写入缓存中的日志”文件”(对于非事务表的操作,则是每次执行语句成功后就直接写入)。而redo log在数据准备修改前写入缓存中的redo log中,然后才对缓存中的数据执行修改操作;而且保证在发出事务提交指令时,先向缓存中的redo log写入日志,写入完成后才执行提交动作。 因为二进制日志只在提交的时候一次性写入,所以二进制日志中的记录方式和提交顺序有关,且一次提交对应一次记录。而redo log中是记录的物理页的修改,redo log文件中同一个事务可能多次记录,最后一个提交的事务记录会覆盖所有未提交的事务记录。例如事务T1,可能在redo log中记录了 T1-1,T1-2,T1-3,T1* 共4个操作,其中 T1* 表示最后提交时的日志记录,所以对应的数据页最终状态是 T1* 对应的操作结果。而且redo log是并发写入的,不同事务之间的不同版本的记录会穿插写入到redo log文件中,例如可能redo log的记录方式如下:T1-1,T1-2,T2-1,T2-2,T2*,T1-3,T1* 。 事务日志记录的是物理页的情况,它具有幂等性,因此记录日志的方式极其简练。幂等性的意思是多次操作前后状态是一样的,例如新插入一行后又删除该行,前后状态没有变化。而二进制日志记录的是所有影响数据的操作,记录的内容较多。例如插入一行记录一次,删除该行又记录一次。 1.2 redo log的基本概念 redo log包括两部分:一是内存中的日志缓冲(redo log buffer),该部分日志是易失性的;二是磁盘上的重做日志文件(redo log file),该部分日志是持久的。 在概念上,innodb通过 force log at commit机制实现事务的持久性,即在事务提交的时候,必须先将该事务的所有事务日志写入到磁盘上的redo log file和undo log file中进行持久化。 为了确保每次日志都能写入到事务日志文件中,在每次将log buffer中的日志写入日志文件的过程中都会调用一次操作系统的fsync操作(即fsync()系统调用)。因为MariaDB/MySQL是工作在用户空间的,MariaDB/MySQL的log buffer处于用户空间的内存中。要写入到磁盘上的log file中(redo:ib_logfileN文件,undo:share tablespace或.ibd文件),中间还要经过操作系统内核空间的os buffer,调用fsync()的作用就是将OS buffer中的日志刷到磁盘上的log file中。 也就是说,从redo log buffer写日志到磁盘的redo log file中,过程如下:  在此处需要注意一点,一般所说的log file并不是磁盘上的物理日志文件,而是操作系统缓存中的log file,官方手册上的意思也是如此(例如:With a value of 2, the contents of the InnoDB log buffer are written to the log file after each transaction commit and  the log file is flushed to disk approximately once per second)。 但说实话,这不太好理解,既然都称为file了,应该已经属于物理文件了。所以在本文后续内容中都以os buffer或者file system buffer来表示官方手册中所说的Log file,然后log file则表示磁盘上的物理日志文件,即log file on disk。…

摩登3注册登录网_三星Game Driver App来了:可提供最佳游戏体验

游戏直播市场十分火热,为了帮助用户更方便的开直播,许多直播网站还会推出相应的直播软件供大家使用,不过这些软件往往只在PC上起作用,想直播手机游戏的话就麻烦的多。三星可能也考虑到了这个问题,推出了一款名为Game Live的APP。高通公司已经做了一年,现在三星推出了一个软件解决方案-一个名为Game Driver的Android应用程序,“可提供最佳游戏体验”。 目前的安卓手机尽管已经做到了非常高的易用性,但是和 Windows 设备比起来,其驱动更新的方式还比较繁琐,依旧依靠系统更新来完成。 相比于 PC 平台显卡频繁的驱动更新速度,手机系统更新的频率以及效率都远远落后,限制了游戏性能的发挥。三星近日为其 Galaxy S20、N20 手机发布了名为 “Samsung GameDriver”的 App,可以单独更新 GPU 驱动。 这款应用是三星联合谷歌、高通、ARM 联合开发的。三星表示,Samsung GameDriver 这款软件未来将支持更多的手机型号。 相较于三星其他官方APP而言,这个APP倒是非常实用,特别是支持推流到3大平台,相当省事。三星表示,GPU优化是在与Google“以及ARM和Qualcomm等主要GPU供应商”合作之后完成的。该公司承诺,尽管从一开始就支持Game Driver的设备数量有限,但总数很快就会增加。 相信大家对此都是相当关注的,大家对此还有哪些进一步的看法呢?欢迎留言讨论哦!

摩登3平台注册登录_科普:什么是JESD204标准,为什么我们要重视它?

一种新的转换器接口的使用率正在稳步上升,并且有望成为未来转换器的协议标准。这种新接口JESD204诞生于几年前,其作为转换器接口经过几次版本更新后越来越受瞩目,效率也更高。 随着转换器分辨率和速度的提高,对于效率更高的接口的需求也随之增长。JESD204接口可提供这种高效率,较之其前代互补金属氧化物半导体(CMOS)和低压差分信号(LVDS)产品在速度、尺寸和成本方面更有优势。采用JESD204的设计拥有更快的接口带来的好处,能与转换器更快的采样速率同步。此外,引脚数的减少导致封装尺寸更小,走线布线数更少,从而极大地简化了电路板设计,降低了整体系统成本。该标准可以方便地调整,从而满足未来需求,这从它已经历的两个版本的变化中即可看出。自从2006年发布以来,JESD204标准经过两次更新,目前版本为B。由于该标准已为更多的转换器供应商、用户以及FPGA制造商所采纳,它被细分并增加了新特性,提高了效率和实施的便利性。此标准既适用于模数转换器(ADC)也适用于数模转换器(DAC),初步打算作为FPGA的通用接口(也可能用于ASIC)。 JESD204——它是什么? 2006年4月,JESD204最初版本发布。该版本描述了转换器和接收器(通常是FPGA或ASIC)之间数Gb的串行数据链路。在 JESD204的最初版本中,串行数据链路被定义为一个或多个转换器和接收器之间的单串行通道。图1给出了图形说明。图中的通道代表 M 转换器和接收器之间的物理接口,该接口由采用电流模式逻辑(CML)驱动器和接收器的差分对组成。所示链路是转换器和接收器之间的串行数据链路。帧时钟同时路由至转换器和接收器,并为器件间的JESD204链路提供时钟。 图1. JESD204最初标准。 通道数据速率定义为312.5 Mbps与3.125 Gbps之间,源阻抗与负载阻抗定义为100 Ω ±20%。差分电平定义为标称800 mV峰峰 值、共模电平范围从0.72 V至1.23 V。该链路利用8b/10b编码,采用嵌入式时钟,这样便无需路由额外的时钟线路,也无需考虑相关的高数据速率下传输的数据与额外的时钟信号对齐的复杂性。当JESD204标准开始越来越受欢迎时,人们开始意识到该标准需要修订以支持多个转换器下的多路、对齐的串行通道,以满足转换器日益增长的速度和分辨率。 这种认识促成了JESD204第一个修订版的发布,即JESD204A。此修订版增加了支持多个转换器下的多路对齐串行通道的能力。该版本所支持的通道数据速率依然为312.5 Mbps至3.125 Gbps,另外还保留了帧时钟和电气接口规范。增加了对多路对齐串行通道的支持,可让高采样速率和高分辨率的转换器达到3.125 Gbps的最高支持数据速率。图2以图形表示JESD204A版本中增加的功能,即支持多通道。 图2. 第一版——JESD204A。 虽然最初的JESD204标准和修订后的JESD204A标准在性能上都比老的接口标准要高,它们依然缺少一个关键因素。这一缺少的因素就是链路上串行数据的确定延迟。对于转换器,当接收到信号时,若要正确重建模拟域采样信号,则关键是了解采样信号和其数字表示之间的时序关系(虽然这种情况是针对ADC而言,但DAC的情况类似)。该时序关系受转换器的延迟影响,对于ADC,它定义为输入信号采样边沿的时刻直至转换器输出数字这段时间内的时钟周期数。类似地,对于DAC,延迟定义为数字信号输入DAC的时刻直至模拟输出开始转变这段时间内的 时钟周期数。JESD204及JESD204A标准中没有定义可确定性设置转换器延迟和串行数字输入/输出的功能。另外,转换器的速度和分辨率也不断提升。这些因素导致了该标准的第二个版本——JESD204B。 2011年7月,第二版本标准发布,称为JESD204B,即当前版本。修订后的标准中,其中一个重要方面就是加入了实现确定延迟的条款。此外,支持的数据速率也提升到12.5 Gbps,并划分器件的不同速度等级。此修订版标准使用器件时钟作为主要时钟源,而不是像之前版本那样以帧时钟作为主时钟源。图3表示JESD204B版本中的新增功能。 图3. 第二个(当前)修订版——JESD204B。 在之前的JESD204标准的两个版本中,没有确保通过接口的确定延迟相关的条款。JESD204B修订版纠正了这个问题。通过提供一种机制,确保两个上电周期之间以及链路重新同步期间,延迟是可重现和确定性的。其工作机制之一是:在定义明确的时刻使用SYNC~输入信号,同时初始化所有通道中转换器最初的通道对齐序列。另一种机制是使用SYSREF信号——一种JESD204B定义的新信号。SYSREF信号作为主时序参考,通过每个发射器和接收器的器件时钟以及本地多帧时钟对齐所有内部分频器。这有助于确保通过系统的确定延迟。JESD204B规范定义了三种器件子类:子类0——不支持确定性延迟;子类1——使用SYSREF的确定性延迟;子类2——使用SYNC~的确定性延迟。子类0可与JESD204A链路做简单对比。子类1最初针对工作在500MSPS或以上的转换器,而子类2最初针对工作在500MSPS以下的转换器。 除了确定延迟,JESD204B支持的通道数据速率上升到12.5 Gbps,并将器件划分为三个不同的速度等级:所有三个速度等级的源阻抗和负载阻抗相同,均定义为100 Ω ±20%。第一速度等级与JESD204和JESD204A标准定义的通道数据速率相同,即通道数据电气接口最高为3.125 Gbps。JESD204B的第二速度等级定义了通道数据速率最高为6.375 Gbps的电气接口。该速度等级将第一速度等级的最低差分电平从500 mV峰峰值降为400 mV峰峰值。JESD204B的第三速度等级定义了通道数据速率最高为12.5 Gbps 的电气接口。该速度等级电气接口要求的最低差分电平降低至360 mV峰峰值。随着不同速度等级的通道数据速率的上升,通过降低所需驱动器的压摆率,使得所需最低差分电平也随之降低,以便物理实施更为简便。 为提供更多的灵活性,JESD204B版本采用器件时钟而非帧时钟。在之前的JESD204和JESD204A版本中,帧时钟是JESD204系统的绝对时间参照。帧时钟和转换器采样时钟通常是相同的。这样就没有足够的灵活性,而且要将此同样的信号路由给多个器件,并考虑不同路由路径之间的偏斜时,就会无谓增加系统设计的复杂性。JESD204B中,采用器件时钟作为JESD204系统每个元件的时间参照。每个转换器和接收器都获得时钟发生器电路产生的器件时钟,该发生器电路负责从同一个源产生所有器件时钟。这使得系统设计更加灵活,但是需要为给定器件指定帧时钟和器件时钟之间的关系。 JESD204——为什么我们要重视它? 就像几年前LVDS开始取代CMOS成为转换器数字接口技术的首选,JESD204有望在未来数年内以类似的方式发展。虽然CMOS技术目前还在使用中,但已基本被LVDS所取代。转换器的速度和分辨率以及对更低功耗的要求最终使得CMOS和LVDS将不再适合转换器。随着CMOS输出的数据速率提高,瞬态电流也会增大,导致更高的功耗。虽然LVDS的电流和功耗依然相对较为平坦,但接口可支持的最高速度受到了限制。 这是由于驱动器架构以及众多数据线路都必须全部与某个数据时钟同步所导致的。图4显示一个双通道14位ADC的CMOS、LVDS和CML输出的不同功耗要求。 图4. CMOS、LVDS和CML驱动器功耗比较。 在大约150 MSP至200 MSPS和14位分辨率时,就功耗而言,CML输出驱动器的效率开始占优。CML的优点是:因为数据的串行化,所以对于给定的分辨率,它需要的输出对数少于LVDS和CMOS驱动器。JESD204B接口规范所说明的CML驱动器还有一个额外的优势,因为当采样速率提高并提升输出线路速率时,该规范要求降低峰峰值电压水平。 同样,针对给定的转换器分辨率和采样率,所需的引脚数目也大为减少。表1显示采用200 MSPS转换器的三种不同接口各自的引脚数目,转换器具有各种通道数和位分辨率。在CMOS和LVDS输出中,假定时钟对于各个通道数据同步,使用CML输出时,JESD204B数据传输的最大数据速率为4.0 Gbps。从该表中可以发现,使用CML驱动器的JESD204B优势十分明显,引脚数大为减少。 表1. 引脚数比较——200 MSPS ADC 业内领先的数据转换器供应商ADI预见到了推动转换器数字接口向JESD204(由JEDEC定义)发展的趋势。ADI自从初版JESD204规范发布之时起即参与标准的定义。迄今为止,ADI公司已发布多款输出兼容JESD204和JESD204A的转换器,目前正在开发输出兼容JESD204B的产品。AD9639是一款四通道、12位、170 MSPS/210 MSPS ADC,集成JESD204接口。AD9644和AD9641是14位、80 MSPS/ 155 MSPS、双通道/单通道ADC,集成JESD204A接口。DAC这方面,最近发布的AD9128是一款双通道、16位、1.25 GSPS DAC,集成JESD204A接口。 随着转换器速度和分辨率的提高,对于效率更高的数字接口的需求也随之增长。随着JESD204串行数据接口的发明,业界开始意识到了这点。接口规范依然在不断发展中,以提供更优秀、更快速的方法将数据在转换器和FPGA(或ASIC)之间传输。接口经过两个版本的改进和实施,以适应对更高速度和分辨率转换器不断增长的需求。展望转换器数字接口的发展趋势,显然JESD204有望成为数字接口至转换器的业界标准。每个修订版都满足了对于改进其实施的要求,并允许标准演进以适应转换器技术的改变及由此带来的新需求。随着系统设计越来越复杂,以及对转换器性能要求的提高,JESD204标准应该可以进一步调整和演进,满足新设计的需要。 关于世健 ↓↓↓ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3测速代理_同步BUCK降压变换器源极寄生电感对开关性能影响

同步BUCK降压变化器是非常经典的一种电源结构,其上、下管分别于工作在不同的状态,其中,上管工作在主开关状态,漏极的电流由漏极D流向源极S;下管工作在同步整流状态,漏极的电流由源极S流向漏极D。因为上、下管工作的状态不同,所以,它们的开关特性也不相同。 通常,上管为硬开关工作状态,具有导通损耗和开关损耗;下管为软开关工作状态,只有导通损耗,但是由于下管的寄生二极管在死区时间内会导通续流,因此,下管的寄生二极管在死区时间内具有导通损耗,同时具有二级管的反向恢复损耗。   功率MOSFET的寄生参数模型如图1所示,其中,G、D、S分别为封装好的器件外部的栅极、漏极和源极,G1、S1分别为内部器件的栅极、源极,LD为漏极的封装电感,LS为源极的封装电感,LG为栅极的封装电感,RG为内部的栅极电阻总和。 图1:功率MOSFET的寄生参数模型   电感中流过变化的电流时,其产生的感应电动势会抑制这种电流的变化。如图2左边所示,电感中流过的电流从A到B随时间变大,那么产生的感应电动势会抑制电流从A到B的变大,感应电动势对应的方向为:上正下负。同样,若电感的电流随时间降低,感应电动势对应的方向为:上负下正。 图2:电感的感应电动势 源极的封装电感LS同时在主功率回路和栅极的驱动回路中,上、下管由于漏极的电流方向不同,那么,LS对于开关特性的影响也不同,下面分别进行分析。   1、上管源极寄生电感对开关性能的影响   上管工作于主开关状态,漏极的电流由漏极D流向源极S,上管在开通的过程中,ID的电流从0开始增加,LS的电流也是从0开始增加,LS的感应电动势VLS阻止其电流的增加,感应电动势VLS方向为:上正下负。 图3:上管源极寄生电感的开通特性及波形 VGS=VG1S1+VLS+VRG+VLG 其中,VGS:外加的G、S电压; VG1S1:内部实际的G1、S1的电压; VRG:栅极驱动电阻的电压; VLG:栅极寄生电感的电压。 VG1S=VG1S1+VLS   因此,最内部VG1S1的电压低于VG1S:VG1S1<VG1S,相当于源极封装电感LS的感应电压降低Ciss的充电速度,也就是降低上管的实际开通速度,上管的开通时间变长,实际开通速度变慢,开通损耗增大。 同样,在关断的过程中,在LS上的感应电动势VLS的方向为:上负下正,最内部VG1S1的电压高于VG1S:VG1S1>VGS,LS的感应电压导致上管的实际关断速度变慢,关断时间变长,关断损耗增大。 图4:上管源极寄生电感的关断特性   2、下管源极寄生电感对开关性能的影响   下管工作于同步状态,漏极的电流由源极S流向漏极D。上管关断后,下管在开通的过程中,ID的电流从0开始增加流过寄生的二极管,LS的电流也是从0开始增加,LS的感应电动势VLS阻止其电流的增加,在LS上的感应电动势VLS的方向为:上负下正。 VG1S=VG1S1-VLS 在LS的电流增加到输出电流IO之前,开通下管,最内部VG1S1的电压高于VG1S:VG1S1>VG1S,相当于下管实际的开通速度变快,开通时间变短,寄生二极管导通时间变短,二极管导通损耗降低。只要在二极管增加到输出电感电流IO之前,开通下管,LS就有加速下管开通的作用。 图5:下管源极寄生电感的开通特性 如果二极管电流增加到输出电感电流IO之后、也就是二极管完全完成换流之后,再开通下管,LS的电流基本上保持不变,LS的感应电动势VLS为0,LS对下管的开通速度基本上没有影响。   相应的,下管在关断的过程中,在死区时间内,电流从沟道转移到寄生二级管,LS的电流维持不变,在这个时间段,对下管的关断速度几乎没有影响。如果下管关断的速度特别慢,在二极管的电流增加到等于输出的电感电流之前,上管开始开通,上管电流增加,下管电流减小,这时,下管的LS感应电压VLS上正下负压,导致VG1S1的电压突然降低,加速开断,从而减小上、下管的短路直通。 下管的LS感应电压VLS会随着负载电流的变化而变化。上、下管同时开通工作在短路直通状态,控制不好发生严重的短路直通,系统会有损坏的威胁,大多系统不会工作在这种方式。   免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!