- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 模拟开关--扩展模拟采集通道需要考虑的问题
项目需求多通道的模拟采集,但是,如果外置ADC芯片则会升高成本、增大电路板尺寸等,同时对电路Layout难度也有上升,需要考虑电路板的各种电磁特性和噪声。所以一般的多通道采集方案,尤其是上了几十个通道以上的,均为作通道拓展的方式,来实现对几个ADC接口扩展为多个物理接口。当然,很多要求通道拓展数量不多,比如三到五个,但要求高精度的、低噪声等要求,都会采用的方案来设计。
2024-01-13 17:35:25
2136
原创 【无标题】
头文件中是不可以定义变量的,变量只能在 .c 文件中声明,头文件只能进行声明,比如可以使用 extern 关键字 对.c文件中的变量声明,从而实现其他文件的调用。
2023-09-16 21:23:38
206
原创 记录:STM32 hal库 卡在串口中断
在写STM32f4的程序时,用到串口,但是只需要发送功能就行,所以就没有写串口中断服务函数,导致在串口另一端发送一些打印信息之后,串口没有接收这些无效信息的中断服务函数,进而导致程序卡死。所以,在以后的程序设计中,前期调试可以不需要接收显示打印这些信息时,可以直接关闭中断,或者做一个空的中断处理函数,后期完善程序交互时再打开功能。
2023-09-01 11:50:13
844
原创 硬件设计规范——(二)PCB设计规则(3)
3、为了避免短路、辐射干扰的可能,下面器件的下方不能有过孔 或者布线:金属电阻、时钟器件、隔离光耦、对外接口、保险丝、共模电感、储能电感、二次电源、高热器件、PLL滤波器件、模拟信号处理芯片。5、在单板与母版直接通过连接器配合使用时,单板上的继电器、开关电源等对外辐射强的器件应该尽量远离母版放置,建议距单板连接器边缘10mm以上。8、对于接口信号的滤波、防护和隔离等器件,限流防护电阻靠近接口连接器放置,先防护后滤波。7、强辐射信号线(高频、高速、尤其时钟线),不要靠近接口、面板,以放置对外辐射;
2023-07-21 12:50:16
392
原创 硬件设计规范——(二)PCB设计规则(2)
10、SOT263封装线性电源芯片,通常通过衬底焊接在单板上,不建议衬底下方焊盘打散热过孔,防止漏锡、虚焊,如果打孔则需要在对面添加偷锡铜皮。2、0.3W 以上的电源芯片需要打孔散热,对面的阻焊开窗(亮铜),打孔最好错开衬底(放置漏锡)9、晶振、激光等对温度敏感的器件远离散热器1000mil以上,尽量布局在高热器件的上风处。1、对于与负片层铜皮相连的过孔,如果没有散热要求,则花盘连接,反之建议全连接。5、受环境温度影响大的器件(包括热敏器件)放置在离进风口近的区域。3、正片设计,避免出现尖角。
2023-07-21 10:31:55
231
原创 硬件设计规范——(二)PCB设计规则(1)
1、,具备了加大电流和屏蔽的双重作用。但是实体覆铜,如果过波峰焊时,有一定的热胀冷缩的拉力,板子可能会翘起来,甚至会起泡。因此实体敷铜,一般会开几个槽,缓解拉力导致铜箔起泡。,主要起到屏蔽作用,加大电流的作用会被降低。从散热的角度说,网格敷铜既降低了铜的受热面,又起到了一定的电磁屏蔽作用。但是生产工艺对网格形状铺铜有一定的要求,网格过小影响品质良率。2、碎铜删除(EMC)、孤铜看情况删除或保留3、网格铺铜时,网格空间方格优选25mil * 25mil,网格宽度大于10mil。
2023-07-20 10:49:35
343
原创 硬件设计规范——(一)知识点(4)
9、如果对元器件管脚进行铺铜全覆盖,可能导致散热过快,从而导致拆焊和返修时困难。例如走线、环状走线、无参考平面走线容易干扰耦合。3、指示灯限流电阻,放置在驱动器和发光管之间,放电点与芯片间加限流电阻可以避免高压直接耦合到芯片管脚。4、PGND:单板的PGND提供各种防护,滤波电路的干扰、冲击电流低阻通路。②通过导热垫接触到芯片或PCB考虑器件散热面、器件承压力、导热垫厚度和压缩量。6、方波的五次谐波以内的频率分量是有效的,RE上很容易表现。④被插单板信号建立顺序:地、电源、使能、输入输出信号。
2023-07-20 10:03:44
190
原创 硬件设计规范——(一)知识点(3)
(对于这种类型的匹配电路,由于信号会在传输线、串联匹配电阻以及驱动器的阻抗之间实现电压的分配,因而加在信号线的电压实际上只有部分信号电压)信号:10/700us,等效阻抗为40Q,要做到防雷1KV,则选择25A以上的防护管;10、某些芯片的复位和中断信号是沿触发,复位 和中断需要按照时钟信号的PCB走线规则处理,源端33Ω匹配的同时,按照3W走线。9、PCB走线时,CLK走线的上下拉电阻、电容焊盘需要跨在走线路径上,避免增加额外的Stub(短桩线);15、时钟信号的上升和下降时间通常要求3 - 5ns;
2023-07-19 15:02:35
746
原创 STM32 启动文件简介
stm32启动文件是由ST官方提供,在官方的固件包里。启动文件由汇编编写,是系统上电复位后第一个执行的程序。7、调用C库中的_main 函数初始化用户堆栈,最终调用 main 函数。2、初始化程序计数器指针 PC = Reset_Handler。6、配置系统时钟,通过调用SystemInit()函数(可选)1、初始化堆栈指针 SP = _initial_sp。5、配置外部 SRAM 作为数据存储器(可选)3、设置堆和栈的大小。4、初始化中断向量表。
2023-07-18 16:56:40
207
原创 启动文件代码 和 BootLoader区别(随笔)
需要这段代码是为了给C语言程序准备好堆栈空间,中断入口和外部数据等。而且这段代码可以直接对硬件进行操作,效率很高。
2023-07-18 16:46:24
277
原创 硬件设计规范——(一)知识点(2)
其中Ta是最大环境温度,Tj 是最大允许结温,ja 是结点到空气间热阻,例如实际的项目中,Ta要求65℃,Tj 要求150℃,ja 取300 ℃/W,可以算的PDmax = 283mW;9、时钟供电、PLL电源、模拟电源可采用磁珠 + 电容 方式滤波,磁珠要选用 300欧 以上交流阻抗 , 电容选用10uf + 100nf组合(相差100倍),PCB布局时,小电容靠近芯片管脚。①铝电容:工作频率在 < 几百KHz 下,普通的铝电容容易长期挥发失效,需要考虑高温寿命,建议选用Polymer铝电容。
2023-07-18 11:33:54
758
原创 硬件设计规范——(一)知识点(2)
【注】:这里的"精度"、“分辨率”是不同的概念,分辨率是指器件可以达到的极致信号识别能力,然而“精度”是指在原有分辨率之下,加入各噪声干扰后,器件可以达到的额分辨能力。14、JTAG 信号上下拉处理: TCK 、/TRST下拉1K,TMS、TDI上拉4.7K,TDO可以不做处理,(OD的需上拉4.7K)⑦避免换层后的参考平面不连续,例如层2是地平面,走线只在1/3层,如果层6是地平面,则从层1 换到层5时,要在过孔附近加一个地线过孔。①把振荡器、晶体、时钟和所有的支持电路,放在一个局部地平面上。
2023-07-17 11:20:04
355
原创 记录-const 修饰指针
一般const 修饰指针时用作函数的入口参数,表示函数无法使用这个指针修改指向的数据内容。也就是这个函数对传入的数据内容无修改权限。//错误,无法通过pr修改其指向的数据。【注】:指针我们一般考虑三个问题:1、指针指向地址内部的数据/;2、指针指向的地址,3、指针本身所占用的内存。这种表示指针只能指向第一次赋值的数据的地址,无法修改,即:pr = prr;无法修改pr的指向;表示既无通过pr修改pr指向的数据,也无法修改pr的指针指向的地址。
2023-07-15 14:46:09
76
原创 总结一些STM32相关嵌入式的东西
1、内核不同:F1:M3内核,F4:M4内核2、主频不同:F1:72MHz;F4:168MHz3、浮点运算:F1无浮点运算单位,F4有4、功能性能:F4外设比F1丰富,且功能更强大,比如GPIO翻转速率、上下拉电阻匹配、ADC精度等5、内存大小:F1内部SRAM最大64K,F4有192K(112+64+16)
2023-06-23 11:48:12
451
原创 Git 命令总结、配合GitHub使用技巧
之前就学过Git,但是由于实际使用过程中只用到了“Git clone”,慢慢大脑中其他命令和使用方法都忘了,最近做项目需要把程序进行实时修改和保存版本,故在这里重新捋一遍Git常用命令和gihub使用技巧。
2023-04-28 20:46:19
454
原创 指针、函数、结构体
1、指针:指针的类型、指针指向的类型、指针的值、指针本身所占的内存空间2、函数:指针函数(返回值是指针的函数)、函数指针(本身是指针,只不过指向的是函数,比如回调函数)3、结构体:①有机组织了对象的属性。②以修改结构体成员变量的方法代替了函数(入口参数)的重新定义。③结构体的内存对齐原则可以提高CPU对内存的访问速度(以空间换时间)
2023-04-27 11:35:58
189
原创 独立看门狗的一点经验
4、如果要用中断的话,可以利用中断函数,比如定时器,来定时变化一个标志,提醒主程序喂狗。1、看门狗喂狗千万不要放在中断中,否则程序跑飞时,可能中断运行还是正常的。3、RTOS:放优先级最低的任务中,或者空闲任务中(钩子函数)。2、裸机:放while(1)中。
2023-04-26 09:23:23
322
原创 记录使用FATFS的一点问题:
1、在使用FATFS过程中,由于需要上电初始化后需要读取某个文件的数据,使用了file_read,考虑到设备可能存在没有创建文件,所以使用了FA_CREATE_ALWAYS | FA_READ,这个时候就问题出现了,第一次上电正常,一旦读取以前的文件时,该创建的文件会立马清零。然而,在写文件时可以用FA_CREATE_ALWAYS|FA_WRITE,表示文件如果不存在就创建,但是如果文件存在。就会覆盖旧文件,所以导致文件数据丢失,还是记忆偏差了,以为是如果文件存在就不新建(但不覆盖)。
2023-04-21 22:05:06
1377
原创 串口通信时的问题
串口发送:CPU将待发送数据写入串口TDR,数据被转移到移位寄存器后,即使此刻出现其它中断,发送数据也不会出错,因为已经到硬件底层了。在多个字节数据被写入TDR进行传输时,这个过程可能被其它中断打断,(超过串口当前波特率传输),则会出现,**接收方则可能出现所谓断帧数据收不全的情况(尤其是采用DMA+空闲中断)。**所以传输时要注意这个环节!!!最好是采用示波器抓波形看看。
2023-04-20 14:34:00
1773
原创 STM32串口相关(二)--最优的串口使用方式及说明
【注】STM32串口相关,总共分为三个部分:①发送接收基础性问题。②最优的串口使用方式及说明。③串口发送接收数据的一般算法。
2023-04-20 11:06:00
1105
原创 STM32串口相关(一)--发送接收基础性问题
【注】STM32串口相关,总共分为三个部分:①发送接收基础性问题。②最优的串口使用方式及说明。③串口发送接收数据的一般算法。
2023-04-20 09:26:47
738
原创 STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析
STM32中堆栈是为了存储不同信息而开辟的空间,具体对应于启动文件中的head和stack所定义的内存空间。STM32中,堆向高地址增长,栈向低地址增长。堆:是用户调用malloc时申请的内存空间。栈:临时创建的局部变量(一般的局部变量+const修饰的局部变量),函数入口参数,函数返回值存放在栈区。
2023-04-18 15:22:49
3626
原创 STM32 堆栈溢出问题
以下代码是内存堆栈溢出检测模块。# endifif(!else {// 如果堆只剩下64字节,则报告失败,要求用户扩大堆空间以免不测 uint end =(uint) & __heap_limit;return p;if(!else {// 如果堆只剩下64字节,则报告失败,要求用户扩大堆空间以免不测 uint end =(uint) & __heap_limit;return p;} ```
2023-04-18 14:42:53
1715
原创 MDK KEIL5 中One ELF Section per Function的作用
每个函数只存在一个,而不会因为多处调用而导致在内存中多处存储,因而使得内存占用减少,但是当调用时,可能没有直接复制一份带来的速度快,因而网上有提到时间换空间这个想法。我们在工程大的时候可以开启这个选项,但是可能会存在部分功能运行错误,此时若优化等级为LEVEL 0还是有错误,那么需要关闭这个功能。其实,这个选项相当于是智能化帮开发者优化程序和存储,是内存管理的一个方法。而内存管理正式我们程序员需要做的核心问题之一,所以如果自身有过硬的内存管理技术,完全可以不利用MDK自带的优化内存选项(防止出现运行错误)
2023-04-18 10:37:42
1455
1
原创 关于STM32定时器中断检测按键的问题
但这种情况下由于按键按下的时间不一,毛刺和持续电平保持时间不好测算,若是延时过度,检测不到按键状态,若延时过短,很可能读取区间在毛刺区间,导致电平读取错误,因而必须增加电容,作为毛刺滤波和电平保持。3、当然在定时器中断模式下可以调整进入中断的时间来匹配设计的滤波电容,保证按键按下后,电容端的电平维持时间正好和定时器中断时间一致,这样可以保持按键可以及时且单次读取到。若电容选择过小,电平持续时间不够,尤其在轮询情况下,按键按下后,在顺序检查按键状态时,电容电平已经低于读取阈值了,按键失效。
2023-04-16 17:56:21
1241
原创 PID算法相关
1、P:Kp比例。是PID调节过程中的主力军。若系统是稳定无损耗的,那么只有一个P也可以实现调节,及输出值无限接近设定值。然而,在我们实际情况下,任何系统都是有损耗的,比如温度流失,负载发热损耗,电机阻尼等。此时,若损耗量等于增加的比利量,此时就会出现输出稳定,但是输出值和设定值存在一个恒定的误差,但是这个时候比例调节已经失去了作用。2、I:而积分 I 就是解决这个问题而提出的。
2023-04-13 21:50:54
94
原创 static和const、指针 相关概念和使用方式
用static修饰全局变量和函数,除了上面说的数据安全,防止被误引用,还有一个作用是解决重名问题。当用static修饰了全局变量和函数后,其他文件里再定义同名的全局变量和函数也是可以的。一般来说,如果不是要对外提供的函数和全局变量,最好都用static修饰。至此,我们对变量的存储类别及数据类型进行了全面讨论,在此作个小结。1.变量定义的一般形式存储类别数据类型变量表;2.变量定义的作用①规定了变量的取值范围。②规定了变量进行的运行操作。③规定了变量的作用域。④规定了变量的存储方式。
2023-03-22 18:35:40
860
原创 HC06蓝牙2.0模块连接不稳定 和 STM32串口不传输数据(串口接收中断)的一些问题
HC06蓝牙2.0模块连接不稳定和STM32串口不传输数据(串口接收中断)的一些问题(推荐)
2023-03-05 17:38:17
3788
1
原创 硬件设计过程中,“地”相关问题
Answer:在现代接地概念中、对于线路工程师来说,该术语的含义通常是‘线路电压的参考点’;对于系统设计师来说,它常常是机柜或机架;对电气工程师来说,它是绿色安全地线或接到大地的意思。一个比较通用的定义是“接地是电流返回其源的低阻抗通道”。注意要求是”低阻抗”和“通路”。Answer:对于一个电子信号来说,它需要寻找一条最低阻抗的电流回流到地的途径,所以如何处理这个信号回流就变得非常的关键。
2023-02-23 20:55:31
504
原创 电路设计中选用“电阻”需要注意的地方
3、电阻在应用电路中实际工作电压小于最大工作电压。一般按最高工作电压的75%降额设计选用。2、电阻的额定功率大于电阻在应用电路实际工作功率。一般按照额定功率70%降额设计选用。4、电阻的稳定性、工作频率、噪声等特性满足应用电路要求。1、电阻的阻值应该满足应用电路的使用。
2023-02-23 20:41:28
581
原创 单片机上电后没有运转,需要从这些方面考虑
可以通过单步调试,来判断是否有循环,或者硬件内部存在bug,使得软件执行时卡死(stm32的硬件资源IIC,存在这种卡死问题)需要检查单片机复位引脚的状态,若处于复位状态,则需要考虑是不是外部复位电路元器件出现焊接或物料问题。先检查下载程序界面是否提示下载成功,若成功还是程序没有运行,可以尝试重新烧录。若是以上方法未解决问题,建议重新焊板、测试,排除个例的玄学问题!可以使用示波器或频率计来测试晶振引脚是否有震动周期信号的正常输出。1、单片机供电是否正常?3、单片机晶振是否正常?4、单片机是否烧录成功?
2023-02-23 20:24:45
4875
原创 数据结构--树
树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件 :有且仅有一个特定的称为根(Root)的节点;其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树。在这里插入图片描述节点的层数等于父节点的层数加一,根节点的层数定义为一。树中节点层数的最大值称为该树的•若树中每个节点的各个子树的排列为从左到右,不能交换,即兄弟之间是有序的,则该树称为。•m(m≥0)棵互不相交的树的集合称为。
2023-02-15 14:12:12
186
直插2576稳压模块原理图
2024-03-16
正负输出双电源模模块原理图
2024-03-16
SL8203系列DC-DC升压模块原理图
2024-03-16
128x64液晶显示模块
2024-03-16
OK-CC1101无线模块程序及相关资料
2024-03-16
可用来检测雨水的传感器
2024-03-16
TCS230颜色识别测量装置设计
2024-03-16
四路场效应管(Nmos)带光耦隔离控制模块
2024-03-16
可编程继电器模块相关资料
2024-03-16
继电器延时输出模块,延时时间可调,(0~10秒)
2024-03-16
GSM双串口单片机继电器控制开发板
2024-03-16
THB6064电机驱动
2024-03-16
PWM直流电机无级调速控制器
2024-03-16
NE555pwm输出模块
2024-03-16
DS1232外部看门狗模块
2024-03-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人