一、USB协议

0. 基本概念

一个【传输】(控制、批量、中断、等时):由多个【事务】组成;

一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。

USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。

1. 包(Packet)

包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。EOF不是一个包,而是一种电平状态,EOF期间不允许有数据传输。

注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,因此其帧编号的增加周期也为 1mS

  • USB总线上的情形是怎样的?

嵌入式分享合集53_数据

包是USB总线上数据传输的最小单位,不能被打断或干扰,否则会引发错误。若干个数据包组成一次事务传输,一次事务传输也不能打断,属于一次事务传输的几个包必须连续,不能跨帧完成。一次传输由一次到多次事务传输构成,可以跨帧完成。

USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图:

嵌入式分享合集53_事务处理_02

1.1 PID类型(即包类型)

嵌入式分享合集53_数据_03

嵌入式分享合集53_封包_04

1.2 Token Packets

嵌入式分享合集53_事务处理_05

此格式适用于IN、OUT、SETUP、PING。

PID 数据传输方向

IN Device->Host

OUT Host->Device

SETUP Host->Device

PING Device->Host

1.3 Start-of-Frame(SOF) Packets

SOF包由Host发送给Device。

  1. 对于full-speed总线,每隔1.00 ms ±0.0005 ms发送一次;
  2. 对于high-speed总线,每隔125 μs ±0.0625 μs发送一次;

SOF包构成如下图所示

嵌入式分享合集53_数据_06

嵌入式分享合集53_封包_07

1.4 Data Packets

嵌入式分享合集53_封包_08

有四种类类型的数据包:DATA0, DATA1, DATA2,and MDATA,且由PID来区分。DATA0和DATA1被定义为支持数据切换同步(data toggle synchronization)。

1.5 Handshake Packets

嵌入式分享合集53_事务处理_09

  • ACK: 对于IN事务,它将由host发出;对于OUT、SETUP和PING事务,它将由device发出。
  • NAK: 在数据阶段,对于IN事务,它将由device发出;在握手阶段,对于OUT和PING事务,它也将由device发出;host从不发送NAK包。

2. 事务(Transaction)

在USB上数据信息的一次接收或发送的处理过程称为事务处理(Transaction)即:The delivery of service to an endpoint。一个事务由一系统packet组成,具体由哪些packet组成,它取决于具体的事务。可能由如下包组成:

  • 一个token packet
  • 可选的data pcket
  • 可选的handshake packet
  • 可选的special packet

2.1 输入(IN)事务处理

输入事务处理:表示USB主机从总线上的某个USB设备接收一个数据包的过程。

  • 【正常】的输入事务处理

嵌入式分享合集53_封包_10

  • 【设备忙】时的输入事务处理

嵌入式分享合集53_嵌入式硬件_11

  • 【设备出错】时的输入事务处理

嵌入式分享合集53_封包_12

2.2. 输出(OUT)事务处理

输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。

  • 【正常】的输出事务处理

嵌入式分享合集53_封包_13

  • 【设备忙时】的输出事务处理

嵌入式分享合集53_事务处理_14

  • 【设备出错】的输出事务处理

嵌入式分享合集53_事务处理_15

2.3 设置(SETUP)事务处理

  • 【正常】的设置事务处理

嵌入式分享合集53_事务处理_16

  • 【设备忙时】的设置事务处理

嵌入式分享合集53_事务处理_17

  • 【设备出错】的设置事务处理

嵌入式分享合集53_事务处理_18

3. USB传输类型

在USB的传输中,定义了4种传输类型:

  • 控制传输 (Control Transfer)
  • 中断传输 (Interrupt Transfer)
  • 批量传输 (Bulk Transfer)
  • 同步传输 (Isochronous)

3.1 控制传输 (Control Transfer)

控制传输由2~3个阶段组成:

  1. 建立阶段(Setup)
  2. 数据阶段(无数据控制没有此阶段)(DATA)
  3. 状态阶段(Status)

每个阶段都由一次或多次(数据阶段)事务传输组成(Transaction)。

控制数据由USB系统软件用于配置设备(在枚举时),其它的驱动软件可以选择使用control transfer实现具体的功能,数据传输是不可丢失的。

3.1.1 建立阶段

主机从USB设备获取配置信息,并设置设备的配置值。建立阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容(即:在Data Stage中IN或OUT的data包个数,及发送方向,在Setup Stage已经被设定)。

嵌入式分享合集53_嵌入式硬件_19

3.1.2 数据阶段

根据数据阶段的数据传输的方向,控制传输又可分为3种类型:

  1. 控制读取(读取USB描述符)
  2. 控制写入(配置USB设备)
  3. 无数据控制

数据传输阶段:用来传输主机与设备之间的数据。

  • 控制读取

是将数据从设备读到主机上,读取的数据USB设备描述符。该过程如下图的【Control Read】所示。对每一个数据信息包而言,首先,主机会发送一个IN令牌信息包,表示要读数据进来。然后,设备将数据通过DATA1/DATA0数据信息包回传给主机。最后,主机将以下列的方式加以响应:当数据已经正确接收时,主机送出ACK令牌信息包;当主机正在忙碌时,发出NAK握手信息包;当发生了错误时,主机发出STALL握手信息包。

  • 控制写入

是将数据从主机传到设备上,所传的数据即为对USB设备的配置信息,该过程如下的图【Control Wirte】所示。对每一个数据信息包而言,主机将会送出一个OUT令牌信息包,表示数据要送出去。紧接着,主机将数据通过DATA1/DATA0数据信息包传递至设备。最后,设备将以下列方式加以响应:当数据已经正确接收时,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包;当发生了错误时,设备发出STALL握手信息包。

嵌入式分享合集53_嵌入式硬件_20

3.1.3 状态阶段

状态阶段:用来表示整个传输的过程已完全结束。

状态阶段传输的方向必须与数据阶段的方向相反,即原来是IN令牌封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个阶段应为IN令牌封包。

对于【控制读取】而言,主机会送出OUT令牌封包,其后再跟着0长度的DATA1封包。而此时,设备也会做出相对应的动作,送ACK握手封包、NAK握手封包或STALL握手封包。

相对地对于【控制写入】传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0长度的DATA1封包,主机再做出相对应的动作:送ACK握手封包、NAK握手封包或STALL握手封包。

3.2 批量传输 (Bulk Transfer)

用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机、存储设备等。

批量传输是可靠的传输,需要握手包来表明传输的结果。若数据量比较大,将采用多次批量事务传输来完成全部数据的传输,传输过程中数据包的PID 按照 DATA0-DATA1-DATA0-…的方式翻转,以保证发送端和接收端的同步。

USB 允许连续 3次以下的传输错误,会重试该传输,若成功则将错误次数计数器清零,否则累加该计数器。超过三次后,HOST 认为该端点功能错误(STALL),放弃该端点的传输任务。

一次批量传输(Transfer)由 1 次到多次批量事务传输(Transaction)组成。

翻转同步:发送端按照 DATA0-DATA1-DATA0-…的顺序发送数据包,只有成功的事务传输才会导致 PID 翻转,也就是说发送端只有在接收到 ACK 后才会翻转 PID,发送下一个数据包,否则会重试本次事务传输。同样,若在接收端发现接收到到的数据包不是按照此顺序翻转的,比如连续收到两个 DATA0,那么接收端认为第二个 DATA0 是前一个 DATA0 的重传。

它通过在硬件级执行“错误检测”和“重传”来确保host与device之间“准确无误”地传输数据,即可靠传输。它由三种包组成(即IN事务或OUT事务):

  1. token
  2. data
  3. handshake

嵌入式分享合集53_嵌入式硬件_21

  1. For IN Token (即:IN Transaction)
  • ACK: 表示host正确无误地接收到数据
  • NAK: 指示设备暂时不能返回或接收数据 (如:设备忙)
  • STALL:指示设备永远停止,需要host软件的干预 (如:设备出错)
  1. For OUT Token (即:OUT Transaction)

如果接收到的数据包有误,如:CRC错误,Device不发送任何handshake包

  • ACK: Device已经正确无误地接收到数据包,且通知Host可以按顺序发送下一个数据包
  • NAK: Device 已经正确无误地接收到数据包,且通知Host重传数据,由于Device临时状况(如buffer满)
  • STALL: 指示Device endpoint已经停止,且通知Host不再重传
  1. Bulk读写序列

嵌入式分享合集53_事务处理_22

即由一系统IN事务或OUT事务组成。

3.3 中断传输(Interrupt Transfer)

中断传输由IN或OUT事务组成。

中断传输在流程上除不支持PING 之外,其他的跟批量传输是一样的。他们之间的区别也仅在于事务传输发生的端点不一样、支持的最大包长度不一样、优先级不一样等这样一些对用户来说透明的东西。

主机在排定中断传输任务时,会根据对应中断端点描述符中指定的查询间隔发起中断传输。中断传输有较高的优先级,仅次于同步传输。

同样中断传输也采用PID翻转的机制来保证收发端数据同步。下图为中断传输的流程图。

中断传输方式总是用于对设备的查询,以确定是否有数据需要传输。因此中断传输的方向总是从USB设备到主机。

嵌入式分享合集53_封包_23

DATA0或DATA1中的包含的是中断信息,而不是中断数据。

3.4 同步传输(Isochronous Transfer)

  1. 它由两种包组成:
  2. token
  3. data

同步传输不支持“handshake”和“重传能力”,所以它是不可靠传输。

同步传输是不可靠的传输,所以它没有握手包,也不支持PID翻转。主机在排定事务传输时,同步传输有最高的优先级。

同步传输适用于必须以固定速率抵达或在指定时刻抵达,可以容忍偶尔错误的数据上。实时传输一般用于麦 克风、喇叭、UVC Camera等设备。实时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。

嵌入式分享合集53_嵌入式硬件_24

二、PWM相关

PWM有着非常广泛的应用,比如直流电机的无极调速,开关电源、逆变器等等,个人认为,要充分理解或掌握模拟电路、且有所突破,很有必要吃透这三个知识点:

  • PWM
  • 电感
  • 纹波

PWM是一种技术手段,PWM波是在这种技术手段控制下的脉冲波,如果你不理解是把握不住PWM波的!

如图1所示,这种比喻很形象也很恰当,希望对学习的朋友有所帮助与启发。

嵌入式分享合集53_嵌入式硬件_25

图1:形象的比喻

PWM全称Pulse Width Modulation:脉冲宽度调制(简称脉宽调制,通俗的讲就是调节脉冲的宽度),是电子电力应用中非常重要的一种控制技术,在理解TA之前我们先来了解几个概念 。

脉冲波的基本信息如图2所示:

嵌入式分享合集53_数据_26

图2:脉冲波的基本信息

  • 脉冲周期T:单位是时间,比如纳秒ns、微秒μs、毫秒ms等;
  • 脉冲频率f:单位是赫兹Hz、千赫兹kHz等,与脉冲周期成倒数关系,即f=1/T;
  • 脉冲宽度W:简称脉宽,是脉冲高电平持续的时间,单位是时间,比如纳秒ns、微秒μs、毫秒ms等;
  • 占空比D:脉宽除以脉冲周期得到的值,百分数表示,比如50%,也常有小数或分数表示的,比如0.5或1/2。

以上之间的关系如图3所列的公式:

嵌入式分享合集53_封包_27

图3:公式

工程应用中的PWM波是幅值、周期(或频率)不变,脉宽(或占空比)可调的脉冲波,接下来我们来认清该PWM波到底是什么,TA隐藏着什么思想?

当我们想要控制一个直流电机的转速,我们可以通过改变其两端电压即可,但是该种方法有很大的局限性,可调直流电源构造复杂、成本高昂,应用起来很不现实。

所以我们采用另外的控制方式:电压源→驱动器→直流电机,电压源提供直流电压,不同的驱动器控制不同的直流电机,应用非常灵活,其中驱动器对电机的调速控制就是利用PWM。

可调直流电源控制与PWM控制都是能调速的,那么它们有什么相同之处呢?

如图4—图7,电机为某相同转速时,红色代表驱动器输出幅值不变的PWM波,蓝色代表可调直流电源输出的电压,两者都是直接作用到负载。

嵌入式分享合集53_嵌入式硬件_28

图4

嵌入式分享合集53_事务处理_29

图5

嵌入式分享合集53_事务处理_29

图6

嵌入式分享合集53_嵌入式硬件_31

图7

由以上得知:

当PWM波的占空比越大时,所对应的直流电压与PWM波的幅值越接近;反之与0V越接近。

周期的红色PWM波脉宽下的矩形面积之和与蓝色直流电压的面积相等,即伏秒积相等:

U红(幅值) × ton = U蓝 × T

两端同时除以T,得到如下关系式:

U红(幅值) × 占空比 = U蓝

例如当PWM波的幅值为24V,占空比为50%时,与直流电压12V作用到电机上所产生的效果是一模一样的,即速度相同,即24V×50%=12V。

另外,既然满足这个关系,那PWM波的频率是不是可以随意了,答案当然不是,频率太低会导致电机运转不畅,振动大,噪音大;频率太高会导致驱动器开关损耗较大,甚至有电机会啸叫而不转的情况。

一般1k~30k的PWM频率较为普遍,几百Hz的也有,实际上还是根据电机功率在测试时确定合适的PWM频率范围为宜。

如图8为实物测试,脉宽在变化,周期不变的PWM波,所加负载如图9所示。

嵌入式分享合集53_事务处理_32

图8:扭动旋钮控制脉宽变化

如图9为实物测试,有刷直流电机的PWM无极调速,其中LED是并联在电机输入端的,其亮度反映电机速度的变化。

嵌入式分享合集53_数据_33

图9:PWM控制电机调速

要点:

  • PWM波其实就是一种脉宽可连续调节的矩形脉冲波;
  • 占空比其实就是描述脉宽与脉冲周期的比值,是量化值,便于分析研究,当我们用占空比来表达时,对脉宽就不那么关心了;
  • 占空比调节就是脉宽调节,表达不一样,但本质是一样的;
  • PWM波满足伏秒积计算:U红(幅值) × 占空比 = U蓝,作用效果与直流电压一样。

三、PWM原理

WM(Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、工控等方面。

PWM的频率

    是指在1秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说一秒钟PWM有多少个周期,单位Hz。

PWM的周期

    T=1/f,T是周期,f是频率。

    如果频率为50Hz ,也就是说一个周期是20ms,那么一秒钟就有 50次PWM周期。

占空比

    是一个脉冲周期内,高电平的时间与整个周期时间的比例,单位是% (0%-100%)

    一个周期的长度,如下图所示。

嵌入式分享合集53_数据_34

    其中,周期是一个脉冲信号的时间,1s内的周期T次数等于频率f,脉宽时间是指高电平时间。

    上图中,脉宽时间占总周期时间的比例,就是占空比。

    比方说,周期的时间是10ms,脉宽时间是8ms,那么占空比是8/10= 80%,这就是占空比为80%的脉冲信号。

    PWM就是脉冲宽度调制,通过调节占空比就可以调节脉冲宽度。

PWM原理

    以STM32单片机为例,其IO口只能输出高电平和低电平。

    假设高电平为5V、低电平则为0V,那么要输出不同的模拟电压就要用到PWM。通过改变IO口输出的方波的占空比,从而获得使用数字信号模拟成的模拟电压信号。

    电压是以一种脉冲序列被加到模拟负载上去的,接通时是高电平1,断开时是低电平0。接通时直流供电输出,断开时直流供电断开。通过对接通和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值5V的模拟电压。

    比方说,占空比为50%那就是高电平时间一半,低电平时间一半。在一定的频率下,就可以得到模拟的2.5V输出电压。那么75%的占空比,得到的电压就是3.75V,如下图所示。

嵌入式分享合集53_数据_35

    也就是说,在一定的频率下,通过不同的占空比即可得到不同大小的输出模拟电压,PWM就是通过这种原理实现数字模拟信号转换的。

PWM应用

LED呼吸灯

    以经常使用的呼吸灯举例。

    一般人眼睛对于80Hz以上刷新频率则完全没有闪烁感,那么我们平时见到的LED灯,当它的频率大于50Hz的时候,人眼就会产生视觉暂留效果,基本就看不到闪烁了,而是误以为是一个常亮的LED灯。

    由于频率很高时看不到闪烁,占空比越大LED越亮,占空比越小LED越暗。所以,在频率一定时,可以用不同占空比改变LED灯的亮度,使其达到一个呼吸灯的效果。

PWM对电机转速的控制

    调节占空比可以实现不同电压的输出,实现对电机转速的调节。

    对于直流电机来讲,电机输出端引脚是高电平电机就可以转动,当输出端高电平时,电机会转动,但是是一点一点的提速,在高电平突然转向低电平时,电机由于电感有防止电流突变的作用是不会停止的,会保持这原有的转速,以此往复,电机的转速就是周期内输出的平均电压值,所以实质上我们调速是将电机处于一种,似停非停,似全速转动又非全速转动的状态,那么在一个周期的平均速度就是我们占空比调出来的速度了。

    在电机控制中,电压越大,电机转速越快,而通过PWM输出不同的模拟电压,便可以使电机达到不同的输出转速。

    当然,在电机控制中,不同的电机都有其适应的频率 频率太低会导致运动不稳定,如果频率刚好在人耳听觉范围,有时还会听到呼啸声。频率太高时,电机可能反应不过来,正常的电机频率在 6-16kHZ之间为好。

PWM对舵机的控制

    舵机的控制就是通过一个固定的频率,给其不同的占空比来控制舵机不同的转角。

    舵机的频率一般为频率为50HZ,也就是一个20ms左右的时基脉冲,而脉冲的高电平部分一般为0.5ms-2.5ms范围,来控制舵机不同的转角。

    500-2500us的PWM高电平部分对应控制180度舵机的0-180度。

    以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms-------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

    下图演示占空比从1ms变化到2ms时,转角的变化。

嵌入式分享合集53_事务处理_36

四、PWM控制电机转速的原理

经常使用的直流电机原理就是电生磁:通电导线会产生磁场。

    也就是电磁感应 旋转磁场带动转子转动。

    电动机是由定子和转子组成,一个产生旋转磁场,一个为磁极,电机的转子(轴承)就转起来了。

    这便实现了电能->磁能->机械能的转换。

    下面这个图可以更直观的理解:

嵌入式分享合集53_嵌入式硬件_37

PWM原理

    通过上文大概知道,通过PWM控制电机速度,实际上是控制供电电流的大小来实现。

    通电导线在磁场中受到的力称为安培力,而安培力的公式:F=BIL。

    其中,F是受力大小,I是电流大小,L是导线长度。在其他条件不变的情况下,控制其通过的电流即控制安培力的大小。

    电机的电阻R 是基本不变的,那么电流 I = U/R,F= BLU/R。

    在R B L不变的情况,控制安培力的大小,本质就是修改供电电压的大小。

    我们也就知道,控制电机转速的本质就是给电机供不同的供电电压,电压越大,电机转速越快。

    而PWM的本质就是脉宽调制,通过输出不同的占空比,从而将直流电压转换成不同电压值的模拟信号。

控制电机速度

    占空比可以实现对电机转速的调节,我们知道,占空比是高电平在一个周期之中的比值,高电平的所占的比值越大,占空比就越大,对于直流电机来讲,电机输出端引脚是高电平电机就可以转动,当输出端高电平时,电机会转动,但是是一点一点的提速,在高电平突然转向低电平时,电机由于电感有防止电流突变的作用是不会停止的,会保持这原有的转速,以此往复,电机的转速就是周期内输出的平均电压值,所以实质上我们调速是将电机处于一种,似停非停,似全速转动又非全速转动的状态,那么在一个周期的平均速度就是我们占空比调出来的速度了。

总结

    在电机控制中,电压越大,电机转速越快,而通过PWM输出不同的模拟电压,便可以使电机达到不同的输出转速。

    当然,在电机控制中,不同的电机都有其适应的频率 频率太低会导致运动不稳定,如果频率刚好在人耳听觉范围,有时还会听到呼啸声。频率太高的电机可能反应不过来,正常的电机频率在 6-16kHZ之间为好。

    输出的电压就不同,电机转速就不同。那我们可以知道,通过滑动变阻器或者更换不同电压的电源都可以实现电机的调速,但是在实际应用中显然PWM更方便些。

    专业一点的话就是:

    所谓PWM就是脉宽调制器,通过调制器给电机提供一个具有一定频率的脉冲宽度可调的脉冲电。脉冲宽度越大即占空比越大,提供给电机的平均电压越大,电机转速就高。反之脉冲宽度越小,则占空比越越小。提供给电机的平均电压越小,电机转速就低。

 

五、把PWM信号转为模拟量

  有一个测量位置变化的位置传感器,用万用表电压档测量传感器的输出信号,结果显示的是模拟量信号,即位置和信号输出大小呈线性关系。但是,用示波器(Picoscope 4227)测量传感器的输出信号,显示的却是PWM信号(脉宽调制),即位置不同,输出PWM信号的占空比不同。

   PWM信号的参数是:200 Hz, 低电平为0V,高电平为18V。

    现在可以确定,我的传感器输出信号是PWM信号。PWM信号需要输入到控制器I/O中,但是控制器I/O口不具备直接采集PWM信号的功能。

解决方案

    设计个电路,将PWM信号转化为模拟量信号,然后将转换后的模拟量信号输入到控制器模拟量I/O口。

转换电路

    1. 二阶压控有源低通滤波电路。

    设计一个深度滤波电路。滤波电路图为:

嵌入式分享合集53_封包_38

    低通滤波频率公式为:f=1/(2π*RC),我最后选择R=1K,C=10uf,算出的低通截止频率f=15.9HZ。

    滤波电路后端是一个运算放大器,放大倍数公式:A=1+Rf/R1。我不希望电压被放大,所以我选择A=1.1。又因为R1//Rf=2R(R1,Rf两者并联的值等于R串联值),最终:Rf=220欧,R1=2.2k,R=1k。

    2. 积分电路(无源滤波电路)

    低通滤波电路前面是一个二级积分电路(将两个电容都接地),R=1K,C=10uf。下图是一级积分电路,设计的积分电路是将两个下图电路串联构成二级积分积分:

嵌入式分享合集53_数据_39

    为验证电路效果进行的测试,我使用的设备是PicoScope4227,由于该设备最大只能生成正负1V的电压信号,就生成了幅值为1V(低电平0V,高电平1V),频率为200HZ的PWM信号作为积分电路的输入信号。各种效果图如下:

    示波器直接采集发生器生成的PWM信号,波形如下:

嵌入式分享合集53_嵌入式硬件_40

    示波器从二阶滤波电路输入端采集信号,波形如下。发现该号波形与上图的波形相比已经发生了变化。

嵌入式分享合集53_数据_41

    示波器从一阶滤波电路输出端中采集到的信号波形,即滤波电路从左往右数,第一个电阻与第一个电容交点的输出波形:

嵌入式分享合集53_嵌入式硬件_42

     滤波器从二阶滤波电路输出端采集到的信号波形,即最终输出信号波形。

嵌入式分享合集53_事务处理_43

问题

    1:为什么万用表电压档测量传感器输出信号,结果是模拟量信号,而示波器看到的是PWM信号?我该相信哪个结果?

    答:这个问题牵涉到测量输入口的分辨率问题。万用表输入口的分辨率低(通过此例看低于200HZ),而示波器输入口的分辨率高,可达几千,甚至几兆赫兹频率,所以输出的结果不同。我们要相信示波器显示的结果。我理解PWM信号本质还是希望达到模拟量的效果,只是表现形式不同。

    2:关于计算公式

    答:在低通滤波电路中,有个频率公式f=1/(2π*RC), 它计算的是低通截止频率(-3dB)。而在积分电路中,有个公式T=RC。 这个 T 是指电容充放电需要的时间。选取 T 时,根据一般经验公式,T>10 * T'(T'表示信号周期)。

    在本例的积分电路中,RC=10ms,只有两倍的信号周期,但是通过测试,信号效果还是比较理想的。如果将更多的积分电路串联,效果会更好。

    3:PWM 信号被控制器采集还有其他方案吗?

    答:方案一:将PWM信号倍频,就是提高PWM信号的频率,但是占空比不变化。PWM倍频后的频率大于控制器I/O的分辨率,就可以被控制器默认为做模拟量,从而可以输入到模拟量I/O。

    方案二:通过软件办法计算PWM的占空比。在控制器中编写程序,首先定时,测量这段时间内PWM信号中高电平的时间,从而计算出占空比。

六、PCB Layout的设计

在集成电路应用设计中,项目原理图设计完成之后,就需要进行PCB布板的设计。PCB设计是一个至关重要的环节。设计结果的优劣直接影响整个设计功能。

    因此,合理高效的PCB Layout是芯片电路设计调试成功中至关重要的一步。本次我们就来简单讲一讲PCB Layout的设计要点。

元器件封装选择

    电阻选择: 所选电阻耐压、最大功耗及温度不能超出使用范围。

嵌入式分享合集53_封包_44

    电容选择: 选择时也需要考虑所选电容的耐压与最大有效电流。

嵌入式分享合集53_嵌入式硬件_45

  

    电感选择: 所选电感有效值电流、峰值电流必须大于实际电路中流过的电流。

电路设计常见干扰

    串扰: 设计线路平行走线距离过长时, 导线间的互容、互感将能量耦合至相邻的传输线。可以通过以下方法减少串扰影响:

1.加入安全走线

嵌入式分享合集53_封包_46

2.实际时尽量让相邻走线互相垂直

嵌入式分享合集53_封包_47

3.每走一段距离的平行线,增大两者间的间距

嵌入式分享合集53_事务处理_48

    反射:由于布线的弯角、分支太多造成传输线上阻抗不匹配,可以通过减少线路上的弯角及分支线或者避免直角走线及分支线补强来进行改善。

嵌入式分享合集53_事务处理_49

确定接地方式

    单点接地(适用于低频电路):所有的电路接地线接到公共地线同一点, 接线简单且减少地线回路相互干扰。

嵌入式分享合集53_嵌入式硬件_50

    多点接地(适用于多层板电路/高频电路):系统内部各部分就近接地,提供较低的接地阻抗。

嵌入式分享合集53_封包_51

增加滤波、旁路电容

    为保证输入/输出电压稳定,增加输入/输出电容。

嵌入式分享合集53_数据_52

 

    在电源和IC间增加旁路电容,以保证输入电压稳定并滤除高频噪声。

嵌入式分享合集53_事务处理_53

阻抗位置设计

    相对来说阻抗越高的位置, 越容易被干扰。如下为一同步降压芯片的PCB阻抗位置设计。

嵌入式分享合集53_事务处理_54

 

嵌入式分享合集53_数据_55

电源/地线处理

    既使在整个PCB板中的布线完成得都很好,但由于电源、 地线的考虑不周到而引起的干扰,会使产品的性能下降: 电路中的GND,它的本质是什么?布线时尽量加宽电源、地线宽度,最好是地线比电源线宽,它们的关系是:地线>电源线>信号线。

    对数字电路的PCB可用宽的地导线组成一个回路, 即构成一个地网来使用(模拟电路不能使用该方法)。

    用大面积敷铜层作地线用,在印制板上把没被用上的地方都与地相连接作为地线用。或是做成多层板,电源、地线各占用一层。

数字与模拟电路的共地处理

    数字电路与模拟电路的共地处理:数字电路与模拟电路共同存在时,布线需要考虑之间互相干扰问题,特别是地线上的噪音干扰。

    数字电路的频率高,模拟电路的敏感度强,对信号线来说,高频的信号线尽可能远离敏感的模拟电路器件。

    对地线来说,整个PCB对外连接界只有一个端口,所以必须在PCB内部进行处理数、模共地的问题,而在板内部数字地和模拟地实际上是分开的它们之间互不相连,只是在PCB与外界连接的端口处(如插头等), 数字地与模拟地有一点短接,请注意,只有一个连接点。

信号线分布层

    信号线布在电源(地)层上: 在多层印制板布线时,由于在信号线层没有布完的线剩下已经不多,再多加层数就会造成浪费也会给生产增加一定的工作量,成本也相应增加了,

为解决这个矛盾,可以考虑在电(地)层上进行布线。首先应考虑用电源层,其次才是地层。因为最好是保留地层的完整性。

信号流向设计

    PCB布局设计时,应充分遵守沿信号流向直线放置的设计原则,尽量避免来回环绕。

嵌入式分享合集53_事务处理_56

嵌入式分享合集53_封包_57

PCB Layout设计实例

嵌入式分享合集53_数据_58

 Layout设计建议

1. 驱动芯片与功率MOSFET摆放尽可能靠近;

2. VCC-GND(CVCC) / VB-VS(CBS)电容尽可能靠近芯片;

3. 芯片散热焊盘加一定数量过孔并且与GND相连接(增加散热、减小寄生电感);

4. GND布线直接与MOSFET 源极(source)相连接, 且避免与源极(source)-漏极(drain)间大电流路径相重合, VS 同理GND布线原则(避免功率回路与驱动回路重合);

5. HO/LO布线尽量宽(60mil-100mil,驱动电流比较高,降低寄生电感的影响);

6. LIN/HIN 逻辑输入端口尽量远离HS布线(避免过高的电压摆动干扰到输入信号)。

嵌入式分享合集53_事务处理_59