一些常用硬件电路设计记录备忘!!建议收藏!!对你的理解帮助很大!!
题记
这篇博客主要记录我在学习电路中遇到的一些设计等,对一些知识进行了即使的掌握和记录,会对我今后的学习有很大的帮助,特此在这里记录下来,一方面方便我日后的查看,另一方面也方便大家的学习和思考,如有错误或者遗漏,欢迎评论区指出错误所在。。。
1、静电和浪涌保护(TVS/ESD) ESD9B5VL
首先,TVS\钳位二极管\瞬态抑制二极管,可以看做是一种东西,只是称呼不同。
然后就是,TVS防护包含两部分:静电释放(ESD)和浪涌(Surge),TVS参数不同,防护侧重也不同。
ESD 和 Surge 的主要区别:频率不一样,ESD 高频,Surge 低频。
【1】静电:不用多说了。。。
【2】浪涌:浪涌也叫突波,顾名思义就是超出正常工作电压的瞬态过电压。本质上讲,浪涌是发生在仅仅几百万分之一秒时间内的一种剧烈脉冲,浪涌产生的时间非常短,大概在微微秒级。浪涌出现时,电压电流的幅值超过正常值得两倍以上。
记住一下几点就可以了。
一般ARM芯片管脚出来的信号(比如CAN)只关注ESD,信号是TTL电平,一般不会产生浪涌
一般浪涌更关注电源部分,比如开关电源大功率等等。。
上图这里就是使用瞬态抑制二极管削弱静电影响,举一个简单的例子:
当ESD出现,产生一个很大峰值的电压,但也就几微妙的样子,这时一般的二极管根本反应不过来,这时就需要TVS了。。。这就是简单的理解方式。
2、肖特基二极管
反向击穿特性,当反向电压过高时,可以钳住电压值
看我箭头所指的地方,能明白啥是反向电压,啥是钳住电压不?电压值都不变了。。。
3、共模滤波器
详细解释可以看这篇博客:
https://blog.csdn.net/phker/article/details/128311936
当有共模电流流经线圈时,由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗,使线圈表现为高阻抗,产生较强的阻尼效果,以此衰减共模电流,达到滤波的目的。
因此这里的这个电感的加入主要是为了防止共模干扰
4、自恢复保险丝
你家的保险丝的微小化,达到150mA电流自动断开,用来保护。。
5、CAN总线
用我自己的话来说,不太需要理解太深入以及他的通信格式是什么等等。。我只需要知道如何使用,我觉得才是王道。。
6、π122M31数字隔离器
主要用于CAN通信隔离收发。。
7、贴片式发光二极管 XL-3528RGBW-WS2812B
按照色度的方式进行,很奇妙~
这个灯珠应该就是RGB灯珠,下面可以点击自我查看它的datasheet
datasheet
8、读写串行SPI ----QSPI Flash
QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。在SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外围接口协议(即QSPI协议)。QSPI 是一种专用的通信接口,连接单、双或四(条数据线) SPI Flash 存储介质。
9、485收发芯片 ----SP3485EN-L/TR
略
10、IMU加热电阻
今天无意中看到了这样一个电路:
IMU加。加热????
为啥要加热?难道怕不够烧鸡?
后来发现是要做温度补偿,减少温漂,所以IMU的布局是这样的。。。
周围一圈电阻发热,然后像烤炉一样加热IMU
想当初我们被IMU折磨的体无完肤,各种卡尔曼滤波的变种全部都用上了,就因为这种MEMS需要很精准,所以才会有这么多麻烦。。
11、Octo SPI
Octo SPI(Stateful Packe Inspection)是”Quad SPI“的8位扩展版并行通信功能。
经典SPI协议被称为标准 SPI 协议(Standard SPI)或单 线 SPI 协议(Single SPI),其中的单线是指该 SPI 协议中使用单根数据线 MOSI 进行发送数据,单根数据线 MISO 进行接收数据。 为了适应更高速率的通讯需求,半导体厂商扩展 SPI 协议,主要发展出了 Dual/Quad/Octal SPI 协议,加上标准 SPI 协议(Single SPI),这四种协议的主要区别是数据线的数量及通讯方式,见下表:
也就是说这东西的吞吐量更大,数据量更大
这个原理图是Qual SPI,的Flash,外扩Flash,可能也是怕变量太多把内置的Flash写爆吧。。。
这里就是上面提到的QSPI_Flash,忘了的小朋友可以倒回去看看。。
12、USART_CTS \RTS
原作者链接,点击跳转
我们都知道USART中RX和TX这两个引脚的功能,这两个引脚是USART串行通信最常见和必不可少的两个引脚。但我们在手册中会发现关于USART的其他引脚:USART_CK、USART_RTS、USART_CTS
这俩引脚其实是这个意思:
在ARM处理器中的USART中,基本上都具有硬件流控的功能,也就是说一般都有RTS CTS引脚
我们配置串口时,有如下一段配置代码:
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
上面配置代码中有一个参数:
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
其实这个参数可以为:
#define USART_HardwareFlowControl_None ((uint16_t)0x0000)
#define USART_HardwareFlowControl_RTS ((uint16_t)0x0100)
#define USART_HardwareFlowControl_CTS ((uint16_t)0x0200)
#define USART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300)
也就是可以配置使用RTS和CTS这两个引脚为硬件流控的功能。
13、USART_DE 模仿RS485
有时我们也能看到这么一个东西
这个其实是因为STM32的串口带有DE功能引脚,可以用于硬件控制RS485收发器
通过STM32的DE引脚使用硬件控制RS485收发器,可以省去手动操作RS485收发器的使能引脚步骤。
所以就有了这么个操作。。。
14、CAN和FD-CAN
CAN
控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。
FD-CAN
CAN FD 是CAN with Flexible Data rate的缩写,翻译为【可变速率的 CAN】。 也可以简单的认为是传统CAN的升级版,其中要说明的是,只升级了协议,物理层没有改变。
15、堆栈设置
有时候我们会遇到这么一个东西,当变量或者函数被创建过多时,就会导致出现程序跑飞的情况(就是代码烧进去了,也运行了,但是单片机没一点反应,让人以为是烧坏了。。。Hhhhh)
栈(Stack)
STM32F1默认设置值0x400,也就是1K大小,1024字节。
Stack_Size EQU 0x400
函数体内局部变量:
void Fun(void)
{
char i;
int Tmp[256];
//...
}
局部变量总共占用了256*4 + 1
字节的栈空间。
所以,在函数内有较多局部变量时,就需要注意是否超过我们配置的堆栈大小。
函数参数:
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
这里要强调一点:传递指针只占4字节,如果传递的是结构体,就会占用结构大小空间。
提示:在函数嵌套,递归时,系统仍会占用栈空间。
堆(Heap)
Heap_Size EQU 0x200
默认设置0x200(512)
字节。
我们大部分人应该很少使用malloc来分配堆空间。
虽然堆上的数据只要程序员不释放空间就可以一直访问,但是,如果忘记了释放堆内存,那么将会造成内存泄漏,甚至致命的潜在错误。