最新日志

发表于:2008-7-7 9:20:23
标签:无标签

0

PCB设计模板

点击下载DXP格式原理图设计板框模板

点击下载PCB制板要求

点击此处查看原文 >>

系统分类: PCB   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(6)
发表于:2008-6-12 13:05:42
标签:无标签

0

NTC热敏电阻温度与阻值对应关系表

      该表运用了EXCEL强大的公式运算功能,只需在已知参数栏输入NTC的标称阻值和B常数(表中红色部分),便可自动算出NTC在-40度至127度对应的电阻值。为需要用到热敏电阻测温的场合提供了极大的方便。

 

点击下载点击下载

不足之处还请大家批评指正!

 

附上官方数据,可作为比较

点击下载 标称值为10k  B常数为 3380

点击此处查看原文 >>

系统分类: 测试测量   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(136)
发表于:2008-6-11 8:10:36
标签:无标签

0

工作笔记——单电源反相比例放大器设计

放大器工作环境及要求:

1、电源为单电源+5V

2、放大器输入信号峰峰值为600mv

3、放大器输出峰峰值>=2V

4、带宽>=12.5M

 

设计方案:

采用带宽为270MTHS4001放大器,反相比例放大倍数为4

 

采用电压并联负反馈,电路图如下:

点击看大图

电路分析

根据运放“虚短”“虚断”二大原则得出结论:

 

UO=-R4/R3*UI

 

也就是说当输入UI为正的时候输出UO应该为负,可该放大电路采用的单电源,输出只能在0~5V之间,显然这样是不可以的。

 

那怎么办?怎样使输出UO0~5V的范围,能否设一个高于0V的基准值,使输出在该基准值上下变化,但又保持在0~5V范围。答案是可以的,我们可以在运放输入的同相端接一个电阻到VCC,通常为了使输出峰峰值达到最大化,该电阻选择与R2等值,即使3脚电位为VCC/2,如下图:

点击看大图

此时该电路输入与输出的关系为:

 

UO=-R4/R3*UI+VCC/2

 

测得波形图如下:

(量程为500mv,直流耦合方式)

输入:

点击看大图 

 

 

输出:

点击看大图

由于时间关系,还有些问题没搞清楚,比如说失调电压什么的,刚开始我是采用的第一种接法,有波形输出,但峰峰值仅为200mv,有人说是因为有失调电压存在,所以有波形输出,至于具体的原因,以后再讨论。

刚工作不久,经验还很不足,难免会有不对的地方,还请批评指正。

 

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 原创

评论(1) | 阅读(142)
发表于:2008-6-2 11:03:43
标签:无标签

0

数字电路设计的抗干扰考虑(转)

     在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个:

(1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt,di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。

(2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。

(3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC,弱信号放大器等。

抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的抗干扰性能。

1 抑制干扰源

抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。

减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。

抑制干扰源的常用措施如下:

(1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰,见图1。仅加续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。



图1 消除线圈反电势干扰

(2)在继电器接点两端并接火花抑制电路,减小电火花影响,见图2。



图2 减小继电器火花

(3)给电机加滤波电路,注意电容、电感引线要尽量短,见图3。



图3 电机加滤波电路

(4)电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的影响,见图4。注意高频电容的布线,图a和图b的效果相差很大,图c比图b的效果更好。图a的布线增大了电容的等效串联电阻,影响了滤波效果。



图4 IC并接高频电容



图5 正确布线



图6 消除电源噪声



图7 与噪声源隔离



图8 正确配置晶振



图9 电路板合理分区



图10 数字地与模拟地分离



图11 处理好大功率器件地线

(7)在单片机I/O口,电源线,电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器,屏蔽罩,可显著提高电路的抗干扰性能。

3 提高敏感器件的抗干扰性能

(5)布线时避免90度折线,减少高频噪声发射,见图5。

(6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声。

2 切断干扰传播路径

按干扰传播路径可分为传导干扰和辐射干扰两类。

所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感器件上加屏蔽罩。

切断干扰传播路径的常用措施如下:

(1)充分考虑电源对单片机的影响,电源做得好,整个电路的抗干扰就解决了一大半,见图6。许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。其中L为磁珠,也可用100Ω电阻代替。

(2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离,见图7。其中L为磁珠,也可用100Ω电阻代替。

(3)注意晶振布线,见图8。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。此措施可解决许多疑难问题。

(4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机,继电器)与敏感元件(如单片机)远离,见图9。

(5)用地线把数字区与模拟区隔离,数字地与模拟地要分离,最后接于电源地,见图10。A/D、D/A芯片布线也以此为原则,厂家分配A/D、D/A芯片引脚排列时已考虑此要求。

提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声的拾取,以及从不正常状态尽快恢复的方法。

提高敏感器件抗干扰性能的常用措施如下:

(1)布线时尽量减少回路环的面积,以降低感应噪声,见图12。



图12 减少回路环面积

(2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦合噪声。

(3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变系统逻辑的情况下接地或接电源。

(4)对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X25043,X25045等,可大幅度提高整个电路的抗干扰性能。

(5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。

(6)IC器件尽量直接焊在电路板上,少用IC座。

点击此处查看原文 >>

系统分类: PCB   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(120)
发表于:2008-5-27 10:16:55
标签:无标签

0

数字电路抗干扰设计 (转)

     在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性 的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个:
    (1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地
方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可 能成为干扰源。
    (2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传 播路径是通过
导线的传导和空间的辐射。
    (3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大
器等。

    抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的 抗干扰性能。
    (类似于传染病的预防)
1 抑制干扰源
   抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优 先考虑和最重要
   的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容
   来实现。减小干扰源的 di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。

  抑制干扰源的常用措施如下:
    (1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加 续流二极管会
        使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。
    (2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电
        容选0.01uF),减小电火花影响。
    (3)给电机加滤波电路,注意电容、电感引线要尽量短。
    (4)电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的 影响。注意
        高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电
        阻,会影响滤波效果。
    (5)布线时避免90度折线,减少高频噪声发射。
    (6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能 会把可控硅
        击穿的)。

  按干扰的传播路径可分为传导干扰和辐射干扰两类。
    所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和 有用信号的频带不同,可
    以通过在导线上增加滤波器的方法切断高频干扰 噪声的传播,有时也可加隔离光耦来解决。电
    源噪声的危害最大, 要特别注意处理。  所谓辐射干扰是指通过空间辐射传播到敏感器件的干
    扰。 一般的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感器件上加蔽
    罩。

2 切断干扰传播路径的常用措施如下:
    (1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就解决了一大半。许多单
        片机对电源噪声很敏感, 要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机
        的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω
        电阻代替磁珠。
    (2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π
        形滤波电路)。 控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波
        电路)。
    (3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地
        并固定。此措施可解决许多疑难问题。
    (4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源 (如电机,继电
        器)与敏感元件(如单片机)远离。
    (5)用地线把数字区与模拟区隔离,数字地与模拟地要分离,最后在一点接于电源地。A/D、
        D/A芯片布线也以此为原则,厂家分配A/D、D/A芯片 引脚排列时已考虑此要求。
    (6)单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路
        板边缘。
    (7)在单片机I/O口,电源线,电路板连接线等关键地方使用抗干扰元件 如磁珠、磁环、电
        源滤波器,屏蔽罩,可显著提高电路的抗干扰性能。

3 提高敏感器件的抗干扰性能
    提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不
    正常状态尽快恢复的方法。
  提高敏感器件抗干扰性能的常用措施如下:
    (1)布线时尽量减少回路环的面积,以降低感应噪声。
    (2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。
    (3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置 端在不改变系统
        逻辑的情况下接地或接电源。
    (4)对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X25043,X25045
        等,可大幅度提高整个电路的抗干扰性能。
    (5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字 电路。
    (6)IC器件尽量直接焊在电路板上,少用IC座。
  ...................................................................................
我先说说我在这方面的经验吧!不当之处请指正,有好经验与心得也请大方贡献!
软件方面:
    1、我习惯于将不用的代码空间全清成“0”,因为这等效于NOP,可在程序跑飞时归位;
    2、在跳转指令前加几个NOP,目的同1;
    3、在无硬件WatchDog时可采用软件模拟WatchDog,以监测程序的运行;
    4、涉及处理外部器件参数调整或设置时,为防止外部器件因受干扰而出错可定时将参数重新
       发送一遍,这样可使外部器件尽快恢复正确;
    5、通讯中的抗干扰,可加数据校验位,可采取3取2或5取3策略;
    6、在有通讯线时,如I^2C、三线制等,实际中我们发现将Data线、CLK线、INH线常态置为高,
       其抗干扰效果要好过置为低。

硬件方面:
    1、地线、电源线的部线肯定重要了!
    2、线路的去偶;
    3、数、模地的分开;
    4、每个数字元件在地与电源之间都要104电容;
    5、在有继电器的应用场合,尤其是大电流时,防继电器触点火花对电路的干扰,可在继电器
       线圈间并一104和二极管,在触点和常开端间接472电容,效果不错!
    6、为防I/O口的串扰,可将I/O口隔离,方法有二极管隔离、门电路隔离、光偶隔离、电磁隔
       离等;
    7、当然多层板的抗干扰肯定好过单面板,但成本却高了几倍。
    8、选择一个抗干扰能力强的器件比之任何方法都有效,我想这点应该最重要。因为器件天生
       的不足是很难用外部方法去弥补的,但往往抗干扰能力强的就贵些,抗干扰能力差的就便宜

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(98)
发表于:2008-5-26 12:47:36
标签:无标签

0

工作笔记之串口调试

    温湿度测试仪调试过程中发现串口通信不正常,发送乱码。由于该产品是07年设计的产品,并经过测试已在市面上销售,应该说是属于技术上成熟的产品。出现问题我首先想到应该是生产装配或元器件本身问题。于是从硬件着手,检测有无元件参数与实际图纸不相符合的地方,由于该测试仪能工作,能显示温度和湿度,因此排除单片机问题的可能性。串口外围电路也正常,为保险起见,用一个单片机开发板测试了一下串口电路,发现收发码正常,没有乱码的现像,那问题出在哪?难道是单片机串口坏了?还是软件有问题?回过头来看程序,仔细看波特率设置时才发现当硬件电路采用12M晶振时波特率误差是很大的,只有当晶振为 11.0592M时波特率的误差才为最小,更换晶振后故障得到解决。

但让我不解的是,为什么以前用12M的晶振可以呢,不光是元件清单上注明的12M,就连程序释里也标明的12M,难道和元件批次有不同,不同的单片机会有不同的误差允许范围?

总之,误差太大是绝对不允许的,这应该属于一个设计上的错误。对于设计好的产品进行调试的时候不应该只是检测它的功能能否实现,而应该检测与该产品相关的各项技术参数是否达标,这样一个产品设计才是合理的。

                                                 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(2) | 阅读(118)
发表于:2008-5-4 8:13:45
标签:无标签

0

项目的设计输入

计算机软件行业有一句著名的格言:“进来的是垃圾,出去的还是垃圾”把好输入关是极其重要的。

1.设计输入的基本内容


根据ISO9001的规定,产品的规划阶段的工作内容均为设计输入的基本内容,如表1.列出了各类产品的设计输入内容。在实际项目执行中,特别是规划阶段,设计输入的内容不是一次确定的,也不是一方确定的,它往往需要多次双方协商或反复才能确定。表中的内容是指最终形成的文件。具体如下:


表1.各类产品的设计输入

 

阶段 板卡类产品 整机类产品软件类产品

 

A 用户需求 用户需求 用户需求


可行性分析 可行性分析 可行性分析

 

B 产品标准/规格(SPEC)产品标准/规格(SPEC) 用户说明书


规划 用户说明书 用户说明书软件需求分析


C 合同要求和技术协议。 合同要求和技术协议。 合同要求和技术协议。


项目任务书 项目任务书 项目任务书


Schedule Schedule Schedule

 

1.1 用户需求:


1.1.1用户的分类


有几类用户,一类是外部用户(委托设计);一类产品是由本公司下达,此时公司就是用户;另一类是合作设计。当用户有充分、完整、清晰的图文要求时,是最佳状况,但实际情况往往不是这样,这就需要产品规划者通过有效沟通,将用户的口头要求或不完善需求进行图、文化的完善,要牢记口说无凭。还要充分考虑终端市场用户的需求。要有“用户的成功”才是我们的成功的概念。


1.1..2用户需求包括内容


*功能和性能要求,功能是回答这个产品有什么用?性能是回答这个产品怎么样(包括技术指标、MTBF)?


*适用的法律、法规、专利、标准和规范要求;


*适用的以前类似设计提供的信息(这是指既使用户没提到,但以前的实际经验证明应做到的设计要求);


*运行、安装和使用;


贮存、搬运、维护和交付;


物料参数和环境;


处置要求。


设计和开发所必需的其它要求(Design Kit ,Sample ,Software Kit ect.);


应注意,在软件和服务产品的设计和开发中,最终使用者要求的和直接顾客要求的输入,可能特别重要。这类输入应以贯穿后续验证和确认能进行有效试验的方式来表达;


时间要求;


合同要求和相关技术协议。


1.2.可行性分析报告


可行性分析报告的目的是从设计项目的市场、用户、技术、经济、社会等方面论证其可行性。它包括用户需求分析和市场、技术调研。要多用表格形式来表达。


1.2.1市场调研


*市场在哪里(市场容量,细分市场和前景)?


*用户在哪里(谁需要我们的产品)?


*用户需要什么样的产品?


*我们的优势在哪里?(技术/价格/品牌/时间/地利/政策/资金)


*竞争对手状况(技术状况和市场份额)?


*我们的目标(技术水平和市场份额)


1.2.2技术方案


*采用什么原理、方法、外观、架构、算法、语言;


*采用什么主芯片、结构、电路、模块、接口;


*技术关键、难点、重点;


*关键元器件配套状况(量产否,供货周期,有无成熟应用,厂商实力);


*与其它方案的比较;


*标准化、系列化、专利、兼容性、可靠性;


*易用性、工艺性、维护性,在线升级;


1.2.3人员和设计周期


*需要什么样的人员组合;


*符合目前人员的状况吗?


*增加人员可否提高速度?


*产品设计组外需那些外部支持?


*开始和结束时间


1.2.4投资和损益分析


*设计费用(工资、材料、样板、专用仪器、夹具、模具、差旅费、购专用技术、外包、其它);


*产品材料成本;


*市场推广费用;


*生产费用;


*利税;


*损益平衡点(指销售多少台可收回所有投资,如果是附送产品,要估算其带来的附加值);


*敏感性分析(技术、市场、竞争对手变化带来的风险,如何抵御?战争、自然灾害等不可抗拒力带来的风险);


1.2.5法规法律的可行性


符合法规、法律、环保规范,符合销售市场的民俗、宗教习惯。


1.3制定产品标准或SPEC


按照国家/国际/行业的相关标准制定自己的产品标准;IT行业有其技术、产品更新快的特点,往往很难制定产品标准,这时可以根据用户需求和可行性分析报告,制定SPEC,包括功能和性能,还应包括包装、环境、MTBF、安全、环保及引用的标准、规范。 SPEC要用定制的表格形式;特别强调要经用户签字确认。


1.4用户说明书


用户说明书要用非专门术语的语言,充分地描述其具有的功能及基本的使用方法;并能够说明特定的情况下的应对方法和注意事项。应特别注意下列各点:


1.4.1用户说明书应在设计产品前就写,而且是尽可能的完善,这是成功研发产品得到的宝贵经验。特别是对未设计过的新一类产品,在设计产品前就写,是至关重要的(否则极易设计出不符合用户需求的想当然产品);


1.4.2站在用户的角度,根据SPEC和用户需求编写用户说明书,一份好的说明书应易读易用,让最普通水平的用户读后都能够正确、快速、无误操作的使用;


1.4.3对一事物的描述,人易接收的程度依次为三维动画,二维动画,图片,表格,公式,文字(有语音辅助更好)。编写用户说明书要充分考虑这个规律;


1.4.4轻重要分开,逻辑要清楚。如对应用软件的使用说明要明确的表叙:用户应进行的实际操作;屏幕有那些反应;有什么要注意的事项。对这些不同的内容,可用不同的字体、颜色、段落来区分;


1.4.5当说明书内容很多时,可分为基本功能和高级功能,前几页是基本功能,让用户可迅速使用;


1.4.6说明书的外观、格式应符合企业的CI 形象;


1.4.7说明书应在产品发表时和在研发过程中必要时更新,一般来说,变更越少,体现产品规划越高。


1.5项目任务书


除了在规划阶段(1.1—1.4的内容和1.6的内容)给产品规划人员下达的上述内容任务书,这里的项目任务书是指经确认,可立项设计的项目;


项目任务书内容包括项目名称、设计组成员、启动和结束(可分几大阶段)的时间。


1.6制定Schedule


Schedule的三要素是人、事、时间,要制定完整的具体的,直到MVT阶段设计输出的项目Schedule。并在执行中适时更新,以符合当前状况。要借助于项目管理软件,以实现科学规范的管理。;Microsoft Project 是一种功能强大而灵活的项目管理工具,可以用于控制简单或复杂的项目。它通过各种图表能够安排和追踪所有的活动,从而对进度了如指掌。而且现在,通过安装在公司的 intranet 或 Internet 上的 Microsoft Project Central,可以比以往更为方便地与有关人员交换项目信息。如它可以实现子项目的关联性;子项目的重要等级等等。


1.7 特殊性


以上是一个通常项目的设计输入,对特定的项目会有些不同,如有的软件项目需要“软件需求分析”(不是指“用户”)。


2.设计输入的评审


计算机软件行业有一句著名的格言:“进来的是垃圾,出去的还是垃圾”把好输入关是极其重要的。


2.1设计输入评审的参加人员


设计输入的评审应有用户(或代表)、管理者、产品规划工程师、产品设计师、测试工程师、采购、销售人员参加。


2.2设计输入评审的要求


对设计输入的内容应分别进行评审,不完整的、含糊的和矛盾的要求应予以解决,没有遗留问题,再进行下一步的工作。这也是ISO9000:2000版的要求


2.3设计输入的存档


应将确定的设计输入按文件管制的规定存档并保持。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(235)
发表于:2008-1-17 22:59:16
标签:单片机  

0

DDS信号发生器

这次毕业设计选择了做信号源..1~10MHz的正弦信号发生器.

用的AD9850,淘宝网上买的,花了80米.低通滤波电路的电感没买到,自己线绕的,效果还行,波形比较平滑,导师看了,说不错.参考时钟源用的125M晶体.DDS频率输出可达40M,但在10M以上时随着频率的增加幅值会下降.电路的输出端没接放大器,因为设计没作要求所以就省了,后来想想这是一个缺陷..
设计在程序上还有一些发挥的空间,要交了,没时间搞了,以后再完成吧...

程序调试花了二天的时间,硬件做了两天.电路板分为两块,一块单片机控制板,一块DDS模块,用热转印做的单面板.效果还不错,开始一直担心是就是AD9850的帖片焊不好,焊过后才发现也不那么难.
DDS模块接上测波形的时候,一次成功,正弦波一下子就出来了,真没想到会这么顺利...

下面传上我的所有资料,供大家参考....
先上图片.
 

  DDS模块
 


rar
源程序和PCB资料

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(9) | 阅读(2272)
发表于:2007-12-31 21:04:51
标签:无标签

1

如何走入嵌入式系统世界--仅献给热爱此道的初学者们(转)

关于嵌入式系统--献给热爱此道的初学者们

如何学习嵌入式系统(基于ARM平台)

前言
   网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易转载。

一、嵌入式系统的概念
   
    着重理解“嵌入”的概念

    主要从三个方面上来理解。
    1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。
    2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。
    3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。

    以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科


二、嵌入式系统的分层与专业的分类。
   
    嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。

  1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。
    硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。
    2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。
    驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

   3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。

   4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂,并且有难度了。

   

三、目标与定位。

    先有目标,再去定位。

    学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。
    因此对于初学者必然要把握住方向,自己的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。
    如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。

    对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上那个层面上来讲都是有高人存在,当然高人也对应的高工资,我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元,当然我一方面充当工程师的角色,一方面充当主管及人物的角色,两个职位我一个人干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。
    
四、开发系统选择。

    很多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好,我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年或是一年二年能搞定的事。

   在某种意义上请,ARM7与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。
  ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。

    而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们那你以后就业成功的机率就越高,这就是招聘时所说的有无“相关技能”,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年ARM出现,我一天始做ARM7,然后直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。
  
    我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者,有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM都做用得烂了,但对于初学者来,就却是件好事。
    因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。

五、如何看待培训。
  
    首先说说我自己,我目前从业近十年,与国内嵌入式系统行业共同起步,一直站在嵌入式系统行业前沿,设计过多款高端嵌入式系统平台产品并为众多公司提供过解决方案,离职前为从事VOIP的美资公司设计IP-PBX,历任项目经理、项目主管、技术总监、部门经理,积累众多人脉,并集多年经验所得,考虑到学生就业与公司招人的不相匹配,公司想招人招不到,而学生和刚毕业的工程师想找份工作也不太容易,于此力创知天行科技有限公司,开展嵌入式系统教育培训。
    因一线的科研人员和一线的教师不相接触,导至国内嵌入式人才缺乏,国外高校的技术超前于业界公司,而国内情况是业界公司方面的嵌入式系统技术要远远领先于高校。为架构业界与高校沟通的桥梁,把先进技能带给高校学子,为学生在就业竞争中打造一张王牌,并为业界工程师快速提升实现自我创造机遇,我就这样辞去了外企年薪20多万的职位,做嵌入式系统方面的培训了。
    对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有可能的,纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可能就亏大了,有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容,这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上比同批人缩短一年,每月按最少1千计,再减去培训费用至少多1.0万,同时也省了一年时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
    另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑假时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗?
    再者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅,就比如说,两个工程师分别用S3C2410和PXA255来做手持设备,同样两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么?这就是业界不为常人所知的规则,2410属于民品,被业界用烂了,做产品时成本特敏感,当然也对人才成本敏感了,PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人也少啊,因为开发系统贵啊。
    对于说为自已找了个好师傅,我想是这样的,因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师傅,但对于我们这些人就不存在这样的关系了,我是在嵌入式系统平台设计上走到了一定程序,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东西我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道吧。
    


六、成为高级嵌入式系统硬件工程师要具备的技能。

    首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通,或去网站看看www.zt-training.com。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。
    对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。
    另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,DSP类,FPGA类,国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。DSP硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如PXA255处理器I2C要求速度在100Kbps,如果把一个I2C外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接LCD,但为什么这种LCD就不能挂在ARM的总线上,还有ARM7总线上可以外接个Winband的SD卡控制器,但为什么这种控制器接不到ARM9或是Xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片,直接更换成LDO,有时就会把CPU烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS设备做下程序优化,我问了一下情况,地图是存在SD卡中的,而SD卡与PXA255的MMC控制器间采用的SPI接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计PCB绘制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD工程师,就是专业的画PCB板的工程师,和EMC设计工程师,帮人家解决EMC的问题。硬件工程师再往上就是板级测试工程师,就是C语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行验证。然后再交给基于操作系统级的驱动开发人员。

     总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。

    那么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握EDA设计的辅助工具类如Protel\ORCAD\PowperPCB\Maplux2\ISE、VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。

     硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

     把一个月前想写的东西,今天终于用一上午的进间整理完了,希望对喜爱嵌入式系统开发的工程师和学生们有所帮助。

点击此处查看原文 >>

系统分类: ARM   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(656)
发表于:2007-11-22 15:44:03
标签:ARM  

0

ARM7调试笔记之烧写bootloader,uclinux.

 

    学了这么久,现在慢慢的开始有点感觉了,对BootLoader和ucLinux有了一些了解。开发板到手也有一个多星期了,就刚开始的时候用超级终端测试了一下板子,都是照着说明上一步步操作的,感觉有点迷迷糊糊。之后就一直没动过,放在抽屉里睡觉。

    今天开始了我的第一个实验,Flash的烧写。.

    由于我的板子出厂的时候是装了bootloader和uclinux的,所以要先擦除。

一、擦除Flash:

    方法一:在Programflash软件里操作,建立JTAG连接,设置芯片型号,地址,点Erase按钮可擦除。

    也可以在下面烧uboot步骤的第5步的设置下,在点Program前选择自动擦除。打勾就可以了。

    方法二:在bootloader命令下,这里是指在板子里已装有boot,重装的情况下。

打开超级终端,进入uboot,输入erase 0x000 0x1fffff 回车,uboot可以自己擦除自己。

二、烧写uboot.

    1、 安装好Programflash软件,jtag调试代理。重启计算机。(刚开始的时候我的JTAG连接不上,重启下就好了。)

    2、 连接JTAG口,开发板到计算机的并口。打开开发板电源,打开Programflash软件。

    3、点击Flash ID看JTAG连接是否正常。

    4、设置CPU和Flash型号,起始地址,根据目标板配制来设置。

    5、点击Program按钮,加入要下载的文件,选择uboot.elf,再点Program开始烧写

    6、烧写完后,打开超级终端就可以看到uboot是否装好。

三、装uclinux

    uclinux要在uboot下装。

    重启板子,进入uboot

    在超级终端下输入如下命令:

    1、在bootloader命令行中输入:loadb 0x0c008000  回车,发送uclinux_rom.bin文件;
    2、在bootloader命令行中输入:erase 0x50000 0x1fffff 回车,擦除程序区域数据;
    3、在bootloader命令行中输入:cp 0x0c008000 0x50000 4b46b 回车直到done
    4、在bootloader命令行中输入:set bootcmd bootm 0x50000  回车
    5、在bootloader命令行中输入:save 回车保存数据;
    6、在bootloader命令行中输入:reset 回车重启   在uboot下倒计时,3秒后无键按下进入uclinux。

    附加:在发送文件的时候可以用串口,也可以用网口,用串口发送时,输入命令 loadb 0x0c008000回车,点击菜单栏发送文件,再找到文件目录,协议为kermit.点发送即可。   网口发送时,要设置电脑的IP与开发板IP一致,我的板子默认IP是196.168.0.10,所以计算机上也要改为一致。 打开tftp软件,选择你要发送的文件所在文件夹。回到超级终端下,输入命令: set bootfile uclinux_rom.bin ,回车,再输入tftp命令,回车,便开始发送。

    实验结束,感觉离ARM又近了一步,知道了uboot下基本的操作命令,程序加载和运行的过程。其实我认为,在刚开始学习一种芯片开发的时候,掌握开发流程是非常关键的,至少你在编程序的时候知道自己需要一个什么文件,这样的话你能够很快的融入进来,容易进入状态。

       

      对了,发现一个问题.用串口发送文件的时候,发送不了,网口发送又可以。后来换了台电脑又可以发送了,这是何解?不知有哪位高手能解答........

     

点击此处查看原文 >>

系统分类: ARM   |    用户分类: 无分类    |    来源: 原创

评论(0) | 阅读(1010)
总共 , 当前 /,2下一页