cathy的博客

RS485收发的3种典型电路-重点-自动收发电路

三种常用电路如下:

1、基本的RS485电路

“”

上图是最基本的RS485电路,R/D为低电平时,发送禁止,接收有效,R/D为高电平时,则发送有效,接收截止。上拉电阻R7和下拉电阻R8,用于保证无连接的SP485R芯片处于空闲状态,提供网络失效保护,提高RS485节点与网络的可靠性,R7,R8,R9这三个电阻,需要根据实际应用改变大小,特别是使用120欧或更小的终端电阻时,R9就不需要了,此时R7,R8使用680欧电阻。正常情况下,一般R7=R8=4.7K,R9不要。

图中钳位于6.8V的管V4,V5,V6,都是为了保护RS485总线的,避免受外界干扰,也可以选择集成的总线保护原件。另外图中的L1,L2,C1,C2为可选安装原件,用于提高电路的EMI性能.

2、带隔离的RS485电路

博文分享 | STM32的NVIC和中断的总结

前言:

1.要想学习STM32中断,要先掌握STM32对优先级的定义;

2.有51单片机开发经验会比较容易理解中断优先级;

3.本篇博文基于STM32F103ZET6芯片和3.5.0标准库编写;

4.本篇博文从寄存器入手,最终实现编程的步骤;如有不足之处,还请前辈多多指教;

一 基础知识

1. cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。(本博文只介绍60个外部可屏蔽中断)

2. stm32只有84个中断,包括16个内核中断和68个可屏蔽中断

3. stm32f103上只有60个可屏蔽中断,f107上才有68个中断

4.先占优先级也就是抢占优先级,概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断先占优先级如果没有后触发的中断 先占优先级更高,就会先处理先占优先级高的中断。也就是说又有较高的先占优先级的中断可以打断先占优先级较低的中断。这是实现中断嵌套的基础。

博文分享 | ROM与RAM 单片机上电后是如何一步步执行的?

ROM:(Read Only Memory)程序存储器

在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、’const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。

RAM:(Random Access Memory)随机访问存储器

用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量,都存储在RAM中,“被改变的量”包括全局变量、局部变量、堆栈段。

程序经过编译、汇编、链接后,生成hex文件。用专用的烧录软件,通过烧录器将hex文件烧录到ROM中(究竟是怎样将hex文件传输到MCU内部的ROM中的呢?),因此,这个时候的ROM中,包含所有的程序内容:无论是一行一行的程序代码,函数中用到的局部变量,头文件中所声明的全局变量,const声明的只读常量,都被生成了二进制数据,包含在hex文件中,全部烧录到了ROM里面,此时的ROM,包含了程序的所有信息,正是由于这些信息,“指导”了CPU的所有动作。

博文分享 | STM32的IO口基本操作

## STM32的IO口基本操作 ##

“”

1.初始化结构体

先来看下GPIO_InitTypeDef这个结构体,源代码如下

“”

结构体中包含了GPIO_Pin,GPIO_Speed和GPIO_Mode信息,
GPIO_Pin在stm32f10x_gpio.h中有宏定义

博文分享 | 8位、16位、32位单片机各有啥区别?

指CPU处理的数据的宽度,参与运算的寄存器的数据长度.

如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。

如果总线宽度与CPU一次处理的数据宽度不同:

1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel 8088,CPU是16位但总线是8位,所以它是准16位。

2)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数。

少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2

在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。

在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别。

有啥复杂的, 一句话:参与运算的寄存器的数据长度。

8位单片机的数据总线宽度为8位,通常直接只能处理8位数据;

16位单片机的数据总线宽度为16位,通常可直接处理8位或16位数据。

博文分享 | STM32的串口应用总结

想写博客已经很久了,但由于项目时间紧,一直没有抽出时间来。不过这些都是借口,主要还是自己太懒。好了不多说了,因为这些天的项目中一直在用串口,所以就从串口开始写起。

首先总结一下串口232,422,485

串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”。

串口422:可双向传输,4线全双工,2线单工。

串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端:+2V~+6V逻辑“1”,-2V~-6V逻辑“0”,接收端:+200mV逻辑“1”,-200mV逻辑“0”。

对于串口的实现有以两个方案:

方案一,和原子的《例说STM32》一样,首先接收,然后处理,没有消息验证处理,这样就会出现消息覆盖,消息出错后死机,无法明确区分命令,无法及时应答握手信号。方案二,借鉴uC/OSII的消息队列,进入中断服务函数之后,关闭中断,接收数据,如果没有数据接收,等待一段时间(时间和波特率有关)后开中断,出中断,然后在对接收到的数据进行处理,下面看代码:

消息队列及其初始化函数:

功率MOSFET的开关损耗:关断损耗

功率MOSFET的感性负载关断过程和开通过程一样,有4个阶段,但是时间常数不一样。驱动回路的等效电路图如图1所示,RG1为功率MOSFET外部串联的栅极电阻,RG2为功率MOSFET内部的栅极电阻,RDown为驱动电路的下拉电阻,关断时栅极总的等效串联栅极电阻RGoff=RDown+RG1+RG2。

“图1:功率MOSFET驱动等效电路”
图1:功率MOSFET驱动等效电路

“图2:功率MOSFET关断波形”
图2:功率MOSFET关断波形

(1)模式M1:t5-t6

如何将STM32的调试口设置为普通IO口?

背景

最近有一个项目用到了STM32F103RB系列单片机,由于引脚数量较少,不得不使用到了单片机的PB3和PB4两个引脚。而这两个引脚刚好又是STM32系列的JTAG调试引脚,如果要用于普通IO的功能需要先进行一定的设置。

1. STM32的调试方式选择

STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的。

“”

由此我们可以知道:

如果要使用JTAG调试功能,那么PB3,PB4,PA13,PA14,PA15都不能使用;
而如果我们关闭JTAG功能,但是开启SWD调试功能,那么PB3,PB4,PA15都可以当作普通IO来使用了;

ST官方3.5的库有提供关闭调试功能的两个接口:

1.1 关闭所有的JTAG和SWD调试功能

功率MOSFET的开关损耗:开通损耗

前面的文章讲述过基于功率MOSFET的漏极特性理解其开关过程,也讨论过开关电源的PWM及控制芯片内部的图腾驱动器的特性和栅极电荷的特性,基于上面的这些理论知识,就可以估算功率MOSFET在开关过程中的开关损耗。开关损耗内容将分成二次分别讲述开通过程和开通损耗,以及关断过程和和关断损耗。

功率MOSFET及驱动的等效电路图如图1所示,RG1为功率MOSFET外部串联的栅极电阻,RG2为功率MOSFET内部的栅极电阻,RG=RUp+RG1+RG2为G极串联的总驱动电阻。

“图1:功率MOSFET驱动等效电路”
图1:功率MOSFET驱动等效电路

实际的应用中功率MOSFET所接的负载大多为感性负载,感性负载等效为电流源,因此功率MOSFET的开关过程基于电流源来讨论。当驱动信号加在功率MOSFET的栅极时,开通过程分为4个模式(阶段),其等效电路如图2所示。

共输入电压的DC/DC变换器差频干扰

作者:滕俊青,张之也,刘松,丁宇

在笔记本电脑、LCDTV、蓝光DVD以及通讯系统的主板上通常会用到多个非隔离的DCDC变换器或LDO,以得到不同的电压分别给CPU的核及I/O、专用IC及存储器等芯片供电。为了提高系统的效率,通常几个大电流的DCDC变换器直接由输入的直流电压供电。由于DCDC变换器的工作频率高,形成一个很强的骚扰源,会产生很高的开关噪声,从而会在电源的输入端产生差模与共模干扰信号。对于共输入多路DC/DC变换器而言,当它们在空间上比较靠近时,更容易互相干扰,产生差频的噪声。本文将以共输入的二路DC/DC变换器为例,来讨论差频的噪声产生原因和解决办法。

1、差频及产生原因

图1是一个典型的LCDTV应用电路,+12V直流输入电压通过两路DC/DC降压变换器分别输出+3.3V和+5V的直流电源。+3.3V和+5V分别给LCDTV的模拟电路和数字电路供电。