一、 I/O接口强推挽输出
二、 PCB布线
1、输入端与输出端的边线应避免相邻平行,以免产生反射干扰。必要时应加地线隔离;两相邻层的布线要互相垂直,平行容易产生寄生耦合。
2、地线>电源线>信号线,通常信号线宽为:8mil~12mil;电源线为50mil~100mil。对数字电路的PCB可用宽的地导线组成一个回路, 即构成一个地网来使用(模拟电路的地不能这样使用)
3、可以用一些孤岛铜,然后将其连接到地平面上。
4、在PCB板内部数字地和模拟地实际上是分开的它们之间互不相连,只是在PCB与外界连接的接口处(如插头等)。数字地与模拟地有一点短接,请注意,只有一个连接点。也有在PCB上不共地的,这由系统设计来决定。
5、实在没地方布线,可考虑布在VCC层,其次考虑GND层。
6、标准元器件两腿之间的距离为100mil(2.54mm),所以网格系统的基础一般就定为100mil(2.54 mm)或小于100mil的整倍数,如:50mil、25mil、20mil等。一般布局时选择50mil网格,布线选择5mil网格,孔距和器件距离设为25mil(让器件之间可以走线)
7、蛇形走线就是单单为了长度匹配!!电感,滤波不会用这么笨的方法。
8、板边的铺铜要距离板边20mil。
9、PCB 板上延时为 0.167ns/inch.。但是,如果过孔多,器件管脚多,网线上设置的约束多,延时将增大。
10、线径越宽,距电源/地越近,或隔离层的介电常数越高,特征阻抗就越小。
11、PCB板上的走线可等效为串联和并联的电容、电阻和电感结构。串联电阻的典型值0.25-0.55 ohms/英尺。并联电阻阻值通常很高
12、如果采用CMOS或TTL电路进行设计,工作频率小于10MHz,布线长度应不大于7英寸。工作频率在50MHz布线长度应不大于1.5英寸。如果工作频率达到或超过75MHz布线长度应在1英寸。
13、RC匹配终端可以减少功率消耗,但只能使用于信号工作比较稳定的情况。这种方式最适合于对时钟线信号进行匹配处理。其缺点是RC匹配终端中的电容可能影响信号的形状和传播速度。串联电阻匹配终端不会产生额外的功率消耗,但会减慢信号的传输。这种方式用于时间延迟影响不大的总线驱动电路。串联电阻匹配终端的优势还在于可以减少板上器件的使用数量和连线密度。
14、终端电阻的安装方式:垂直安装方式中电阻的一条安装管脚很短,可以减少电阻和电路板间的热阻,使电阻的热量更加容易散发到空气中。但较长的垂直安装会增加电阻的电感。水平安装方式因安装较低有更低的电感。但过热的电阻会出现漂移,在最坏的情况下电阻成为开路,造成PCB走线终结匹配失效,成为潜在的失败因素。
15、解决信号完整性问题将改善PCB板的电磁兼容性。其中非常重要的是保证PCB板有很好的接地。对复杂的设计采用一个信号层配一个地线层是十分有效的方法。此外,使电路板的最外层信号的密度最小也是减少电磁辐射的好方法,这种方法可采用"表面积层"技术"Build-up"设计制做PCB来实现。表面积层通过在普通工艺 PCB 上增加薄绝缘层和用于贯穿这些层的微孔的组合来实现 ,电阻和电容可埋在表层下,单位面积上的走线密度会增加近一倍,因而可降低 PCB的体积。PCB 面积的缩小对走线的拓扑结构有巨大的影响,这意味着缩小的电流回路,缩小的分支走线长度,而电磁辐射近似正比于电流回路的面积;同时小体积特征意味着高密度引脚封装器件可以被使用,这又使得连线长度下降,从而电流回路减小,提高电磁兼容特性。
16、任何高速和高功耗的器件应尽量放置在一起以减少电源电压瞬时过冲。
三、 在kei中添加STC型号(新数据库添加法)
说明:另外增加一个单片机数据库,既可以选择STC单片机,又不影响原来数据库的使用。
操作步骤:
①下载用于keil的STC数据库更名为STC.CDB并拷贝到Keil/UV2目录下。(如果是Kile3则是UV3,Kile4则是UV4)
②打开Keil文件夹下的TOOLS.ini文件,在[UV2]下面(也就是[C51]上方)键入CDB0=UV2\STC.CDB("STC"),然后保存退出即添加完毕。(如果是Kile3则是UV3,Kile4则是UV4)
使用:为目标设置选项时,点击Device页,在Database中选择“STC”。
新建工程时,在Select a CPU Date Base File中选择“STC”。
注:宏晶官网提供的STC数据库,默认使用的头文件是REG51.H、REG52.H……(即右键快捷插入头文件的是REG51.H、REG52.H……),
右键快捷插入头文件如下所示:
四、 Max485、Rs485、Max232、Rs232
Rs485\Rs232: 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。
Max485\Max232: MAX485是用于RS-485与RS-422通信的低功耗收发器。MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
五、 内存分配
在keil中,定义变量时要注意是定义在哪一区域的,系统默认为直接寻址DATA区,但DATA区只有128个字节,很容易用完和溢出。51单片机超出128个字节的RAM区定义变量时一定要在变量前加IDATA,这样表明该变量时IDATA区(128—256之间的RAM区)。
遇到逻辑变量可定义到bdata中,可以大大降低内存占用空间(如bdata bit flag)。
对于不频繁用到和对速度要求不高的放在xdata区中。
如果想节省data空间,必须用large模式,将未定义内存位置的变量全放在data区(当然最好所有变量都应指定内存类型)。
但使用指针时,要指定指针指向类型。在C51中为定义指向内存类型的通用指针占用3各字节,二指向data区的指针只占用1个字节,指向xdata区的指针占2个字节(如:p指向data区 char data *p;)。还可以指定指针本身的存放内存类型,如:char data *xdata p 其含义是指针p指向data区变量,而其本身放在xdata区。
六、 Strcpy()与memcy()的不同
Void memcy(void *dest,const void*src,siz_tn)用来拷贝src所指的内容前n个字节到dest所指的内存地址上。与strcpy()不同的是前者memcpy()会完整地复制n个字节,不会因为遇到‘\0’而停止。
七、 SPI、I2C、UART总线的区别
SPI:由三条信号线组成(串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI))。可以实现多个SPI设备互相连接。提供串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
I2C:总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
UART:总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
牛人意见:I2C线更少,个人觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
八、 0欧姆电阻的作用
1. 做为跳线使用。这样既美观,安装也方便。
2. 连接数字与模拟电路的地,将地线分成两个网络,在大面积铺铜等处理时,就会方便得多。这样的场合,有时也会用电感或者磁珠等来连接。
3. 做保险丝用。由于PCB上走线的熔断电流较大,如果发生短路过流等故障时,很难熔断,可能会带来更大的事故。由于0欧电阻电流承受能力比较弱,过流时就先将0欧电阻熔断了,从而将电路断开,防止了更大事故的发生。
4. 为调试预留的位置。可以根据需要,决定是否安装,或者其它的值。有时也会用*来标注,表示由调试时决定。
5. 作为配置电路使用。作用跟跳线或者拨码开关类似,但是通过焊接固定上去后避免了普通用户随意修改配置。通过安装不同位置的电阻,就可以更改电路的功能或者设置地址。
九、 滤波、去耦、旁路电容作用
滤波电容:用在电源整流电路中,用来滤除交流成分。使输出的直流更平滑。
去耦电容:
1. 滤除器件产生的高频噪声,切断其通过供电回路进行传播的通路;
2. 防止电源携带的噪声对电路构成干扰:在vcc引脚上通常并联一个去藕电容,这样交流分量就从这个电容接地。有源器件在开关时产生的高频开关噪声将沿着电源线传播。去耦电容的主要功能就是提供 一 个局部的直流电源给有源器件,以减少开关噪声在板上的传播和将噪声引导到地
3. 作为本集成电路的蓄能电容:高频器件在工作的时候,其电流是不连续的,而且频率很高,而器件VCC到总电源有一段距离,即便距离不长,在频率很高的情况下,阻抗Z=i*wL+R,线路的电感影响也会非常大,会导致器件在需要电流的时候,不能被及时供给。而去耦电容可以弥补此不足。 这也是为什么很多电路板在高频器件VCC管脚处放置小电容的原因之一。
旁路电容:用在有电阻连接时,接在电阻两端使交流信号顺利通过。
在电子电路中,去耦电容和旁路电容都是起到抗干扰的作用,电容所处的位置不同,称呼就不一样了。对于同一个电路来说,旁路(bypass)电容是把输入信号中的高频噪声作为滤除对象,把前级携带的高频杂波滤除,而去耦(decoupling)电容也称退耦电容,是把输出信号的干扰作为滤除对象。
十、 琐碎知识
1.钽电容:是寿命长,准确度高,耐高温,缺点是容量较小,价格昂贵,不容易引起波形失真的现象;
2.电容容量不是越高越好的,我们还要考虑容抗还有放电等因素,电容太高了会导致放电不足和电流过低;
3. C51的临时变量并非都是用堆栈保存的,对于少量的是有寄存器或堆栈方式,多了就分配到RAM地址中去了,这跟PC或其它单片机的有很大区别;
4. C语言中函数及变量名称区分大小写。但是出于兼容的原因,所有在目标文件(object file)中的名字都以大写字母出现,因此在程序中引用一个外部符号名称时大小写无关;
5.swtich语句的case的数量并没有限定,但是受有效的内存空间及单个函数所允许最大的长度限定;
6. 函数参数列表中的函数的嵌套调用层数最多为10层;包含文件最多可嵌套9层;条件预处理最多20层,这是预处理器的限制;宏可嵌套8层;最多可向宏或函数传递32个参数;一行或一个宏最多只能有2000个字符,即使在宏扩展后也不能超过2000字符;
7. 在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。