自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 单片机ADC常见的几种滤波方法

每次采新值时判断:若本次值与上次值之差A,本次无效,用上次值代替本次。适用有较大滞后时间常数和采样周期短的系统,对滞后时间常数小,采样周期长、变化慢的信号不能迅速反应其所受干扰。对递推平均滤波的改进,不同时刻的数据加以不同权重,通常越新的数据权重越大,这样灵敏度高,但平滑度低。克服波动干扰,对温度等变化缓慢的被测参数有良好的滤波效果,对速度等快速变化的参数不宜。若计数器溢出,则采样值替换当前有效值,计数器清0。克服脉冲干扰,无法抑制周期性干扰,平滑度差。

2024-07-19 16:57:40 223

原创 彻底搞定C指针系列

运行一下代码int main()int i = 39;return 0;运行结果:39618561996运行测试代码:int main()int i =30;int *pi;pi = &i;return 0;运行结果:-316014332-31601433230分析上述代码: int *pi;我们使用“int *pi”声明指针变量—— 其实是在 内存的某处声明一个一定宽度的内存空间,并把它命名为 pi。pi = &i。

2024-07-17 22:32:12 850

原创 结构体和联合体的区别

结构体的定义包含了结构体的名称和结构体成员的列表,每个成员都有一个名称和一个数据类型。联合体的定义使用关键字‘union’,后面紧跟联合体的名称和一对花括号,括号中定义了联合体的成员变量,每个成员变量有自己的名称和数据类型。// 注意:联合体的不同成员共享同一块内存空间,赋值一个成员会影响其他成员的值。

2024-07-17 18:46:37 849

原创 静态函数 (static)

关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。[extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……

2024-07-16 22:47:21 261

原创 BAV99W 器件的作用

www.alldatasheet.com一看,原来世界这么精彩,能承受75V电压以及100V冲击,此类封装mini,共有如下4中不同的类型,1位以及2位的所有组合,包括BAL99,BAW56,BAV80,BAV99,还是我们孰知的SOT23-3封装,基本满足了我们所有的设计,那么神奇。同样,当电压低于0V,另一个二级管导通,还是保护电路。最后比较崩溃,在搞一个LCD的电源驱动IC,传说中的MP1530。保护作用:这样信号端的电压如果大于电源,能够泄放到电源,如果小于地为负,泄放到地,使两端电压稳定。

2024-07-16 18:30:00 709

原创 寄存器位操作方法

或者 a &= (~(0x1ff<<15) | ~(0x07<<3));或者 a |= ((0x1ff<<15) | (0x07<<3));//这个宏分为2部分:(x & ~(~(0U)<<(m-n+1))<<(n-1)) >> (n-1)a |= (937<<7);a = a | (0b11111<<3) 或者 a |= (0x1f<<3);

2024-07-15 20:55:42 363

原创 功率继电器【HF46F】

当电源开关打开时,电源电压(PWR_5V)将通过电源开关连接到三极管Q1的基极,使三极管Q1导通。此时,三极管Q1的集电极电压降低,使得2N7002的栅极电压升高,从而使2N7002导通,继电器线圈得到供电,继电器K1吸合。当电源开关关闭时,电源电压(PWR_5V)不再通过电源开关连接到三极管Q1的基极,三极管Q1截止。此时,三极管Q1的集电极电压升高,使得2N7002的栅极电压降低,从而使2N7002截止,继电器线圈失去供电,继电器K1释放。原理图如下,原理图中使用的继电器为HF46F5H,

2024-07-15 19:03:28 233

原创 NMOS和NPN型三极管是不是同一个东西?

NPN型三极管是一种双极结型晶体管,它使用电流控制电流流动的方式工作。它的结构主要包括三个区域:发射极(Emitter)、基极(Base)和集电极(Collector)。其中,发射极和集电极之间形成通道,而基极则用来控制发射极和集电极之间的通道是否导通。N沟道MOSFET是一种场效应晶体管,它利用电压控制电流流动的方式工作。它的结构主要包括三个区域:源极(Source)、漏极(Drain)和栅极(Gate)。其中,源极和漏极之间形成通道,而栅极则用来控制源极和漏极之间的通道是否导通。

2024-07-15 18:34:52 383

原创 SN75176的引脚功能

芯片的主要作用:将串口信号转换成485信号,用于数据传输,撰写代码过程中,需要将2脚 /RE:接收器使能端,3脚 DE:驱动器使能端必须全部使能,相当于这两个引脚接到主控芯片的某个引脚上,这个引脚置1,才能够进行正常的通信。6、7脚 A、B:输入输出总线接口;A为非反相端、B为反相端。2脚 /RE:接收器使能端。3脚 DE:驱动器使能端。1脚 R:接收器输入端。4脚 D:驱动器输出端。8脚 VCC:5V电源。

2024-07-14 21:08:43 112

原创 嵌入式必读的10本书

在C语言领域,它的地位不言而喻,销量已达数百万册,可谓是经典中的经典。但是,如果你的项目越来越庞大,任务多了,要协同工作的事情也变得复杂了,这时候就像你写一封长篇小说,手写字已经hold不住了。读完C primer plus,你已经对C语言比较了解了,可以考虑进一步精进,C语言三剑客是广大C语言学习者必读经典,分别是《C和指针》、《C专家编程》、《C缺陷与陷阱》总的来说,这本书比较适合初学者,因为它的语言幽默风趣,常常用生动的例子来解释概念,相较于其他类似的书籍更具趣味性。

2024-07-11 18:20:05 228

原创 spc5 stdio【串口通信】

【代码】spc5 stdio【串口通信】

2024-07-09 21:13:39 110

原创 CAN通信波形【示波器抓取】

由此可以判断电路板上的CAN通信模块出现故障,需要重点检查CAN芯片是否烧掉,在电路板上电的情况下,发现电路板的CAN芯片发热,在更换CAN芯片的情况下,CAN通信恢复正常。在测试bms系统过程中,在上位机发现无法读取CAN通信,尝试使用示波器抓取CAN通信波形,,去确定CAN通信是否正常。1、将示波器的两个接口(接地和探头)分别接在can总线的两条线(CAN_H和CAN_L)上,上图为正常CAN通信的截图,如果CAN通信异常的情况下,就不会显示波形。做一想要从车上测出can总线上的数据还不太容易。

2024-07-02 21:50:34 301

原创 正点原子系列--串口通信

【代码】正点原子系列--串口通信。

2024-06-30 22:07:56 113

原创 UART和USART的区别

此外,两端的地线需要连接在一起,以确保信号的参考电位相同。USART支持同步模式,因此USART 需要同步始终信号USART_CK,一般在单片机里面同步信号很少使用,所以USART和UART使用方式是一样的,都使用异步模式。在单片机或者嵌入式系统中,UART通常通过芯片上的引脚来连接,例如MCU的TX引脚连接到外部设备的RX引脚,MCU的RX引脚连接到外部设备的TX引脚。关闭和清理:在程序结束或者不再需要使用UART时,需要关闭UART模块,并进行相应的资源清理工作,以释放相关的资源和关闭相应的中断。

2024-06-27 21:00:19 775

原创 派能协议,逆变器测试问题记录

根据派能协议分析,标红的为最大充电电流,对应为03B6,转为十进制为950(精度为0.1A),对应95A,逆变器显示475A,变大了5倍。根据派能协议分析,标红的为最大充电电流,对应为04B0,转为十进制为1200(精度为0.1A),对应120A,逆变器显示120A。根据派能协议,报文标黄的对应充放电状态,30 30对应的数据为0 0,说明充放电状态全部置0,导致逆变器无法逆变。问题二:逆变器显示最大电流为上传报文的5倍,实际报文上传最大电流为95A,逆变器显示电流值为475A;

2024-06-13 20:00:00 714 2

原创 出现multiple definition of `TlM 20ms Flagmultiple definition of ‘TlM 500ms Flag多重定义,解决方法

主要目的:通过定时器100ms,实现LED灯翻转。主要涉及三个文件main.c,pit_lld_cfg.h,pit_lld_cfg.c。解决方法:不要在头文件中定义变量,去.c中定义,然后其他要用的文件把变量extern 进来。再将变量extern,就不会报错了。将这个工程运行,出现错误,多重定义。操作:将变量放在.c定义后,会报错。如下图所示,main.c。

2024-06-13 19:45:00 272

原创 工作总结1

通过不断学习和实践,我提高了焊接能力以及问题处理的能力,能够在产品出现问题时,学会考虑处理问题,例如在bms测试过程中,其中一块主控板的调试CAN出现连接不了上位机的问题,是CAN收发器烧掉造成的。在逆变器与bms通讯出现问题时,通过抓取逆变器与bms之间的报文,由于两者采用的派能协议,独立分析派能协议,其中一台bms测试过程中出现电流放大5倍的问题,例如发送的报文电流数据为95A,逆变器显示的电流值为475A,是由于重复发送报文导致;在未来的工作中,我将继续反思自己的不足,努力提升自己的处理问题的能力。

2024-06-12 23:00:00 539

原创 单片机常用C语言知识点

在右移运算中,数的二进制表示中的所有位向右移动指定的位数。具体来说,在使用 extern 关键字声明一个变量时,表示该变量并非在当前文件中定义,而是在其他文件中定义,当前文件中只是引用该变量。在左移运算中,数的二进制表示中的所有位向左移动指定的位数,并在右侧用零填充。将现有数据类型定义新的名称或别名的关键字,通过 typedef 关键字,我们可以为已有类型创建一个新的名称,使得代码更易读和易维护。或操作(|):将两个二进制数的对应位进行逻辑或操作,结果为1的位置置1,为0的位置留下。

2024-06-12 20:00:00 838

原创 conflicting types for 错误问题

函数:serialmsg_t sd_lld_write(SerialDriver *sdp, vuint8_t *buffer,vuint16_t len)在编译过程中,发现报错,可以发现serial.c和serial.h编写的函数存在不一致的问题,只需要修改成一致就不会报错了。怎样编译都会出现一个conflicting types for ’xxx‘的错误。头文件中声明 void Hanlder(const char * buf);出现这个错误的原因: 头文件声明和定义参数稍有不同。

2024-06-05 19:14:07 220

原创 低边驱动与高边驱动

低边驱动(LSD): 在电路的接地端加了一个可控开关,低边驱动就是通过闭合地线来控制这个开关的开关。容易实现(电路也比较简单,一般由MOS管加几个电阻、电容)、适用电路简化和成本控制的情况。高边驱动(HSD):在电路的电源端加了一个可控开关。高边驱动就是控制这个开关的开关。高边驱动器的设计比同等的低边复杂一些,一个原因是它通常使用(NMOSFET)作为功率元件。低边驱动通常用于与动力总成相关的负载,例如电机,加热器等;高边驱动经常用于燃油泵和车身相关功能,如座椅、照明、雨刷和风扇等。

2024-05-31 21:30:00 512

原创 matlab2022安装包

链接:https://pan.baidu.com/s/1XOa6Sz-bvKuUZ71jPNQpng。

2024-05-30 11:23:52 169

原创 光耦的工作原理

光耦主要由发光二极管和光敏三极管组成,电信号进来之后,点亮发光二极管,转为光信号,光信号照在光敏三极管中,三极管又会导通,又把光信号转为电信号。电信号→光信号→电信号。主要有两方面的作用:1.隔离左侧电信号的干扰信号(仅限小的干扰信号,大的干扰信号仍然会通过)2.隔离右侧电信号的干扰信号(左侧为控制端,右侧为负载端,负载的干扰不会影响控制端,起到隔离作用)。

2024-05-29 21:30:00 746

原创 菊花链通信技术整理

首先简单的说一下菊花链以及菊花链的应用,在目前国内的BMS开发中,我们应用最广泛的目前还还是分布式,只是越来越集中而已,真正完全集中式的BMS其实比较少。BMS一般分为主板和从板(有些将电流采样、绝缘检测等功能单独拿出来做一个电流模块或者绝缘检测模块),在菊花链出来之前,主从板上都有MCU,从板采集单体电池电压和温度,通过CAN总线传给主板。而在目前成本日益严峻的今天,怎么实现降本就是各个主机厂以及芯片厂所重点关注的内容,所以菊花链出现了。在电子领域,菊花链是一种配线方案。

2024-05-28 17:01:04 2439

原创 电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

2024-05-27 19:11:48 2330

原创 linux常用命令

首先看一下根目录/的文件,每个文件夹的作用。存储一些二进制可执行命令文件,/usr/bin也存放了一些基于用户的命令文件。存储了很多系统命令,/usr/sbin也存储了许多系统命令。超级用户root的根目录文件。普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹。存放Ubuntu系统内核和系统启动文件。/mnt通常包括系统引导后被挂载的文件系统的挂载点。存放设备文件,我们后面学习Linux驱动主要是跟这个文件夹打交道的。

2024-04-20 23:49:53 959 1

原创 MODBUS-RTU协议

一个Modbus通信总是由主机启动,没有收到从主节点请求从节点不会发送数据,从节点不会互相通信。BMS做从机,地址默认为1,支持0x03读、0x04读、0x06和0x10写功能码。BMS做从机默认地址为1,默认波特率19200、数据位8位、无奇偶校验、停止位1。系统最高单体电压簇内序号。0:待机1:充电3放电。1:复归,0:不动作。1:关断,0:未关断。1:互锁,0:未动作。1:消音,0:未动作。1:复位,0:未动作。1:急停,0:未动作。系统最高单体电压簇号。1:禁止,0:不禁止。1:使能,0:不使能。

2024-02-25 22:18:16 1057

原创 git使用方法(简易版)

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init。git add *.txt ----------------添加某种类型的文件到暂存盘。git add my.txt------------添加某个文件到暂存盘。git add ---------------------添加到暂存盘。git checkout xxx--------从暂存盘取回到工作区。git add . --------添加任意类型的文件到暂存盘。

2024-01-31 19:25:43 622

原创 SOC下一步测试内容与预期目标

在完成新SOC算法的程序下载后,需要对电池包的实际使用场景进行模拟,多数情况下,电池包充满之后,会静置一段时间,然后进行放电,放电过程中,放电电流会发生变化,当SOC降至30%左右,停止放电。电池包的容量也受到充电和放电倍率的影响,考虑在不同充电、放电倍率的SOC的数值变化情况,观察充电、放电倍率在0.1C、0.2C、0.3C、0.4C不同情况下的SOC情况,对比在不同充电倍率或者放电倍率下的SOC数值。3、电池包在放电状态下,SOC低于40%,修改放电电流的数值,SOC迅速降至0%;

2024-01-31 15:59:50 1145

原创 增加CO气体报警、氢气报警以及烟雾报警

标题:增加CO气体报警、氢气报警以及烟雾报警。内容:通过ADC采集通道,实现传感器电压的采集,通过对电压进行判断是否报警,(理论上应该可以计算出气体浓度,通过气体浓度来判断是否报警)。

2024-01-21 14:19:06 469

原创 温度采样【通道选通】S9KEAZ128的PTA2和PTA3引脚无法拉高

1、问题记录:由18串温度采样修改成32串温度采样,增加一路adc采样,通过cd4051控制通道选通,代码中增加了相应的代码,发现增加的最后8路温度不能够控制,以24串为例,给温度传感器增加温度,相应的采集的温度信息并没有发生变化。最后通过对比24串温度对应的通道选通的引脚的高低电平是否正常,发现引脚的高低电平与实际代码中设置的不一样,通过下述代码,对引脚进行强制拉高,发现PTD2能拉高,PTA2和PTA3无法拉高;通过查看网上资料,问题得以解决。主要是由开漏引脚造成的。

2024-01-20 19:45:03 462

原创 soc算法【周末总结】

在放电过程中,在开始阶段电压一直缓慢降至3.0V左右(中途两个迅速升高过程原因1.错误设置成充电模式,2.系统断电修改SOC数值),当放电过程中,电池包电压降至3.0V以下,电压迅速下降,下降至2.6V左右,科威尔设备停止放电。在静置状态下,电压一直停留在3.276V,在开始放电过程中,电压缓慢降至3V,在电压下降至3V以下,电压迅速下降至2.6V,科威尔设备停止放电,电压又迅速回升至2.9V附近。手动修改SOC数值,SOC从38%修改成70%,电压下降至2.6V,SOC停留在48%,不再下降。

2024-01-13 22:48:15 1146

原创 CAN通信(报文测试)

问题:对安全模块的程序进行修改,将18串采样温度改成32串采样温度,相应can通信的帧数存在一定的变化,利用广成科技CANtest上位机软件或者内部上位机观察报文发送和接收情况。

2024-01-07 15:04:40 706

原创 增加SOC优化函数过程中,出现程序跑飞现象

接下来就针对这个函数进行调试。在IAR调试过程中,发现跑到某个位置,数组变量不能赋值,只要给数组变量赋值,程序就跑飞,数组P_x[9]和P_x_half[9]不能赋值。分析原因:在SOC优化函数中,定义了大量float型的数组,同时这些数组又进行了大量的递归调用,就造成了栈溢出的问题。2.SOC需要手动校准问题,在出厂的时候,会对soc进行手动校准一次,用户在使用产品之后,就无法在对SOC进行校准。在源代码基础上,增加SOC优化函数,之前采用的安时积分进行SOC数值的计算,基于两个方面提出SOC优化函数。

2024-01-07 14:09:05 440

原创 C/C++使用过程中的溢出问题

内容:在C/C++程序里有一类非常典型的问题,那就是:溢出问题。现在分别来分析一下常见的数组溢出,整数溢出,缓冲区溢出,栈溢出和指针溢出等。

2024-01-07 12:53:27 1153

原创 bash-4.3$ 虚拟机终端窗口

首先需要解释一下的是之所以会出现[root@localhost ~]#的提示字符,是因为系统默认设置的变量中包含了命令提示字符即PS1的设置,而在login shell后会加载宿主目录下的.bashrc文件去读取变量设置。一般来说则有可能会出现误删的情况(新手可能会在root界面放置很多文件,而在删除时则很有可能将其宿主目录的文件全部删除,导致命令提示字符出现bash-4.3$)bash-4.2# cp /etc/skel/.bashrc /root //拷贝文件至宿主目录下。

2023-12-25 19:48:55 521

原创 吃透modbus协议

转载自b站。

2023-12-24 16:52:43 1891

原创 J1939协议解读

参数组是应用层中定义的与某个ECU相关的具有相同控制功能的若干个参数的组合,而PGN是用于唯一标识参数组的号码,在应用层中定义。需要注意的是,第一个枚举元素的默认值为0,后面的枚举元素的值在上一枚举元素的值上加1。因此,Mon=0,Tue=1,Wed=2,Thu=3,Fri=4,Sat=5,Sun=6.//PS:特定协议数据单元字段,当PF的值为0-239时PS表示目标地址(PDU1格式),此时,Mon=0,Tue=1,Wed=3,Thu=4,Fri=5,Sat=6,Sun=7.uint8 prior;

2023-12-12 20:49:18 454 3

原创 大型箱式电源三级架构

主要负责各个簇控之间的调度,人机界面的交互,与EMS、PCS之间的交互,PCS与域控之间通过CAN总线进行交互,EMS与域控、PCS之间也进行交互,域控可以控制主断路器;主要负责继电器的通断,高压采样,绝缘监测,电流采样以及与上级的域控的交互;主要负责电池箱电压采样、温度采样,将这些信息通过can通讯传递给簇控;大型箱式电源三级架构主要包括三个部分,从控,簇控和域控。

2023-12-11 23:28:57 54

原创 CAN通信标准帧和扩展帧

第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;三、控制帧中的DLC(数据长度)完全相同,但保留位不同,标准帧IDE、R0,扩展帧R1、R0,必须以显性电平发送(由数据链路层操作),对程序员透明;四、 总结: 其它的都一模一样,所以,其实CAN标准帧和扩展帧只是在帧ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已。注意:这里的帧ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级(帧ID值越小,优先级越高,最小是0x00000000)。

2023-12-05 11:10:59 365

原创 大端模式与小端模式的区别

区别:大端模式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中;而与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。Note:采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

2023-12-04 14:11:57 85

气体传感器规格书-立创商城

气体传感器规格书-立创商城

2024-01-15

CAN Test V2.53软件使用说明

CAN Test V2.53软件使用说明

2023-11-03

ch704200霍尔传感器规格书

ch704200霍尔传感器规格书

2023-10-13

嵌入式C与数据结构实战入门

嵌入式C与数据结构实战入门

2023-07-27

Modbus Slave和Modbus Poll的使用说明

Modbus Slave和Modbus Poll的使用说明

2023-07-24

嵌入式软件工程师面试宝典

嵌入式软件工程师面试宝典

2023-04-01

空空如也

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

TA关注的人

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