xutong

  • 2022-08-08
  • 发表了主题帖: 汉堡记录

    本帖最后由 xutong 于 2022-8-8 23:35 编辑 上海七宝宝龙 惠州方直 上海虹桥 虹桥天地-1 虹桥机场

  • 回复了主题帖: 城市被冰封了。。。

    看起来很漂亮

  • 回复了主题帖: DIY风扇PK赛重磅开启!想修炼电源的同学请进~~

    okhxyyo 发表于 2022-8-8 09:38 这个有意思,可以搞起来搞起来!
    看看是否有点业余时间

  • 回复了主题帖: DIY风扇PK赛重磅开启!想修炼电源的同学请进~~

    1.用半导体制冷片+风扇降低温度,吹着人这一边是冷的,热的向后吹 2.温度检测联动,手臂上戴个测温手环,温度低于某值就不在吹了 3.水管环绕风扇,半导体制冷片放两边,一边是加热,一边是散热,想吹冷风吹冷风,想吹热风吹热风 5.环境温度检测

  • 回复了主题帖: 零基础学习 Python,有好的建议或学习方法么

    给自己定个目标要做个什么样东西, 做东西时候会遇到各种问题,经常搞搞也就熟悉了

  • 发表了主题帖: ADX122驱动-凭空捏造

    之前的章节里面我们写了adx112的驱动,adx122的驱动咱们还没写过,adx122是adx112的升级版本,升级成了20bit,并且内部自带恒流源,对于ptc/ntc测温会有比较好的帮助,省去了外围电路的偏置,adx122的第一页如下⬇️ 大概是能看的出来兼容adx112的,采用的是spi的接口,在这个章节我们主要讲是如何编写驱动程序,所以先跳过一些重要信息。 既然采用spi接口我们就看看是哪种SPI,三线或者四线,上升沿写数据还是下降沿写数据,从手册的firgure2看是下降沿写数据,下降沿读数据,见下图⬇️ 在数据手册的描述中找到了,是下降沿读数据,和下降沿写数据的。如⬇️ 看下寄存器配置顺序,如下 先大致整个引脚定义,咱们先开始写下spi时序,大概测试打印正常, Spi 读写大致完成,代码如下 #include <stdio.h> /* define pin*/ #define mosi_h printf(" mosi h ") #define mosi_l printf(" mosi l ") #define cs_h printf("cs h\r\n") #define cs_l printf("cs l\r\n") #define sclk_h printf(" sclk h ") #define sclk_l printf("sclk l\r\n") #define hal_delay(x) printf("delay_%dms \r\n",x) //declare function int32_t SPI_Write_Read(int32_t Data); int main() { int32_t rdata; rdata=SPI_Write_Read(0x55aaffff); printf("%x",rdata); return 0; } int32_t SPI_Write_Read(int32_t Data) { int8_t i; int32_t rdata=0; //supporting role int32_t misodata=0x0000aaaa; int8_t miso=0; //initial pin state sclk_h; mosi_l; cs_h; hal_delay(1); //start transferring data cs_l; for (i = 0; i < 32; i++) { sclk_h; if(Data&0x80000000) { mosi_h; } else mosi_l; // supporting role miso=misodata&0x00000001; misodata>>=1; // Equivalent to rdata=rdata|miso rdata|=miso; rdata<<=1; sclk_l; Data<<=1; } return rdata; }   效果则如下所示 /Users/xutong/CLionProjects/untitled/cmake-build-debug/untitled sclk h mosi l cs h delay_1ms cs l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi l sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l sclk h mosi h sclk l aaaa0000 Process finished with exit code 0 符合我们的预期,但是adx122需要80个时钟,这边还是不够的,这里只有32个时钟,打印的数据带入excel 显而易见这里得出的结论就是55aaffff就是我们写的值,回读的aaaa0000也是我们写入的值,所以在这一步是没有问题的,继续向下⬇️ 80个时钟要补全的东西有很多,若是要回读的话。我们就不能直接用int32-t了。 So 我们要用指针,定义一个数组,将读回来的数据传入数组,在返回整个数组,使用指针去接收。 #include <stdio.h> /* define pin*/ #define mosi_h printf(" mosi h ") #define mosi_l printf(" mosi l ") #define cs_h printf("cs h\r\n") #define cs_l printf("cs l\r\n") #define sclk_h printf(" sclk h ") #define sclk_l printf("sclk l\r\n") #define hal_delay(x) printf("delay_%dms \r\n",x) //declare function int32_t* SPI_Write_Read(int32_t Data); int main() { int32_t *rdatas; rdatas=SPI_Write_Read(0x55aaffff); printf("%x\r\n",*rdatas); printf("%x\r\n",*(rdatas+1)); printf("%x\r\n",*(rdatas+2)); return 0; } int32_t* SPI_Write_Read(int32_t Data) { int8_t i; static int32_t rdata[11]; //supporting role int32_t misodata=0x0000aaaa; int8_t miso=0; //initial pin state sclk_h; mosi_l; cs_h; hal_delay(1); //start transferring data cs_l; for (i = 0; i < 32; i++) { sclk_h; if(Data&0x80000000) { mosi_h; } else mosi_l; // supporting role miso=misodata&0x00000001; misodata>>=1; // Equivalent to rdata=rdata|miso rdata[0]|=miso; rdata[0]<<=1; sclk_l; Data<<=1; } rdata[1]=0x1fffffff; rdata[2]=0x2fffffff; rdata[3]=0x3fffffff; rdata[4]=0x4fffffff; rdata[5]=0x5fffffff; rdata[6]=0x6fffffff; rdata[7]=0x7fffffff; return rdata; }   在这里看到和我们的设定是一样的⬇️ 因为miso在这里我们是模拟的,是倒着来的看起来有点奇怪,实际用芯片没这样的问题。 看看模拟的效果。 SPI的大概驱动代码就整完了,自己再去对寄存器就好了。 #include <stdio.h> /* define pin*/ #define mosi_h printf(" mosi h ") #define mosi_l printf(" mosi l ") #define cs_h printf("cs h\r\n") #define cs_l printf("cs l\r\n") #define sclk_h printf(" sclk h ") #define sclk_l printf("sclk l\r\n") #define hal_delay(x) printf("delay_%dms \r\n",x) //declare function u_int32_t* SPI_Write_Read(u_int32_t Data); int main() { u_int32_t *rdatas; rdatas=SPI_Write_Read(0x55aaffff); printf("%x\r\n",*rdatas); printf("%x\r\n",*(rdatas+1)); printf("%x\r\n",*(rdatas+2)); return 0; } u_int32_t* SPI_Write_Read(u_int32_t Data) { int i; static u_int32_t rdata[4]={0x00000000,0x00000000, 0x00000000,0x00000000}; //supporting role u_int32_t temp; u_int32_t misodata=0x10000001; u_int32_t miso; //initial pin state sclk_h; mosi_l; cs_h; hal_delay(1); //start transferring data cs_l; temp=0; for (i = 0; i < 32; i++) { sclk_h; if(Data&0x80000000) { mosi_h; } else { mosi_l; } // supporting role miso=misodata&0x00000001; misodata>>=1; // Equivalent to rdata=rdata|miso rdata[0]<<=1; rdata[0]|=miso; sclk_l; Data<<=1; } //rdata[1] misodata=0x80000008; // for (i = 0; i < 32;i++) { sclk_h; // supporting role miso=misodata&0x00000001; misodata>>=1; // Equivalent to rdata=rdata|miso rdata[1]<<=1; rdata[1]|=miso; sclk_l; } misodata=0x20000002; //rdata[2] for (i = 0; i < 16; i++) { sclk_h; // supporting role miso=misodata&0x00000001; misodata>>=1; // Equivalent to rdata=rdata|miso rdata[2]<<=1; rdata[2]|=miso; sclk_l; } cs_h; return rdata; }   刚好80个沿 今天就先聊到这了,

  • 2022-08-06
  • 回复了主题帖: 升压电路

    fb脚分压值是固定不变的, rfb1 上分压电阻的相对值大了,那么输出电压就相对减小, rfb1上分压电阻的阻值小了,那么输出电压也就自然小了 不知楼主理解了没

  • 回复了主题帖: 【求助】各位电子工程师大大们,你们上头一回去女方家提了什么啊?

    等你分享经验

  • 回复了主题帖: 现在有什么好的大电流传感芯片吗

    ti有10a左右的霍尔 各大厂商都有 仪放

  • 回复了主题帖: 观电路—负载开关 load switch

    bigbat 发表于 2022-8-6 11:14 好像大功率的MOS还基本上都是NMOS,真是PMOS不多见
    是的,pmos用的不是特别多,一般ldo里面才pmos

  • 2022-08-05
  • 发表了主题帖: 观电路—负载开关 load switch

      在很多电路中,一个电源可能对应多个负载,有时候要切换负载的供电,有时候要对负载进行限流,通常的方法可以用PMIC去操作不同的负载,也可以使用负载开关去操作。负载开关有正压的也有负压的,负压的比较少。分立器件搭一般都是用Pmos去搭建。典型的电路如下⬇️ 结构1 结构2 使用PMOS构建有个好处可以不用自举,若是使用NMOS构建则需要自举电路对MOS的GS提供一些偏置,PMOS的缺点是比较难买,我知道的型号apm4953可能主要用在液晶电视上面,可能是学修电视机的课上遇到的,时间过于久远已经忘记。 在上面的电路中,当下面的NMOS闭合的时候VIN=VOUT当NMOS断开以后,VOUT将被切断。 PMOS就是GS是负的电压时候导通,查的手册如下⬇️ 看到在VGS等于-10V时候此时他的rdson最大约为60mR,我们在查看下图,也是在40~60mR之间 这个东西对于负载开关就如同不同电流下LDO的Drop一样。越小他的DROP越小,可以参考之前写的LD50x的仿真教程。   回到正题,使用PMOS架构1和PMOS架构2看起来区别不大,为什么要多加个电容, 咱们先来看架构1,以下是架构1负载开关的仿真图,可以看到负载开关1在打开的瞬间电流是非常大的,尤其在容性负载的场合将会造成超级大的电流导致mos管烧管 使用架构2时候,可以看到因为在gd上添加了电容,导致gs的变化速度减慢,有效的防止了负载电流突变导致mos管瞬间承受过高的电流应力,对mos管比较友好。 但无论是架构1还是架构2都没有办法做到过流保护,因为其真的太简单了,无法做到任意限流或者过流保护,于是乎我在这里推荐CSA23,详情如下所示⬇️ 之前我们是写过CSA23的行为模型的,所以我们直接用csa23的行为模型去构建任意过流保护电路。 限流150mA左右,测试效果如下图。 下面是开放限流的效果 仿真代码如下: * C:\Users\asa0016\Documents\LTspiceXVII\lib\sym\AutoGenerated\Draft9.asc M1 N005 VGate IN IN AO6407 R1 IN VGate 100k M2 N008 N007 0 0 Si7336ADP V1 VCC 0 15 Rser=0.1 R2 OUT 0 10 V2 N007 0 PULSE(0 10 1m 1u 1u 20m 100m) C1 OUT 0 10?R3 VGate N008 1k C2 N005 VGate 0.2?XU1 N005 OUT N006 0 0 CSA23 R4 N005 OUT 2m XU2 N004 N001 VCC VEE N003 LT1001 R5 N001 N002 2k C3 VGate N001 10n V3 0 VEE 15 Rser=0.1 V4 N002 0 1 R6 N004 N006 10k D1 N003 VGate 1N4148 V5 IN 0 5 Rser=0.1 .model D D .lib C:\Users\asa0016\Documents\LTspiceXVII\lib\cmp\standard.dio .model NMOS NMOS .model PMOS PMOS .lib C:\Users\asa0016\Documents\LTspiceXVII\lib\cmp\standard.mos .tran 80m .lib D:\LIB\csa2302.lib .lib LTC.lib .backanno .end   参考文档: Analogysemi csa2302,ld50x, ti slva716a integrated load switches versus discrete mosfets mosfet datasheet apm4953 xuyuntong 公众号 LTspice仿真合集

  • 回复了主题帖: LTspice仿真教程——xutong

    okhxyyo 发表于 2022-8-4 14:59 收到~~节日快乐呀
    女朋友表示气死了

  • 回复了主题帖: RTD电路设计

    小小莫 发表于 2022-8-5 15:00 总结到位,作为参考我觉得蛮有用的,有时候会忘了它1mA电流的优势
    感谢捧场

  • 回复了主题帖: LTspice(6) 七夕特辑-画个爱心

    soso 发表于 2022-8-5 09:25 太隐蔽了 嘿嘿
    有点过冲

  • 2022-08-04
  • 回复了主题帖: LTspice(6) 七夕特辑-画个爱心

    soso 发表于 2022-8-4 11:38 额 爱心在哪儿?
    波形图里面

  • 回复了主题帖: LTspice仿真教程——xutong

    LTspice 七夕特辑 画个爱心

  • 2022-08-03
  • 回复了主题帖: LTspice仿真教程——xutong

    Wenjun99 发表于 2022-8-3 20:36 感谢,受益匪浅,赞赞,电子趣闻、技术干货、精彩活动、、、、、、、、、、、、、、、、、、、、

  • 回复了主题帖: LTspice(6) 七夕特辑-画个爱心

    女朋友看到都感动哭了

  • 发表了日志: LTspice(6) 七夕特辑-画个爱心

  • 发表了主题帖: LTspice(6) 七夕特辑-画个爱心

    * C:\Users\xutong\Desktop\七夕特辑.asc V1 N006 0 SINE(3 5.20 1000 20u) D1 N007 N005 1N914 R1 N005 0 520k V2 N003 0 SINE(3 5.20 1000 520u) D2 N004 N005 1N914 V3 N002 0 SINE(0 5.20 500 20u) R2 N001 N008 520 D3 N001 N002 1N914 V4 N008 0 2.5 R3 N004 N003 520 R4 N007 N006 520 S1 0 N005 N001 0 520SW .model D D .lib C:\Users\xutong\Documents\LTspiceXVII\lib\cmp\standard.dio .tran 8M .model 520SW SW(Ron=.1 Roff=1Meg Vt=1.5) .backanno .end ​  

最近访客

< 1/4 >

统计信息

已有49人来访过

  • 芯积分:186
  • 好友:--
  • 主题:51
  • 回复:229
  • 课时:--
  • 资源:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言