自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 资源 (4)
  • 收藏
  • 关注

原创 数控CCS

音频端的波纹非常小了,实际用我手上最高灵敏度的耳机听, 听不到底噪。示波器显示的波纹主要集中在50-100Mhz段,这是我下一步要调试的位置。业余时间搞了几个月,终于搞成功了。下面是电子管屏极输出的波纹。

2025-03-24 16:03:29 146

原创 怎么利用DeepSeek进行PCB设计?

然后,在EDA里面将主要器件的位置放好,这个时候可以截图向DS询问布局是否合理,DS通常会建议你某些器件之间的极限尺寸,比如晶振的距离等等。DS对原理图的识别并不是很好,很多电路结构DS是无法识别出来的,因此,对于原型电路,还是用LTSpice这类仿真软件来仿真吧,但是在进行详细设计,可以让DS参与,并给与细节上的建议,比如,询问DS关于PWM的降噪措施,告诉DS关于MCU和目标芯片的信息,然后你的设计目标,比如我告诉DS我需要实现CCS在负载上最多不超过1mVpp的噪音波纹,然后让DS给出建议。

2025-03-11 17:45:36 490

原创 DeepSeek一本正经的打胡乱说。。。

事实证明,AI用于电路设计还是很菜鸡,把原理图、layout发给它,还是给我一本正经的打胡乱说,spp02n60c3给我说成24A电流。pwm信号是运放发出的。

2025-03-05 12:45:50 106

原创 关于高速运放的一些教训

之前用了ADA4807这款运放做基准电压的滤波,我看到手册上写的,需要将运放下面的覆铜,包括地平面,电源平面全部挖空,于是我就这么干了,做好板子之后,测试发现基准电压抖动很厉害,大概是500uVpp,按手册基准电压芯片的手册,这个电压最大波纹不会超过10uVpp,用示波器查看,发现在100Mhz以上有强烈的信号,大概在120Mhz以上,示波器带宽受限,只能看个大概。这让我非常的奇怪,一切都按手册在做,结果却不理想。重新做了板子之后,问题得已解决。结论:是否挖空高速运放下面的覆铜,取决于运放的功能。

2025-03-04 13:24:48 117

原创 是否要分离数字地和模拟地?

前段时间一直在弄MCU控制灯丝电流的伺服电路,之前的设计在测试种发现一个非常典型的情况,就是I2C的电平升降,严重的干扰了基准电压的精度。因为之前的设计,把Ina226电流采样和基准电压的相关电路全部放在一个板子上,然后我在内层1设置了他们的共地,因此,问题就出来了,打样之后,测试发现,基准电压有着非常恐怖的跳动。所以,我改变了策略,将内层1作为模拟地,内层2作为数字地,然后在模拟地和数字地连接点,挂上Vcc到共地的电容10uf+100nf。重新打样之后,问题解决,得到了非常干净的基准电压。

2025-01-26 10:50:40 196

原创 Jsonlizer,一个把C++各类数据转成 Json 结构体的玩意儿

这段时间突发奇想,觉得可以弄一个Json和C++各种数据类型互转的工具,因为Json在进行数据储存的时候,有一些先天的优势,传统的C++的序列化方式是将数据序列化到流数据里面,而流数据是典型的串行结构(或则说是一维结构),因此,流数据对数据的位置特别的敏感,一旦序列化的元素有调整,就会导致原来存储的流数据完全失效。这一点在游戏开发时非常的麻烦,我们不得不将各个接口进行拆分,让接口对应其独自的流数据,做到局部的隔离。我能利用的,可能仅仅是一部分最基本的,被称为 trait 模板代码。

2024-12-27 14:45:58 1111

原创 日狗的告诉我100hz和200hz合成了50hz。。。

2024-12-18 12:34:58 116

原创 INA226 在连续采样的模式下的缺陷

这几天在调试INA226的时候发现了一个很麻烦的bug,我使用了INA226采集完成后通过Alter Pin通知MCU,MCU则通过中断采集数据的方式,开始的时候我使用的是连续模式,INA226在连续模式下,能在每次完成采样之后通知MCU,但是这个地方出现了一个BUG,在连续采样一段时间(大约10秒上下)之后,Shunt Voltage 和 Current 寄存器读出来的数据全是负数!代码是非常的简洁的,就是读取06H寄存器,获得Alter Pin的状态,然后根据具体情况做处理。

2024-12-09 11:01:50 405

原创 树莓派PICO使用INA226测量数据,及获取数据的方式(使用alter和中断)

而event则监控下拉事件,因为INA226的Alter Pin是开漏,因此,必须先把GPIO拉高,稍微麻烦点就是要设定一个回调函数入口,但是有一点必须提醒的是,中断仅仅是中断,仅仅用于处理数据接收,不能用来做非常复杂的事情,这种情况非常类似于多线程环境下的编程,因此,数据必须有临界区的保护,在中断程序处理了数据采集之后,退出临界区,并通过信号量通知主循环来处理数据。另外,当Alter pin被触发的时候,06H内也存储了触发的原因,包括三种:采样完成(设定了采样通知),警报(设定了警报),数据异常。

2024-12-06 12:40:55 1279

原创 UE5 不同的编译模式下,module的组织形式

但是问题来了,这个方法只适合客户端模式,不适合编辑器模式!因为客户端可以用静态库,而编辑器模式需要的是动态库。告诉我atom的dll不存在。非常的简单,甚至屏蔽了所有依赖。然后在入口的module引用这个库。主要是将module的类型改成External,不参与编译,同时准备好这个库的静态库。后来,迫不得已,我只能将这个atom库改成静态库,不参与编译。这样,就可以编译了。这个地方引入了静态库,再编译,就可以再客户端模式和编辑器模式下一同生效。这个非常的坑,我想了很多办法都没有办法兼容两种模式。

2024-10-27 14:58:38 463

原创 如何将 cryptopp库移植到UE5内

这段时间在折腾UE5.4.4,学习的过程中,准备把cryptopp移植到游戏的工程内,但UE的编译环境和VS的编译环境完全不同,能在VS下顺利编译的cryptopp代码,移植之后,全在报错,错误千奇百怪,我尝试了修复这些错误,结果有一些错是根本修复不了的。1>D:\UEProject\Dawn\Source\cryptopp\code\config_misc.h(121): error C4668: 没有将“CRYPTOPP_GCC_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”

2024-10-06 17:30:48 1170 11

原创 1L4混合电路耳放(玩的第一个直热管)

有了设计的目标,接下来就是选管和设计线路,把淘宝上常见的直热管都翻了一遍,功率直热管非常的贵,而且灯丝电流普遍较大,做耳放实属浪费,因此直接放弃,经过多次筛选之后,一些早期的收音机管落入我的视线,这些管子都是电池供电,普遍电压较小,一般都是1.4V的电压,电流也偏小,大部分都是50毫安的电流,正好是那个时期电池能提供的能量。由于之前做过6V6耳放,虽然声音不错,但6V6是旁热管束射四极管,灯丝电流很大,加之整个电路都是用胆整流,因此,整个6V6系统的功耗非常的高,就几百毫瓦的耳放而言,感觉十分的浪费。

2024-08-22 13:12:08 769

原创 关于有源晶振的坑

板子回来后焊接完所有原件,接到电脑上的时候,发现核心板并没有工作,接到电脑之后没有任何反应。测量晶振的时候,3.3V供电没问题,输出1.5V也没有问题(万用表无法测量频率),当时非常的疑惑,这个核心板的设计并不复杂,甚至可以说非常简单,就是USB,LDO加MCU和NOR Flash,没有复杂的外围设计。在设计起振线路的时候,出于对稳定性的考虑,选择了有源晶振,有源晶振通常有4个脚,PIN2一般是接地,PIN3是输出,PIN4是接VCC,这三个脚没有任何异议,但是第一脚,非常麻烦。

2024-08-13 11:53:59 549

原创 http 协议中GET如何传递参数(Query String)?

之前看过数数提供的开发包,因为服务器用的是C++,而数数提供的C/C++开发包简陋的吓人,简单的看了一下代码,发现这些SDK在内存,临界区管理,多线程管理上没有做任何优化,如果直接使用,不仅增加了服务器的风险,还降低了服务器的性能,所以决定使用数数的POST接口来传递数据,但是需要自己手搓一个Http Connection来实现Http的访问。由于之前搞Web Scoket的时候,已经做了一些Http协议的基础代码,包括请求行,状态行,请求头,响应头等,所以基本上就是在这些基础上进一步的封装。

2024-07-19 11:06:54 800 1

原创 树莓派PICO使用INA226测量电流和总线电压(4)

这篇文章将写一些题外话,关于INA226的地址,如果不清楚开发板的I2C地址,可以通过总线扫描的办法来获取开发板设定的地址。我的开发板的地址就是0x40。

2024-07-14 13:59:18 424

原创 树莓派PICO使用INA226测量电流和总线电压(3)

上一篇文章我们讲了如何测试电流,但是INA226有一个非常典型的问题,那就是误差比较大,因为采样电阻非常小,我的开发板用的是100mΩ的采样电阻,在设定中我也用的是这个采样电阻值,但事实上,测试得到的偏差会超过10%,因为采样电阻本身有误差,焊接的工艺,焊锡膏的成分也有带来误差,甚至PCB上的布局和连线也会导致误差!所以,在实际场景中,想要达到比较精确的值,这个采样电阻,绝对不适合采用过小的电阻,比如10mΩ左右的电阻,因为积累误差甚至会超过电阻本身的的值。

2024-07-14 13:52:24 734

原创 树莓派PICO使用INA226测量电流和总线电压(2)

依照手册给出的公式,我们必须人为的指定一个最大的测量电流,然后用这个值除以 32768,即2的15次方,得到的值,就是电流的最低有效位。所以,在设计线路的时候,尽可能将采样电阻贴紧INA226,减少线路带来的误差。这个值非常的关键,因为它就是ADC能提供的分辨率,在手册里,提供了如何计算校准值的方法,其中最关键的就是计算LSB。上一篇文章里,我们讲了如何设置配置寄存器(0x01),在测量电流之前,还需要设置校准寄存器(0x05),校准寄存器非常关键,如果不设置这个寄存器,INA226是不会工作的。

2024-07-13 12:54:17 755

原创 树莓派PICO使用INA226测量电流和总线电压(1)

接下来就是选择参数,配置好平均次数,采样时间,模式等,得到一个uint16_t的值,这个值不能直接传递给INA226,因为I2C通讯传递的是大端数据,即高位在前(字节为单位),而PICO使用的是小端数据,所以,需要对数据进行一次位变换。在测量之前,必须先设置好两个寄存器,即0x01和0x05,第一个是配置寄存器,需要设置INA226的工作状态,第二个是校准寄存器,在校准寄存器设置之前,INA226是不会进行测量的。给测试板接上输入电源,简单的测量了一下各个位置的电压,没问题后,接上电脑开始写代码。

2024-07-13 11:41:05 2391

原创 最简 INA226 写寄存器的代码

改写 0x00 寄存器的初始值,并获取打印这个寄存器的值。

2024-07-08 22:54:38 425

原创 PICO 读取 INA226 寄存器的最简代码

读取INA226 的0x00号寄存器,获取基础设置。

2024-07-08 21:33:24 138

原创 RP2040 开发,用 Arduino 通过 ADC 获取电压测量数据

这两天测试了一下如何通过 RP2040 的内置 ADC 获取一个待测量的电压数据,RP2040 内置了4路ADC,分辨率是12bit,也就是说,可以获取4096阶的变化量,但第4个 ADC 已经用于测量芯片的内部温度,所以实际能用的仅有3个 ADC。但由于片内LDO的电压并不是标准的3.3V,所以,实际测量结果会有误差。这个测量电路非常简单,额外加一个电位器就行了,电位器的两端分别接3.3V,和A Gnd,版上能很容易找到3.3V的接口,接地要接AG,电位器中点接A0那个端口,就是GPIO 26。

2024-06-27 15:57:24 915

原创 Arduino 开发 RP2040 时如何使用Adafruit TinyUSB 进行虚拟串口通讯

最近在琢磨用RP2040开发灯丝控制电路,买回来一块RP2040的开发板,在琢磨需要的功能的时候,发现一些问题,问题的起源是想用电脑控制RP2040,设想是通过usb通讯,查了一下,找到Adafruit TinyUSB这个库可以做CDC(通讯),Arduino 的库内可以找到Adafruit TinyUSB这个库,也可以下载,但是无法使用,因为编译会出现大量的报错。这让我非常费解。因为我是基于Adafruit 提供的例子来编译的。按道理能提供例程,至少不应该有这种bug。后来我仔细看了Adafruit Ti

2024-06-24 13:54:13 1354

原创 来自电力电容的降维打击

我找了一圈电解电容,通常用于音频(分频器)的轴向电容耐压也就100V,其他的耐压高的试了几个,效果都很差,听起来怪怪的。于是我开始在海鲜市场准备找一些油电容来试试,各种品牌的都买了一些,直到有一天我找到一对Electronicon 的 E62 系列的油电容,容量合适,42uf,耐压1100V,属于电力电容,风机上拆下来的,价格很便宜,我对这个电容本身不是很在意,以为和之前的那些油电容差不多,结果一测试,让我大吃一惊:100HZ D值 0.0002,1KHZ D值0.0009,10KHZ D值0.0022!

2024-06-17 11:48:26 319

原创 Error code 64 - ERROR_NETNAME_DELETED

网络连接问题有多种原因,但通常是由于网络适配器不正确、交换机设置不正确、硬件故障或驱动程序问题导致的。一些连接症状是间歇性的,不能明确指出这些原因中的任何一个。

2024-05-21 17:01:00 469

原创 使用EO和nginx之后,服务器如何获取客户端真实IP地址

X-Forwarded-For 记录着从客户端发起请求后访问过的每一个 IP 地址,第一个是发起请求的客户端本身的地址,各 IP 地址间由“英文逗号+空格”(那么,只需要获取 X-Forwarded-For 这个头,并且用逗号来拆分字符串,第一个子串就是客户端的 IP 地址。,如果是直接访问的请求,可能是客户端真实的 IP 地址,但是中间若经过了层层的代理,就是最后一层代理的 IP 地址。从字面看 X-Real-IP 代表的是客户端请求真实的 IP 地址,这个参数。

2024-05-14 16:31:11 371

原创 关于企鹅云

千万别用成都机房的云服务器!

2024-05-14 10:32:00 335

原创 ERROR_CONNECTION_ABORTED 1236

意思就是,从本质来讲,无论121,还是1236,都是由于连接中断或超时而返回的错误码。

2024-05-09 17:52:02 229

原创 2SC5200 NPN Bjt 的spice模型

BF = 220+ NF = 1+ IKF = 50+ BR = 28+ NR = 1+ VAR = 10+ IKR = 2+ NC = 1.5+ RB = 0.8+ FC = 0.5+ XTF = 10+ VTF = 2+ ITF = 1+ PTF = 0+ XTB = 3+ TRC1 = 0.ENDS。

2024-05-02 20:41:24 299

原创 架设WebSocket的最后一环,如何设置好nginx反向代理

WebScoket都已经完工快一个月,经过一段时间的测试,公司还是准备把服务器换到鹅厂,用EO来解决CDN内容分发和DDOS防护问题,由于EO并不支持URL 路径转发,只支持转发到一个站点的80或则443端口,如果想做路径分发,就必须用负载均衡,这个服务并不便宜,迫不得已,我只能在服务器上用Nginx来做反向代理。我仔细观察了发生故障的时候的网络请求,一个获取版本号的URL得到了500错误,这让我很惊讶,但我很快注意到网页下面有nginx的版本号,证明这个是nginx返回的错误。

2024-04-30 13:07:50 846 2

原创 直热管灯丝的噪音

地线噪音是一方面,另一个方面就是元器件本身带来的噪音,特别是稳压管带来的雪崩噪音!之前将灯丝电路集成到板上之后,由于OPA1612是双运放,灯丝伺服电路只需要单运放就可以了,多余的运放我不忍浪费,同时出于音质效果考虑,将另外一个运放用作电子管的固偏,以取消掉阴极电阻,但是最终的效果却发现电路产生了一种固有噪音,像呼气声,沙沙声,开始不解,将几乎所有元件都换了一次,最终发现,如果给运放-输入产生偏压的电阻上增加一个电容,就可以解决这个噪音,于是分析电路发现,这个电阻的噪音来源是AZ431产生的基准电压!

2024-04-19 16:08:29 1341

原创 WebSocket 对于手游的意义

因为WebScoket是HTTP协议的升级,因此,现在不少CDN服务提供商支持WebScoket,那么对于网络上常见的DDOS攻击,CC攻击,不少CDN提供商是带了DDOS,CC攻击保护的,意思就是,如果采用WebScoket+CDN的方案,面对这类网络攻击,你不需要额外花钱去买高防。但好处显而易见,通过CDN做隔离,服务器的真实IP不用暴露,所有的通讯都走CDN,一般的DDOS或则CC攻击在CDN这一层就被拦下,包括一些入侵服务器的行为,在无法得到服务器真实IP的情况下,攻击就无法实施。

2024-04-03 17:45:57 739

原创 .net 实现的 Webscoket 对象的一些细节和疑问

这两天服务器和客户端进行了webscoket的联调,在和C#的webscoket实现联调的过程中,发现一些有趣的事情。在我自己C++的实现中,webscoket对上层应用而言是完全透明的,webscoket 只是一个传输协议,用户对此不需要有任何关注,一切都自动进行,包括连接,握手升级,帧切割,帧拼合,控制帧管理,心跳这些,对外完全透明。

2024-04-03 11:19:36 1347

原创 webscoket 中的 mask 细节

我们看到,这个写的很清楚,掩码是给 payload 进行加密用的,这个位置会产生一个误解,就是,如果我没有 payload 的时候,是不是可以不需要掩码?比如一个 ping 帧,不带任何数据是否不需要mask?因此,你可以看到客户端发送到服务器的ping,实际上是带了掩码的,哪怕这个ping没有任何payload 数据。这段明确说了,客户端发送到服务器的所有帧都。有掩码,而服务器发送到客户端的所有帧都。如果违背了这个规则,就。以1002错误关闭连接。

2024-04-02 16:57:35 763

原创 websocket 中掩码的相关代码

代码很简单,就是不断循环的用掩码异或一次原始数据。

2024-04-02 13:38:19 166

原创 聊聊websocket opcode中的text / binary模式

怎么解读帧都是应用层的事情,用什么格式来理解帧的内容,不就是subprotocol干的事情吗?这儿应该有更方便,或则说更直接的方式来处理,理清楚思路之后,我决定将opcode交给应用层来处理,应用层必须注册 subprotocol,提供具体的帧解析的接口,握手的时候,如果没有指定subprotocol,那就采用一个通用的dummy来处理帧。但这个区分并没有规定文本类型有类似于http协议中空行表示结束的说法,而且长度也是由帧头记录,也就是说,单纯从协议格式上来讲,这个区分,没有任何实际的含义。

2024-03-29 11:41:06 957

原创 websocket 内的操作码fin和opcode

在 webscoket 中,控制帧有一个限定:控制帧不允许分段(5.4. Fragmentation),意思就是,控制帧只允许作为一个完整的帧一次性发送。所以我们在处理webscoket帧的时候,如果Fin位为0,则不处理,将帧放入一个缓存,发现 Fin 位为1 的时候就可以处理帧了,根据帧的opcode来判断,如果是控制帧就直接处理,如果连续帧,就将之前缓存的帧拼接成一个完整的payload即可。其中,0,1,2是正常传输数据用的代码,8,9,A是标准的控制帧。rsv1 - 3 不用考虑,被保留的位。

2024-03-25 18:46:29 1655

原创 http 协议的有效字符

qdtext:除了引号 ” 之外的TEXT (即任何 8 位字节,除开控制字符,但包括CR LF HT) quoted-pair:(反斜杠后跟 [0, 127] 范围内的任何值)。但是,实际上,几乎所有的web服务器都不会接受除了CR LF HT之外的控制字符,以及大于等于127的字符(即几乎所有不可读的字符都不在范围之内)。如果研究完协议的描述,可以看到,所有的8字节ASCII码事实上都在标准的允许之内!token:除开控制字符和分隔符的 us字符 [0, 127];

2024-03-20 16:04:43 506

原创 websocket 中 request-line 中的URI编码问题

websocket, nginx,client sent invalid request while reading client request line,

2024-03-20 11:14:09 475

原创 websocket 升级协议时的协议切换点

websocket 的 rfc6455 标准中提到了协议升级,从http协议升级到websocket协议,用的办法是在http的request header中包含Connection: upgrade 和 Upgrade: websocket 以及其他验证相关的头。但这儿有一个小问题,在rfc6455中并没有明确的提到,就是服务器在接收到http请求头之后,如何从文本格式切换到帧格式?而websocket由于是请求/响应协议升级,没有附带的payload,因此,可以确定的是,在收到。

2024-03-19 11:07:25 499

原创 Websocket 中的 sub-protocol 和 extensions 的关系

Websocket 的 Sub-protocol 和 Extensions

2024-03-15 15:13:41 871

OPA1612中文说明书

OPA1612中文说明书

2024-11-11

如何设计电子管 300B 单端

非常优秀的文章。设计细节拉满,甚至讲了耳蜗的结构,以及为什么偶次谐波会让人感觉好听。

2024-10-16

正确使用铝电解电容的注意事项

正确使用铝电解电容

2024-08-08

TI 的 ina228 中文资料

TI 的 ina228 中文资料

2024-07-15

Compositor.rar

MP3 MP4播放器排序软件,不用安装,适用于不见不散等播放器。 相信不少的朋友喜欢听MP3,但是有些在电脑上顺序排列的歌曲放到MP3上之后往往顺序不是令人满意,我今天找了一款小巧的排列工具推荐给大家,确实不错的。

2020-09-05

intel_parallel_studio_xe_2013_update_3 license file

亲测可用。第一个可用于update3的文件

2013-06-20

三位一体2 的全套shader

Trine2 三位一体2的全套shader,压缩包1MB,包括延迟光照,水流效果,水下效果,次表面散射等特效。具有较高的参考价值。

2012-03-16

延迟光照的全套SHADER

英雄无敌6 的全套shader代码,包括延迟光照,水流效果,瀑布效果等等,可以参考。

2011-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除