上篇文章讲的 UART,更多的是硬件相关的知识。接下来进入正题了,串口驱动开发。
一、阅读原理图
我们用的是 UART2 串口,则接收管脚 XuRXD2 复用 GPA1_0,发送管脚 XuTXD2 复用 GPA1_1
二、S5PV210 UART
(1)通用异步接收器和发送器的概述 (p-853)
S5PV210中的通用异步接收器和发送器(UART)提供四个独立的异步和串行输入/输出(I / O)端口。所有端口都以基于中断或基于DMA的方式运行模式。 UART产生一个中断或DMA请求来传送数据到CPU和UART。
UART支持高达3Mbps的比特率。每个UART通道包含两个FIFO来接收和传输数据:
ch0中的256个字节,ch1中的64个字节以及ch2和ch3中的16个字节。
UART包括可编程波特率,红外(IR)发送器/接收器,一个或两个停止位插入,5位,6位,7位或8位数据宽度和奇偶校验。每个UART包含一个波特率发生器,一个发送器,一个接收器和一个控制单元,如图1-1所示。
波特率发生器使用PCLK或SCLK_UART。发送器和接收器包含FIFO和数据移。要发送的数据被写入Tx FIFO,并被复制到发送移位器。数据是由发送数据引脚(TxDn)移出。接收到的数据从接收数据引脚(RxDn)移位,从移位器复制到Rx FIFO。
(2)通用异步接收器和发送器的关键特性
基于DMA或基于中断的操作的RxD0,TxD0,RxD1,TxD1,RxD2,TxD2,RxD3和TxD3
带有IrDA 1.0的UART Ch 0,1,2和3
具有256字节FIFO的UART Ch 0,具有64字节FIFO的Ch 1,具有16字节FIFO的Ch2和3
用于自动流量控制的UART Ch 0,1和2与nRTS0,nCTS0,nRTS1,nCTS1,nCTS2和nRTS2
支持握手发送/接收。
(3)UART描述
以下各节将介绍UART操作,如数据传输,数据接收,中断生成,波特率生成,环回模式,红外模式和自动流量控制。
《1》数据发送
传输的数据帧是可编程的。 它由一个起始位,五到八个数据位,一个可选的奇偶校验组成位和由行控制寄存器(ULCONn)指定的一到两个停止位。 变送器也可以产生一个强制串行输出为逻辑0状态一个帧传输时间的中断条件。 这个块传送当前发送字之后的中断信号被完全发送。 中断信号后传输时,发送器不断向Tx FIFO发送数据(Tx保持寄存器,如果是非FIFO模式)
《2》数据接收
与数据发送类似,用于接收的数据帧也是可编程的。 它由一个5位的起始位组成8个数据位,一个可选的奇偶校验位以及线路控制寄存器(ULCONn)中的一到两个停止位。 收件人检测溢出错误,奇偶校验错误,帧错误和中断情况,每个错误标志都会设置一个错误标志。
溢出错误(Overrun error)表示新数据在旧数据读取之前覆盖旧数据。
奇偶校验错误(Parity error)表示接收器检测到意外的奇偶校验条件。
帧错误(Frame error)表示接收到的数据没有有效的停止位。
中断条件(Break condition)表示RxDn输入保持逻辑0状态,以进行多个帧传输时间。
如果在3个字的时间内没有收到任何数据,则会发生接收超时情况(此时间间隔符合设置字长度位),FIFO模式下Rx FIFO不为空。
后面内容有点多... 就不一一翻译了。想了解更多,自己看。
三、UART 相关配置
(1)配置串口管脚
上面提到了,S5PV210 中的通用异步接收器和发送器(UART)提供四个独立的异步和串行输入/输出(I / O)端口。根据原理图可以看出,我们用的是 UART2 串口,则接收管脚 XuRXD2 复用 GPA1_0,发送管脚 XuTXD2 复用 GPA1_1
查看GPA1寄存器(p-135)
端口组GPA1控制寄存器有六个控制寄存器,分别是GPA1CON,GPA1DAT,GPA1PUD,GPA1DRV,GPA1CONPDN和端口组GPA1控制寄存器中的GPA1PUDPDN。
《1》GPA1CON 寄存器 (配置寄存器) 将其配置成UART2收/发模式
GPA1CON, R/W, Address = 0xE020_0020
GPA1CON[1] [7:4] 0100 = UART_AUDIO_TXD
GPA1CON[0] [3:0] 0100 = UART_AUDIO_RXD
设置:
GPA1CON 地址为 0xE020_0020,然后要将 GPA1CON[7:0] 进行位操作,使其变为0010 0010,即UART2收发模式。
位操作方法,参看:C语言再学习 -- 位操作
GPA1CON &= ~(0xff<<0); //清空bit 0-7
GPA1CON |= 0x22; //设置 0010 0010 接受 发送
《2》GPA1PUD 寄存器(上下拉电阻控制寄存器 )
GPA1PUD, R/W, Address = 0xE020_0028
GPA1PUD[n] [2n+1:2n] 00 = Pull-up/ down disabled
设置:
GPA1PUD 地址为 0xE020_0028,我们不需要上下拉,因此:
GPA1PUD [1:0] 00 = Pull-up/ down disabled
GPA1PUD [3:2] 00 = Pull-up/ down disabled
位操作方法:
GPA1PUD &= ~(0x0f<<0);//0000 禁止上拉下拉
(2)配置串口寄存器
在 p-864 有一个 REGISTER MAP,可以看一下。太长了只粘贴一部分。
S5PV10 UART 相关寄存器有如下几个,下面我们会一一讲解的:
《1》UART 行控制器 ULCONn
UART模块中有四个UART行控制寄存器,分别是ULCON0,ULCON1,ULCON2和ULCON3
我们用的是 UART2,所以使用
ULCON2, R/W, Address = 0xE290_0800
设置:
ULCON2 地址为 0xE290_0800
数据位宽度为 8bit,停止位 1位,无校验位,正常模式。
即设置数据格式寄存器 ULCON2 = 000 0011 = 0x03
位操作方法:
ULCON2 = 0x03;
《2》UART 模式控制寄存器 UCONn
UART模块中有四个UART控制寄存器,分别是UCON0,UCON1,UCON2和UCON3
我们用的是 UART2,所以使用
UCON2, R/W, Address = 0xE290_0804
设置:
UCON2 地址为 0xE290_0804
接收模式选择轮询,发送模式也选择轮询,正常发送暂停信号,回环模式为正常,时钟源选择 PCLK
即模式控制寄存器 UCON2 = 00 0101 = 0x05;
位操作方法:
UCON2 = 0x05;
需要知道的小知识点:
在收发模式里有中断、轮询、DMA这些有什么区别呢?
参看:后续补充!!
再者,时钟源选择里有 PCLK、SCLK_UART 这又是什么呢?
参看:后续补充!!
《3》UART FIFO 控制寄存器UFCONn
UART模块中有四个UART FIFO控制寄存器,分别是UFCON0,UFCON1,UFCON2和UFCON3
我们用的是 UART2,所以使用
UFCON2, R/W, Address = 0xE290_0808
设置:
UFCON2 地址为 0xE290_0808
禁止 FIFO,即FIFO 控制寄存器 UFCON2 = 0x00;
位操作方法:
UFC0N2 = 0X00;
《4》UART 收/发 状态寄存器 UTRSTATn
UART模块中有四个UART Tx / Rx状态寄存器,分别是UTRSTAT0,UTRSTAT1,UTRSTAT2和UTRSTAT3
我们用的是 UART2,所以使用
UTRSTAT2, R, Address = 0xE290_0810
设置:
UTRSTAT2 地址为 0xE290_0810
接收缓冲区数据准备好,缓冲区为空;发送缓冲区寄存器为空。即 UTRSTAT2 = 10 = 0x02;
只有收发缓冲区为空,才能进行收发。所以首先要先判断 UART 收/发 状态寄存器 UTRSTATn
位操作方法:
UTRSTAT2 = 0x02;
《5》UART 发送缓冲寄存器(保持寄存器和FIFO寄存器)UTXHn
UART模块有四个UART发送缓冲寄存器,分别是UTXH0,UTXH1,UTXH2和UTXH3。
UTXHn包含传输数据的8位数据。
我们用的是 UART2,所以使用
UTXH2, W, Address = 0xE290_0820
设置:
UTXH2 地址为 0xE290_0820
比如发送的数据:55,则 UTXH2 = 0101 0101 = 0x55;
发送移位器:发送缓冲寄存器中的数据并不是直接传送到输出管脚TXD2(GPA1_1),还必须先送到发送移位器(Transmit shifter),然后再由Transmit shifter通过移位操作,将数据一位一位的发送到TXD2管脚上。
《6》UART接收缓冲寄存器(保持寄存器和FIFO寄存器)URXHn
UART模块中有四个UART接收缓冲寄存器,分别是URXH0,URXH1,URXH2和URXH3。
URXHn包含接收数据的8位数据。
我们用的是 UART2,所以使用
URXH2, R, Address = 0xE290_0824
设置:
URXH2 地址为 0xE290_0824
比如接收到的数据:55,则 URXH2 = 0101 0101 = 0x55;
接收移位器:从接收管脚RXD2上接收来的数据并不是直接放到接收缓冲寄存器,而是先一位一位的放到接收移位器中,当收满一个字节后,再放到接收缓冲寄存器中。
《7》UART 通道波特率分频寄存器 UBRDIVn
UART模块中有四个UART通道波特率分频寄存器,分别是UBRDIV0,UBRDIV1,UBRDIV2和UBRDIV3。
我们用的是 UART2,所以使用
UBRDIV2, R/W, Address = 0xE290_0828
注意:当UART时钟源是PCLK时,UBRDIVn必须大于比0(UBRDIVn> 0),如果UBRDIV的值为0,则UART波特率不受UDIVSLOT值的影响。
设置:
UBRDIV2 地址为 0xE290_0828
《8》UART通道分割插槽寄存器 UDIVSLOTn
UART模块中有四个UART通道波特率分频寄存器,分别是UDIVSLOT0,UDIVSLOT1,UDIVSLOT2和UDIVSLOT3。
我们用的是 UART2,所以使用
UDIVSLOT2, R/W, Address = 0xE290_082C
================================================
需要知道的小知识点:
波特率,在UART里面是一个很重要的概念。
参看:串口通信 -- 百度百科
数据传输率
数据传输率是指单位时间内传输的信息量,可用比特率和波特率来表示。
⑴比特率:比特率是指每秒传输的二进制位数,用bps(bit/s)表示。
⑵波特率:波特率是指每秒传输的符号数,若每个符号所含的信息量为1比特,则波特率等于比特率。在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚好为1比特,因此在计算机通信中,常将比特率称为波特率,即:
1波特(B)= 1比特(bit)= 1位/秒(1bps) 例如:电传打字机最快传输率为每秒10个字符/秒,每个字符包含11个二进制位,则数据传输率为:10Baud。11位/字符×10个字符/秒=110位/秒=110bps。计算机中常用的波特率是:110、300、600、1200、2400、4800、9600、19200、28800、33600,目前最高可达56Kbps.
⑶位时间Td
位时间是指传送一个二进制位所需时间,用Td 表示。Td = 1/波特率 = 1/B
例如:B=110波特/秒 , 则Td = 1/110 ≈ 0.0091s
发送时钟和接收时钟
在串行通信中,二进制数据以数字信号的信号形式出现,不论是发送还是接收,都必须有时钟信号对传送的数据进行定位。在TTL标准表示的二进制数中,传输线上高电平表示二进制1,低电平表示二进制0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。
⑴ 发送时钟
发送数据时,先将要发送的数据送入移位寄存器,然后在发送时钟的控制下,将该并行数据逐位移位输出。通常是在发送时钟的下降沿将移位寄存器中的数据串行输出,每个数据位的时间间隔由发送时钟的周期来划分。
⑵ 接收时钟
在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位检测,并将其移入接收器的移位寄存器中,最后组成并行数据输出。
⑶ 波特率因子
接收时钟和发送时钟与波特率有如下关系:F = n × B 这里F 是发送时钟或接收时钟的频率; B 是数据传输的波特率; n 称为波特率因子。设发送或接收时钟的周期为Tc,频率为F的位传输时间为Td,则: Tc = 1/F , Td = 1/B 得到: Tc = Td /n 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64,实际常采用n = 16,即发送或接收时钟的频率要比数据传送的波特率高n倍。在同步通信时,波特率因子n必须等于1。
================================================
UART波特率配置:
UART模块中有四个UART波特率除数寄存器,分别是UBRDIV0,UBRDIV1,UBRDIV2和UBRDIV3。
存储在波特率除数寄存器(UBRDIVn)中的值:
DIV_VAL = UBRDIVn + (num of 1's in UDIVSLOTn)/16
PLCK:DIV_VAL = (PCLK / (bps x 16))
或者
SLCK_UART:DIV_VAL = (SCLK_UART / (bps x 16))
简单来说:
内部系统时钟源 PCLK
外部时钟源 SCLK_UART
其中,除数应该是从1到(216-1)。
使用 UDIVSLOT,可以更准确地生成波特率。
例如,如果波特率是 115200 bps,SCLK_UART 是 40 MHz,则 UBRDIVn 和 UDIVSLOTn 是:
DIV_VAL = (40000000 / (115200 x 16)) -1
= 21.7 -1
= 20.7
UBRDIVn = 20(DIV_VAL的整数部分)
(UDIVSLOTn中1的个数)/ 16 = 0.7 (21.7 小数点后为 0.7)
那么(UDIVSLOTn中的1的个数)= 11 (取整数部分)
所以,UDIVSLOTn 可以是16'b 1110_1110_1110_1010或 16'b 0111_0111_0111_0101 等
建议按照下表所述选择UDIVSLOTn,即 UDIVSLOTn = 0xDDD5
回到我们自己的开发板上来:
我们在 《2》UART 模式控制寄存器 UCONn 中有提到 PCLK、SCLK_UART,其中的我们选择的是 PCLK。
PCLK:DIV_VAL1) = (PCLK / (bps x 16) )
=============================================
其中 PCLK 的值是怎么得到的呢?
查看芯片手册 CLOCK DOMAINS (p-353)
S5PV210由三个时钟域组成,即主系统(MSYS),显示系统(DSYS)和外设系统(PSYS),如图3-1所示。
•MSYS域包括Cortex A8处理器,DRAM内存控制器(DMC0和DMC1),3D内部SRAM(IRAM和IROM),INTC和配置接口(SPERI)。 Cortex A8仅支持同步模式,因此它必须与200MHz AXI总线同步运行。
•DSYS域包含显示相关模块,包括FIMC,FIMD,JPEG和多媒体IP(所有其他模块)在X,L和T块中提到的IP),如图3-1所示。
•PSYS域用于安全性,I / O外围设备和低功耗音频播放。
•每个总线系统分别工作在200 MHz(最大),166 MHz和133 MHz。 有异步总线桥(BRG)在两个不同的域之间。
在这里,得出 PCLK_PSYS 为 66 MHz。
=============================================
如果波特率是 115200 bps,PCLK 是 66 MHz,则 UBRDIV2 和 UDIVSLOT2 是:
DIV_VAL = (66000000 / (115200 x 16)) -1
= 35.8 -1
= 34
UBRDIV2 = 34(DIV_VAL的整数部分)
(UDIVSLOTn中1的个数)/ 16 = 0.8 (35.8 小数点后为 0.8)
那么(UDIVSLOTn中的1的个数)= 13 (四舍五入)
按照上表所述选择UDIVSLOT2,即 UDIVSLOT2 = 0xDFDD
(3)总结
《1》GPA1CON 寄存器 (配置寄存器) 将其配置成UART2收/发模式
GPA1CON 地址为 0xE020_0020
GPA1CON &= ~(0xff<<0); //清空bit 0-7
GPA1CON |= 0x22; //设置 0010 0010 接受 发送
《2》GPA1PUD 寄存器(上下拉电阻控制寄存器 )
GPA1PUD 地址为 0xE020_0028
GPA1PUD &= ~(0x0f<<0); //0000 禁止上拉下拉
《3》UART 行控制器 ULCONn (数据位宽度为 8bit,停止位 1位,无校验位,正常模式)
ULCON2 地址为 0xE290_0800
ULCON2 = 0x03;
《4》UART 模式控制寄存器 UCONn(接收/发送模式选择轮询,正常发送暂停信号,回环模式为正常,时钟源选择 PCLK)
UCON2 地址为 0xE290_0804
UCON2 = 0x05;
《5》UART FIFO 控制寄存器UFCONn(禁止 FIFO)
UFCON2 地址为 0xE290_0808
UFC0N2 = 0X00;
《6》UART 收/发 状态寄存器 UTRSTATn(接收缓冲区数据准备好,缓冲区为空;发送缓冲区寄存器为空)
UTRSTAT2 地址为 0xE290_0810
UTRSTAT2 = 0x02;
《7》UART 发送缓冲寄存器(保持寄存器和FIFO寄存器)UTXHn
UTXH2 地址为 0xE290_0820
char c = 'A';
UTXH2 = C;
《8》UART接收缓冲寄存器(保持寄存器和FIFO寄存器)URXHn
URXH2 地址为 0xE290_0824
char d;
d = URXH2 & 0xFF;
《9》UART 通道波特率分频寄存器 UBRDIVn(设置波特率为 115200)
UBRDIV2 地址为 0xE290_0828
UBRDIV2 = 34;
《10》UART通道分割插槽寄存器 UDIVSLOTn
UDIVSLOT2 地址为 0xE290_082C
UDIVSLOT2 = 0xDFDD;
四、编写驱动程序
此处用到关键字 volatile,参看:C语言再学习 -- 关键字volatile
和预处理器 #define,参看:C语言再学习 -- C 预处理器
对比:S5PV210开发 -- GPIO
(1)头文件 uart.h
#ifndef __UART_H__
#define __UART_H__
#define GPA1CON *((volatile unsigned int *)0xE0200020)
#define GPA1PUD *((volatile unsigned int *)0xE0200028)
#define ULCON2 *((volatile unsigned int *)0xE2900800)
#define UCON2 *((volatile unsigned int *)0xE2900804)
#define UFCON2 *((volatile unsigned int *)0xE2900808)
#define UTRSTAT2 *((volatile unsigned int *)0xE2900810)
#define UTXH2 *((volatile unsigned int *)0xE2900820)
#define URXH2 *((volatile unsigned int *)0xE2900824)
#define UBRDIV2 *((volatile unsigned int *)0xE2900828)
#define UDIVSLOT2 *((volatile unsigned int *)0xE290082C)
#define PCLK 66000000//66MHz
extern void uart0_init(void);
extern void uart_test(void);
extern void uart_putc(char );
extern void uart_puts(char *);
extern char uart_getc(void);
extern void uart_gets(char *, int);
#endif
(2)uart.c
#include "uart.h"
void uart2_init(void)
{
/*配置GPA1_0 GPA1_1管脚为uart功能*/
//配置串口管脚
GPA1CON &= ~(0xff<<0);
GPA1CON |= 0x22;
//禁止两个管脚内部上拉下拉电阻
GPA1PUD &= ~(0x0f<<0);
//配置串口寄存器
/*8N1 115200 轮询*/
ULCON2 = 0x03;
UCON2 = 0x05;
UFCON2 = 0x00;
UBRDIV2 = PCLK/(115200*16) - 1;
/*reference P879*/
UDIVSLOT2 = 0xDFDD;
}
void uart_putc(char c)
{
/*判断UTXH2中是否为空
* UTRSTAT2 bit2 1,空
0,非空
*/
while(!(UTRSTAT2 & 0x02)) ;
UTXH2 = c;
if(c == 'n')
{
uart_putc('r');
}
}
void uart_puts(char *s)
{
while(*s)
上一篇:S5PV210开发 -- UART 详解
下一篇:S5PV210开发 -- TTL和CMOS电平
推荐阅读
史海拾趣
FSP TECHNOLOGY INC. 发展故事集
故事一:创立与初期发展
FSP Technology Inc.(全汉企业股份有限公司)成立于1993年,总部位于台湾。在创立之初,公司便专注于电源供应器的研发与生产,凭借其专业的技术团队和敏锐的市场洞察力,迅速在行业中崭露头角。当时,随着计算机技术的飞速发展,对稳定、高效的电源需求日益增长,FSP抓住了这一机遇,专注于提供高品质的电源产品,赢得了市场的初步认可。公司通过不断优化产品设计和提升生产效率,逐渐建立起一定的市场份额和品牌影响力。
故事二:技术创新与品牌拓展
进入21世纪后,FSP Technology加大了技术创新的投入,致力于研发更加高效、环保的电源解决方案。公司先后推出了多款符合国际能效标准的产品,如80 PLUS认证系列电源,这些产品凭借其出色的性能和稳定的品质,在市场上获得了广泛好评。同时,FSP也积极拓展国际市场,通过参加国际展会、建立海外销售网络等方式,将品牌和产品推向全球。这一时期,FSP的品牌知名度和市场占有率均实现了显著提升。
故事三:ODM/OEM业务的蓬勃发展
随着全球电子产业链的分工日益细化,FSP Technology积极调整业务结构,大力发展ODM/OEM业务。公司凭借强大的研发实力和灵活的生产能力,为众多国际知名品牌提供定制化的电源解决方案。这些合作不仅丰富了FSP的产品线,也进一步提升了公司的技术水平和市场竞争力。同时,通过与国际品牌的深度合作,FSP的品牌影响力也得到了进一步扩大。
故事四:绿色能源解决方案的推广
近年来,随着全球对环保和可持续发展的重视,FSP Technology积极响应时代号召,致力于推广绿色能源解决方案。公司结合自身的技术优势,开发了一系列高效、节能的电源产品,广泛应用于数据中心、通信基站、智能家居等领域。这些产品不仅降低了客户的运营成本,也为全球节能减排事业做出了积极贡献。FSP的绿色能源解决方案得到了市场的广泛认可,进一步巩固了其在行业中的领先地位。
故事五:持续研发与未来展望
面对日益激烈的市场竞争和不断变化的客户需求,FSP Technology始终保持对技术创新的热情与追求。公司不断加大研发投入,积极探索新的技术和应用领域,如边缘计算、5G通信、工业互联网等。同时,FSP也密切关注行业动态和市场趋势,灵活调整战略方向,确保在未来的发展中始终保持领先地位。展望未来,FSP将继续秉承“服务、专业、创新”的经营理念,为全球客户提供更加优质、高效的电源解决方案。
ALLTHREAD深知品牌建设的重要性。他们注重提升品牌形象和知名度,积极参加各类行业展会和论坛,与业界同仁交流学习。同时,他们还建立了完善的客户服务体系,为客户提供及时、专业的技术支持和售后服务。这些举措有效提升了ALLTHREAD的品牌影响力和客户满意度。
随着技术的不断进步,ADI开始逐步拓展其产品线,从最初的运算放大器逐步扩展到信号处理、数据转换等多个领域。这些技术突破不仅巩固了ADI在电子行业的地位,也为其带来了更多的商业机会。同时,ADI始终保持着对新技术的高度关注,不断投入研发,确保公司在激烈的市场竞争中保持领先地位。
ADI的创业故事始于1965年,创始人Ray Stata与Matthew Lorber在美国马萨诸塞州剑桥市的一座公寓地下室开始了他们的创业之路。最初,ADI并没有直接涉足芯片制造,而是专注于开发运算放大器等分立器件,以提供精确放大的改良型电信号。这一决策是基于当时新兴市场的需求,展现了两位创始人的市场敏锐度和创新精神。
随着公司业务的不断拓展,EPIGAP公司意识到单靠自身力量难以应对日益复杂的市场环境。于是,公司开始积极寻求与产业链上下游企业的战略合作。通过与原材料供应商、代工厂商以及终端客户的紧密合作,EPIGAP公司实现了产业链的整合优化,提高了整体运营效率。这一战略不仅降低了公司的运营成本,还增强了公司的市场竞争力。
在数字化转型的大背景下,CET Technology积极探索数字孪生技术在园区管理中的应用。公司提供的数字孪生与3D可视化服务,通过创建园区的虚拟实体,模拟、验证、预测和控制园区的运营状态,帮助园区实现智慧化管理、优化服务和提高生产效率。此外,CET的数字孪生服务还能监控园区内人员和车辆的通行情况,提升园区内部的交通效率,为园区的可持续发展提供了有力支持。
我想用hook把键盘的系统消息截住,显示出键值,然后还能够继续执行它的系统任务,不知道可不可以实现阿?简单一点,就是一个消息被钩子函数截过后还可以继续往下传到系统去执行任务吗?… 查看全部问答∨ |
|
我们采用的末级功放是两个THS3091并联,以达到扩流的作用,负反馈,放大倍数2倍。 为什么反馈后,两个输入端(正 负)断的电压会相差很大呢(200mv左右)? ,出来的波形也就有一个叠加在一起的小波。 负反馈放大电路该怎样 ...… 查看全部问答∨ |
声明:展现在你眼前的所有文档都非本人的智慧所编写,而只是转发,但所有文档也都非具有相同层次的专业人士所作,你需要的是学习与思考,融合与创新。你的灵感,将来自於你的头脑,你的知识,确来自于其他人的智慧。包容糟粕,取其精华,你必能智於 ...… 查看全部问答∨ |
系统是一个手持设备,用电池供电,电量低时,通过外部充电器充电。 平时不使用时,进入休眠状态,通过按键(有三个不同功能的按键)唤醒(IO口电平变化中断)结束休眠。 如何才能保证系统能可靠的运行? 就是每次在休眠中,按键按下都能够唤醒, ...… 查看全部问答∨ |