<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/MinruisBlog" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/MinruisBlog" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 15 Jun 2009 05:40:31 GMT</lastBuildDate><title>Minrui's Blog</title><description>Succinct But Not Simple !</description><image><url>http://www.feedsky.com/feed/MinruisBlog/sc/gif</url><title>Minrui's Blog</title><link>http://www.minrui.net</link></image><link>http://www.minrui.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Mon, 15 Jun 2009 05:40:31 GMT</pubDate><item><title>NN个熊，累死哥哥了…</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104158/5333468/1/item.html</link><content:encoded>&lt;p&gt;不好意思啊，最近项目赶很紧，出问题了要赔10W，一天到晚擂着赶项目了..&lt;/p&gt;
&lt;p&gt;友情链接都已近更新了，呵呵~~&lt;/p&gt;
&lt;p&gt;这个月底就好了，可以给自己放两天假了，也可以规划一下公司的中期发展了..&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/232104158/MinruisBlog/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104158/5333468/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104158/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104158/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=192</wfw:commentRss><slash:comments>0</slash:comments><description>不好意思啊，最近项目赶很紧，出问题了要赔10W，一天到晚擂着赶项目了..
友情链接都已近更新了，呵呵~~
这个月底就好了，可以给自己放两天假了，也可以规划一下公司的中期发展了..&lt;img src=&quot;http://www1.feedsky.com/t1/232104158/MinruisBlog/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104158/5333468/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104158/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104158/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>未分类</category><pubDate>Mon, 15 Jun 2009 13:40:31 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=192#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=192</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=192</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104158/5333468</fs:itemid></item><item><title>测试</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104159/5333468/1/item.html</link><content:encoded>&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104159/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104159/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=190</wfw:commentRss><slash:comments>3</slash:comments><description>&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104159/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104159/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>未分类</category><pubDate>Sat, 18 Apr 2009 23:04:59 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=190#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=190</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=190</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104159/5333468</fs:itemid></item><item><title>上来除下草…</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104160/5333468/1/item.html</link><content:encoded>&lt;p&gt;最近就一个字，忙，几个案子都堆上来了，加上公司搬家，人都搞的要疯了&amp;#8230;.&lt;/p&gt;
&lt;p&gt;为防博客长草，特上来修葺一番，以示存在&amp;#8230;.&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104160/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104160/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=186</wfw:commentRss><slash:comments>9</slash:comments><description>最近就一个字，忙，几个案子都堆上来了，加上公司搬家，人都搞的要疯了&amp;#8230;.
为防博客长草，特上来修葺一番，以示存在&amp;#8230;.&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104160/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104160/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>无聊</category><category>鸡毛蒜皮</category><pubDate>Tue, 17 Mar 2009 22:34:35 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=186#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=186</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=186</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104160/5333468</fs:itemid></item><item><title>今天过生日~~</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104161/5333468/1/item.html</link><content:encoded>&lt;p&gt;       突然想起，今天过生日哦，祝我生日快乐~~居然记得自己的生日，好开心啊~~~哈哈~~&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104161/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104161/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=180</wfw:commentRss><slash:comments>7</slash:comments><description>       突然想起，今天过生日哦，祝我生日快乐~~居然记得自己的生日，好开心啊~~~哈哈~~&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104161/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104161/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>鸡毛蒜皮</category><pubDate>Tue, 03 Mar 2009 22:30:54 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=180#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=180</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=180</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104161/5333468</fs:itemid></item><item><title>还好没有搬家</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104162/5333468/1/item.html</link><content:encoded>&lt;p&gt;      周末搞了个host2ez的空间试了下，发现还不错，捣鼓了两天，准备把博客搬过去的，后来发现了一个很奇怪的问题。有些路由器会导致Linux服务器的FTP连接失败，这个问题在之前用虎翼主机的时候就发现了，TP的路由器使用中是没有问题的，Linksys的可能是设置原因，一直都不正常，非常奇怪。我用的这个空间是W主机，可以正常连接。还好没换，哈哈~~换了就只能在公司更新FTP了，麻烦的很~~&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104162/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104162/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=177</wfw:commentRss><slash:comments>2</slash:comments><description>      周末搞了个host2ez的空间试了下，发现还不错，捣鼓了两天，准备把博客搬过去的，后来发现了一个很奇怪的问题。有些路由器会导致Linux服务器的FTP连接失败，这个问题在之前用虎翼主机的时候就发现了，TP的路由器使用中是没有问题的，Linksys的可能是设置原因，一直都不正常，非常奇怪。我用的这个空间是W主机，可以正常连接。还好没换，哈哈~~换了就只能在公司更新FTP了，麻烦的很~~&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104162/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104162/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>鸡毛蒜皮</category><pubDate>Tue, 03 Mar 2009 21:58:03 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=177#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=177</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=177</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104162/5333468</fs:itemid></item><item><title>linksys WRT54GP2A-AT与水星MERCURY MW54R+</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104163/5333468/1/item.html</link><content:encoded>&lt;p&gt;        家里使用linksys WRT54GP2A-AT这款机器已经3个多月了，除了发热厉害一点（相对而言，其实不捂着啥事都没有），其他死机，掉线之类的都没出现过，设定的VOIP电话也很好用，现在选的服务商是tocall，通话质量很不错，接通率比skype高了无数倍。无线信号相当好，6M左右隔两道墙还是满格，无线之间互传文件速度很理想，用飞鸽传书大概到4MB/s。&lt;/p&gt;
&lt;p&gt;      公司这边因为暂时用无线的人不很多，就选了个水星（MERCURY）的MW54R+，这家的到处宣传的都是与TP出自同一工厂，一条线的，实际怎么样我不了解，不好评价，但是可以肯定的说，都是用的Marvell的方案而以，但品质比TP的真的是差了老大一截子，说完全不在同一层次也不为过，虽然我也烦TP的东西，也比水星的强的多。MW54R+用了也近两个月了，无数次的死机，无线连接在临时断开后无法自动重连，网络莫名其妙中断，什么问题都出过，人真的很恼火，当初就不该贪这个便宜。水星这家的东西以后我是绝对不会用了，太失望了。&lt;/p&gt;
&lt;p&gt;       个人接触过的网络设备里面，口碑最好的首推思科（包括linksys），其次是华为和DLink，然后就是烽火，最P最P的就用TP了，水星这样的货色就不要提了，比洋垃圾还差劲！&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104163/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104163/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=166</wfw:commentRss><slash:comments>0</slash:comments><description>        家里使用linksys WRT54GP2A-AT这款机器已经3个多月了，除了发热厉害一点（相对而言，其实不捂着啥事都没有），其他死机，掉线之类的都没出现过，设定的VOIP电话也很好用，现在选的服务商是tocall，通话质量很不错，接通率比skype高了无数倍。无线信号相当好，6M左右隔两道墙还是满格，无线之间互传文件速度很理想，用飞鸽传书大概到4MB/s。
      公司这边因为暂时用无线的人不很多，就选了个水星（MERCURY）的MW54R+，这家的到处宣传的都是与TP出自同一工厂，一条线的，实际怎么样我不了解，不好评价，但是可以肯定的说，都是用的Marvell的方案而以，但品质比TP的真的是差了老大一截子，说完全不在同一层次也不为过，虽然我也烦TP的东西，也比水星的强的多。MW54R+用了也近两个月了，无数次的死机，无线连接在临时断开后无法自动重连，网络莫名其妙中断，什么问题都出过，人真的很恼火，当初就不该贪这个便宜。水星这家的东西以后我是绝对不会用了，太失望了。
       个人接触过的网络设备里面，口碑最好的首推思科（包括linksys），其次是华为和DLink，然后就是烽火，最P最P的就用TP了，水星这样的货色就不要提了，比洋垃圾还差劲！&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104163/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104163/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>鸡毛蒜皮</category><category>实测，评测</category><pubDate>Sun, 01 Mar 2009 23:35:33 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=166#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=166</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=166</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104163/5333468</fs:itemid></item><item><title>发现一个Word Press的BUG</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104164/5333468/1/item.html</link><content:encoded>&lt;p&gt;        貌似Word Press的这个版本有个大BUG，昨天更新的转自Larry的Blog的FatFS的文章居然会影响我的首页布局，内部的页面却都没有影响，实在太怪异了。整个右边栏都溜到下面去了，火大的很。把整篇文章都Copy出来，用记事本清理了一下格式在捣鼓上来就好了，估计是之前Copy的时候附加的格式跟首页的某些标签冲突了，真是晕死&amp;#8230;.&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104164/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104164/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=162</wfw:commentRss><slash:comments>2</slash:comments><description>        貌似Word Press的这个版本有个大BUG，昨天更新的转自Larry的Blog的FatFS的文章居然会影响我的首页布局，内部的页面却都没有影响，实在太怪异了。整个右边栏都溜到下面去了，火大的很。把整篇文章都Copy出来，用记事本清理了一下格式在捣鼓上来就好了，估计是之前Copy的时候附加的格式跟首页的某些标签冲突了，真是晕死&amp;#8230;.&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104164/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104164/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>鸡毛蒜皮</category><category>Blog</category><pubDate>Sun, 22 Feb 2009 22:27:31 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=162#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=162</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=162</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104164/5333468</fs:itemid></item><item><title>一篇比较详细介绍FatFs文件系统移植的文章(转)</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104165/5333468/1/item.html</link><content:encoded>&lt;p&gt; FatFs文件系统的移植&lt;br /&gt;
    因为需要，又不想自己写，所以就移植了一个文件系统。&lt;br /&gt;
    说下我的硬件和开发工具：接成 TRUE IDE 模式下的CF卡（也就是相当于一块硬盘了），三星S3C2440的ARM9,开发工具是很老很老的D版的ADS1.2。&lt;br /&gt;
    我在网上看到的嵌入式系统上面常用的文件系统有UCOSII公司的UC/FS，支持CF卡，硬盘，SD/MMC卡，还有NAND FLASH等等，比较多，不过是商用的，需要银子的，有周立功的用于教学用（为什么说是用于教学用的，呵呵，等下就说）的ZLG/FS，还找到了开源、免费的两个，其中一个叫做 efsl ，另一个叫做 FatFs 。&lt;/p&gt;
&lt;p&gt;    现在先不考虑版权的问题，选择一个比较合适的文件系统。第一个UC/FS文件系统没得什么说的，UCOSII那个公司开发的，稳定性，兼容性应该都不会差。第二个是ZLG/FS。周立功的很多的开发板上面都送了这个文件系统的源代码的，在网上找到一个现成的读写硬盘的，只是是基于LPC2200系列的处理器的。第三个是efsl，是一个开源的项目，免费，只需要提供读扇区和写扇区2个函数。第四个是FatFs，跟efsl一样，也是一个开源的项目，移植的时候比efsl多几个简单的函数。&lt;/p&gt;
&lt;p&gt;    这里补充一下CF卡和硬盘的简单的资料，CF卡有三种模式，其中有一个叫TRUE IDE，接成这个模式以后，就跟他的模式名字一样，他就是一个硬盘，对他进行读写，也就相当于对一个硬盘进行读写。当引脚OE（好像是叫OE，具体参考 CF卡文档）在上电的时候检测到拉低，那么CF卡就进入TRUE IDE模式。读写硬盘的时候，在只写一次LBA，只发送一个命令（读或者写）的情况下，最多可以读或者写256个扇区（当然也可以读一个扇区，读或者写多少个扇区在扇区计数器count里面），其中，发一个读或者写命令，读或者写256个扇区所需要的时间，比分256次去读写这些扇区所需要的时间要短得多，效率要高得多，我现在需要的是一个读写的速度比较快，效率比较高的文件系统，因此，底层的读写扇区必须要每写一个命令就可以读写多个扇区，读写扇区的函数必须要有扇区计数器（前面的count）这个参数，才可能满足要求。&lt;span id=&quot;more-144&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;    UC/FS也是在网上搜了个代码，看了下，很标准的几个层，什么硬件层，文件系统层，API层，等等（具体参见UC/FS的文档），跟UCOSII一个公司的，稳定性应该不错，需要提供的函数也是读扇区，写扇区等等几个。但是底层的读写扇区的函数不需要提供扇区计数器count这个参数，也就是说，这个文件系统不能在只写一个读或者写命令的情况下，读或者写多个扇区，本来效感觉不错的一个文件系统，效率就大大的降低了。&lt;/p&gt;
&lt;p&gt;    然后看了下efls这个文件系统，开源的项目，免费的项目，好东西，移植也很简单，同样移植的时候也是提供读写扇区等几个函数，但是面临的跟UC/FS同样的问题，每次读写的时候也只能读写一个扇区。&lt;/p&gt;
&lt;p&gt;    绝望之余看到了周立功的文件系统，大概看了下（没有仔细阅读源代码），硬件驱动上面能够在发一次读命令的情况下，读写多个扇区，而且感觉上比较简单，同样，层次也很清楚，移植需要做的事情也是修改后面的读写扇区等等几个函数。于是就开干了。功夫不负苦心人，过了几天，CF卡能够读写了，拿到电脑上面看写的数据，没问题。从CF卡里面读文件出来，打印到超级终端，也没有问题，以为就万事OK了，想了下，我们需要的，最关心的，第一是速度，然后就开始测试速度，不测不知道，一测吓一跳！太“快”了，，才5，6个K Bytes 每秒！！！！！（我的驱动已经测试了，上M字节每秒的）   于是跟踪到写里面去，发现一个很，十分，非常严重的问题：ZLG/FS提供了读一个字节的函数，忘了叫做啥，这里暂时叫 ReadOneByte（***），然后读多个字节，或者说读大块字节的函数用的是啥，呵呵，&lt;/p&gt;
&lt;p&gt;for（i=0；i &amp;lt; N ; i++） ReadOneByte（***），这种机制，不慢才怪事！！！于是伤心的抛弃了ZLG/FS，这东东，学习还是可以的，商用的话，差太远了！！！&lt;br /&gt;
    我那点东西，文件系统可以不上，但是必须有个文件存储协议，或者说叫做自己的文件系统，自己写个简单的存储协议，试过，很麻烦。但是如果上文件系统，自己写的话，写要累死人的，写出来的不一定效率就高，速度就快，所以，还是在网上漫无目的的找，觉得应该有效率很高的文件系统的。&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
    还是那句话，功夫不负苦心人，终于让我找到了，也就是现在所用的，FatFs，开源，免费，高效！（说一下这里几个文件系统都有的一个缺点，由于微软的FAT版权的问题，FatFs，ZLG/FS，efsl都只支持 DOS 8.3 文件名，即8个字节的文件名，一个”.“，然后3个字节的扩展名，我找到的那个UC/FS也不支持，不知道在更新的版本里面支持不，看哪天有空了，把那个FatFs改下，让他支持，呵呵）。FatFs 的底层可以写一次命令，读写多个扇区。FatFs的设计的读写的思想就很好，小块的数据，我就经过Buffer来存储，大块的数据，我就直接进行存取，那样速度，效率高了很多。&lt;/p&gt;
&lt;p&gt; &lt;img class=&quot;alignnone size-full wp-image-145&quot; title=&quot;1&quot; src=&quot;http://www.minrui.net/wp-content/uploads/2009/02/11.jpg&quot; alt=&quot;1&quot; width=&quot;490&quot; height=&quot;73&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-146&quot; title=&quot;2&quot; src=&quot;http://www.minrui.net/wp-content/uploads/2009/02/1.jpg&quot; alt=&quot;2&quot; width=&quot;490&quot; height=&quot;140&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-147&quot; title=&quot;3&quot; src=&quot;http://www.minrui.net/wp-content/uploads/2009/02/2.jpg&quot; alt=&quot;3&quot; width=&quot;245&quot; height=&quot;255&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
补充一点，FatFs的作者写了两个，一个是正宗的FatFs，比较适合大的RAM的设备，另一个是FatFs/Tiny，比较适合小RAM的系统，比如单片机，FatFs/Tiny占用较小的RAM，代价是更慢的读写速度和更少的API函数。不过两个都支持FAT12，FAT16，FAT32文件系统。&lt;br /&gt;
下载下来的FatFs的FatFs有两个文件夹，一个是 doc ，FatFs的说明，包括特性，系统函数，以及可能的一些问题，另一个就是源代码文件夹src了，总共8个文件，diskio.c和diskio.h是硬件层，ff.c和ff.h是FatFs的文件系统层和文件系统的API层，integer.h是文件系统所用到的数据类型的定义，tff.c和tff.h是Tiny的文件系统层和文件系统的API层，还有一个00readme.txt简要的介绍了FatFSHE FatFs/Tiny，包括他们所支持的API，怎么配置等等。&lt;/p&gt;
&lt;p&gt;移植的问题，第一个是数据类型，在integer.h里面去定义好数据的类型。第二个，就是配置，打开ff.h（我用的FatFs，不是Tiny），_MCU_ENDIAN，选择你的CPU是大端存储（big endding）还是小端存储（little endding），一般的都用的小端存储，1是小端，2是大端。这个相当重要，一会儿还要谈到这里。其他的，按照自己的需要来配置了，说明文档够清楚了，我就不多说啥了。&lt;/p&gt;
&lt;p&gt;第三件事情，就是写底层的驱动函数，包括：&lt;br /&gt;
disk_initialize &amp;#8211; Initialize disk drive&lt;br /&gt;
disk_status &amp;#8211; Get disk status&lt;br /&gt;
disk_read &amp;#8211; Read sector(s)&lt;br /&gt;
disk_write &amp;#8211; Write sector(s)&lt;br /&gt;
disk_ioctl &amp;#8211; Control device dependent features&lt;br /&gt;
get_fattime &amp;#8211; Get current time&lt;br /&gt;
所有的函数都牵涉到了选择第几个磁盘的问题，如果仅仅用一个，可以不必理会这个drv 参数。&lt;br /&gt;
disk_initialize ，如果不需要的话，直接返回0就行&lt;br /&gt;
disk_status ，这个嘛，先不管了，直接返回0就OK&lt;br /&gt;
disk_read &amp;#8211; Read sector(s)&lt;br /&gt;
disk_write &amp;#8211; Write sector(s)&lt;br /&gt;
读写扇区，注意参数哦！&lt;br /&gt;
disk_ioctl 需要回应CTRL_SYNC，GET_SECTOR_COUNT，GET_BLOCK_SIZE 三个命令，正确返回0即&lt;br /&gt;
RES_OK，不正确返回RES_ERROR。&lt;br /&gt;
所有的命令都从 ctrl 里面去读，返回值仅仅返回这次操作是否有效，而需要传递回去的数据在buff&lt;br /&gt;
里面，以下是我的：&lt;br /&gt;
CTRL_SYNC命令，直接返回0；&lt;br /&gt;
GET_SECTOR_COUNT，得到所有可用的扇区数目（逻辑寻址即LBA寻址方式）&lt;br /&gt;
GET_BLOCK_SIZE，得到每个扇区有多少个字节，比如 *((DWORD*)buff) = 512;&lt;br /&gt;
其他的命令，返回RES_PARERR&lt;br /&gt;
disk_ioctl 这个函数仅仅在格式化的时候被使用，在调试读写的时候，这个函数直接让他返回0就OK 了。&lt;br /&gt;
get_fattime &amp;#8211; 得到系统的时间，格式请见文档。不用的话，返回0就行。&lt;br /&gt;
这样移植了，也基本上就成功了，但是在我的板子上面死活不行，每次一执行到几个宏定义比如&lt;br /&gt;
LD_WORD(ptr) (WORD)(*(WORD*)(BYTE*)(ptr)) 就产生数据终止异常（ DATA ABORT exception），但是网上的一个兄弟的（ouravr上的一个兄弟，用的SD卡，IAR编译器，平台是STM32，已经成功了，还公布了源码的，这里没有问题啊），没问题。分析下这个几个宏的意思：&lt;br /&gt;
LD_WORD(ptr) (WORD)(*(WORD*)(BYTE*)(ptr)) 是在little endding里面定义的&lt;br /&gt;
LD_WORD(ptr) ，LD就是load，WORD在integer.h里面定义的是16位的无符号数，那这个需要完成的就是载入一个16位的数，或者说是2个字节，后面的 ptr是参数。(WORD)(*(WORD*)(BYTE*)(ptr)) ，先将这个ptr转换成一个指向BYTE类型数据的指针（BYTE *），在将这个指针转换成一个指向16位无符号数的指针（WORD *），然后用一个 ” * “将这个数据取出来，转换成一个无符号的16位数据，这个仅仅从C语言的角度来看，实际上呢，这个完成的就是从ptr指针指向的位置，取出2个字节，作为一个16位的无符号数取出，而这2个字节是little endding，即小端模式，低字节是低8位，高字节是高8位。&lt;/p&gt;
&lt;p&gt;既然是这样的，测试了下，定义了一个BYTE buf[512]，定义一个WORD类型 zz，用一个指针pt，让pt指向&lt;br /&gt;
buf[0]，调用LD_WORD(ptr），zz=LD_WORD(pt）；没问题，将pt指向buf[1]，呵呵，问题马上出来了，数据终止异常，然后测试了指针指向 buf[3]，buf[5]等等奇数个，都是这样的问题，我就郁闷了啊，，编译器的问题！！！！不过还好，找到问题了，就可以解决问题了，在 ff.h里面的宏定义里面把这即个东东给注释掉，然后在ff.c里面把这几个宏定义写成函数，这里贴一个出来：&lt;br /&gt;
WORD LD_WORD(void *pt)&lt;br /&gt;
{&lt;br /&gt;
BYTE *PT = (BYTE*)pt; //定义一个指针，将当前的指针指向的地址的值赋给PT&lt;br /&gt;
return (WORD)(PT[0]+PT[1]*256); //计算这个16位数，（低8位在前面，高8位在后面），并来个强制类型转&lt;br /&gt;
//换，并返回&lt;br /&gt;
}&lt;br /&gt;
需要注意的是，LD_WORD返回的就必须是WORD。这样做了，编译器大部分的也可以编译通过，但是ADS就是通不过，有3个地方，&lt;br /&gt;
finfo-&amp;gt;fsize = LD_DWORD(&amp;amp;dir[DIR_FileSize]); /* Size */&lt;br /&gt;
finfo-&amp;gt;fdate = LD_WORD(&amp;amp;dir[DIR_WrtDate]); /* Date */&lt;br /&gt;
finfo-&amp;gt;ftime = LD_WORD(&amp;amp;dir[DIR_WrtTime]); /* Time */&lt;br /&gt;
其中，dir的是这样定义的：const BYTE *dir，编译器报错是类型不匹配，因此，这里的几个LD_WORD和LD_DWORD重写，定义成一致的类型即可：&lt;br /&gt;
WORD LD_WORD_1(const BYTE *pt)&lt;br /&gt;
{&lt;br /&gt;
BYTE *PT = (BYTE*)pt;&lt;br /&gt;
return (WORD)(PT[0]+PT[1]*256);&lt;br /&gt;
}&lt;br /&gt;
DWORD LD_DWORD_1(const BYTE *pt)&lt;br /&gt;
{&lt;br /&gt;
BYTE *PT = (BYTE*)pt;&lt;br /&gt;
return ((DWORD)PT[0]+(DWORD)(PT[1]*256)+(DWORD)(PT[2]*65536)+(DWORD)(PT[3]*16777216));&lt;br /&gt;
}&lt;br /&gt;
而后面改成：&lt;br /&gt;
finfo-&amp;gt;fsize = LD_DWORD_1(&amp;amp;dir[DIR_FileSize]); /* Size */&lt;br /&gt;
finfo-&amp;gt;fdate = LD_WORD_1(&amp;amp;dir[DIR_WrtDate]); /* Date */&lt;br /&gt;
finfo-&amp;gt;ftime = LD_WORD_1(&amp;amp;dir[DIR_WrtTime]); /* Time */&lt;br /&gt;
编译，一路OK，然后写一个文件，哇，哈哈哈哈！！！！终于出来了！！！！写文件没问题，读也没问题！@~~~~~测试了常用的函数，都没有问题，包括格式化（f_mkfs，前提是你的disk_ioctl 没问题），测试&lt;br /&gt;
了下速度，读12.5M的MP3，大约3秒，写这个12.5M的MP3大约6.5秒，勉强达到要求，再优化下驱动那边就可以更快了！~~~~~~~&lt;br /&gt;
发个FatFs的官方网址 &lt;a href=&quot;http://elm-chan.org/fsw/ff/00index_e.html&quot;&gt;http://elm-chan.org/fsw/ff/00index_e.html&lt;/a&gt;&lt;br /&gt;
总结这次移植，差点失败就在于编译器的指针的转换问题，写出来，希望兄弟姐妹们在移植的时候不会遇到这种问题。&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;很遗憾，FatFs的官网已经无法打开，域名被域名商囤积，暂时不清楚作者是否已经放弃该系统。&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104165/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104165/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=144</wfw:commentRss><slash:comments>0</slash:comments><description> FatFs文件系统的移植
    因为需要，又不想自己写，所以就移植了一个文件系统。
    说下我的硬件和开发工具：接成 TRUE IDE 模式下的CF卡（也就是相当于一块硬盘了），三星S3C2440的ARM9,开发工具是很老很老的D版的ADS1.2。
    我在网上看到的嵌入式系统上面常用的文件系统有UCOSII公司的UC/FS，支持CF卡，硬盘，SD/MMC卡，还有NAND FLASH等等，比较多，不过是商用的，需要银子的，有周立功的用于教学用（为什么说是用于教学用的，呵呵，等下就说）的ZLG/FS，还找到了开源、免费的两个，其中一个叫做 efsl ，另一个叫做 FatFs 。
    现在先不考虑版权的问题，选择一个比较合适的文件系统。第一个UC/FS文件系统没得什么说的，UCOSII那个公司开发的，稳定性，兼容性应该都不会差。第二个是ZLG/FS。周立功的很多的开发板上面都送了这个文件系统的源代码的，在网上找到一个现成的读写硬盘的，只是是基于LPC2200系列的处理器的。第三个是efsl，是一个开源的项目，免费，只需要提供读扇区和写扇区2个函数。第四个是FatFs，跟efsl一样，也是一个开源的项目，移植的时候比efsl多几个简单的函数。
    这里补充一下CF卡和硬盘的简单的资料，CF卡有三种模式，其中有一个叫TRUE IDE，接成这个模式以后，就跟他的模式名字一样，他就是一个硬盘，对他进行读写，也就相当于对一个硬盘进行读写。当引脚OE（好像是叫OE，具体参考 CF卡文档）在上电的时候检测到拉低，那么CF卡就进入TRUE IDE模式。读写硬盘的时候，在只写一次LBA，只发送一个命令（读或者写）的情况下，最多可以读或者写256个扇区（当然也可以读一个扇区，读或者写多少个扇区在扇区计数器count里面），其中，发一个读或者写命令，读或者写256个扇区所需要的时间，比分256次去读写这些扇区所需要的时间要短得多，效率要高得多，我现在需要的是一个读写的速度比较快，效率比较高的文件系统，因此，底层的读写扇区必须要每写一个命令就可以读写多个扇区，读写扇区的函数必须要有扇区计数器（前面的count）这个参数，才可能满足要求。
    UC/FS也是在网上搜了个代码，看了下，很标准的几个层，什么硬件层，文件系统层，API层，等等（具体参见UC/FS的文档），跟UCOSII一个公司的，稳定性应该不错，需要提供的函数也是读扇区，写扇区等等几个。但是底层的读写扇区的函数不需要提供扇区计数器count这个参数，也就是说，这个文件系统不能在只写一个读或者写命令的情况下，读或者写多个扇区，本来效感觉不错的一个文件系统，效率就大大的降低了。
    然后看了下efls这个文件系统，开源的项目，免费的项目，好东西，移植也很简单，同样移植的时候也是提供读写扇区等几个函数，但是面临的跟UC/FS同样的问题，每次读写的时候也只能读写一个扇区。
    绝望之余看到了周立功的文件系统，大概看了下（没有仔细阅读源代码），硬件驱动上面能够在发一次读命令的情况下，读写多个扇区，而且感觉上比较简单，同样，层次也很清楚，移植需要做的事情也是修改后面的读写扇区等等几个函数。于是就开干了。功夫不负苦心人，过了几天，CF卡能够读写了，拿到电脑上面看写的数据，没问题。从CF卡里面读文件出来，打印到超级终端，也没有问题，以为就万事OK了，想了下，我们需要的，最关心的，第一是速度，然后就开始测试速度，不测不知道，一测吓一跳！太“快”了，，才5，6个K Bytes 每秒！！！！！（我的驱动已经测试了，上M字节每秒的）   于是跟踪到写里面去，发现一个很，十分，非常严重的问题：ZLG/FS提供了读一个字节的函数，忘了叫做啥，这里暂时叫 ReadOneByte（***），然后读多个字节，或者说读大块字节的函数用的是啥，呵呵，
for（i=0；i &amp;#60; N ; i++） ReadOneByte（***），这种机制，不慢才怪事！！！于是伤心的抛弃了ZLG/FS，这东东，学习还是可以的，商用的话，差太远了！！！
    我那点东西，文件系统可以不上，但是必须有个文件存储协议，或者说叫做自己的文件系统，自己写个简单的存储协议，试过，很麻烦。但是如果上文件系统，自己写的话，写要累死人的，写出来的不一定效率就高，速度就快，所以，还是在网上漫无目的的找，觉得应该有效率很高的文件系统的。
 
    还是那句话，功夫不负苦心人，终于让我找到了，也就是现在所用的，FatFs，开源，免费，高效！（说一下这里几个文件系统都有的一个缺点，由于微软的FAT版权的问题，FatFs，ZLG/FS，efsl都只支持 DOS 8.3 文件名，即8个字节的文件名，一个”.“，然后3个字节的扩展名，我找到的那个UC/FS也不支持，不知道在更新的版本里面支持不，看哪天有空了，把那个FatFs改下，让他支持，呵呵）。FatFs 的底层可以写一次命令，读写多个扇区。FatFs的设计的读写的思想就很好，小块的数据，我就经过Buffer来存储，大块的数据，我就直接进行存取，那样速度，效率高了很多。
 
 

 

 
 
补充一点，FatFs的作者写了两个，一个是正宗的FatFs，比较适合大的RAM的设备，另一个是FatFs/Tiny，比较适合小RAM的系统，比如单片机，FatFs/Tiny占用较小的RAM，代价是更慢的读写速度和更少的API函数。不过两个都支持FAT12，FAT16，FAT32文件系统。
下载下来的FatFs的FatFs有两个文件夹，一个是 doc ，FatFs的说明，包括特性，系统函数，以及可能的一些问题，另一个就是源代码文件夹src了，总共8个文件，diskio.c和diskio.h是硬件层，ff.c和ff.h是FatFs的文件系统层和文件系统的API层，integer.h是文件系统所用到的数据类型的定义，tff.c和tff.h是Tiny的文件系统层和文件系统的API层，还有一个00readme.txt简要的介绍了FatFSHE FatFs/Tiny，包括他们所支持的API，怎么配置等等。
移植的问题，第一个是数据类型，在integer.h里面去定义好数据的类型。第二个，就是配置，打开ff.h（我用的FatFs，不是Tiny），_MCU_ENDIAN，选择你的CPU是大端存储（big endding）还是小端存储（little endding），一般的都用的小端存储，1是小端，2是大端。这个相当重要，一会儿还要谈到这里。其他的，按照自己的需要来配置了，说明文档够清楚了，我就不多说啥了。
第三件事情，就是写底层的驱动函数，包括：
disk_initialize &amp;#8211; Initialize disk drive
disk_status &amp;#8211; Get disk status
disk_read &amp;#8211; Read sector(s)
disk_write &amp;#8211; Write sector(s)
disk_ioctl &amp;#8211; [...]&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104165/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104165/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>MCU相关</category><category>软件</category><pubDate>Sun, 22 Feb 2009 00:06:31 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=144#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=144</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=144</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104165/5333468</fs:itemid></item><item><title>AD噪声分析（好文，转载，出处不可考）</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104166/5333468/1/item.html</link><content:encoded>&lt;p&gt;数据转换器的噪声&lt;/p&gt;
&lt;p&gt;问：最近我鉴定一只双电源ADC。我将待测转换器的输入端接地，并 且在LED指示灯上观察其输出的数码。令我非常惊奇的是为什么我所观察到的输出数码范围 不是我所期望的一个数码?&lt;/p&gt;
&lt;p&gt;答：这是由电路噪声引起的。当直流输入信号是在两个相邻输出码之间产生变迁 时，甚至是在最精密的直流转换器中只是一个很小的电路噪声在其输出端保证出现2个数码 偏差。这是模数转换领域中一个生动的事实。类似这种情况，在许多实例中其内部噪声都 可能大 到足以使输出产生几个数码的偏差。例如具有峰峰噪声电压的转换器输出偏差会超过2 LSB 。当这种转换器的输入端接地，或者输入端接一个干净的直流信号源时，我们总是能在输出 端看到3个甚至有时是4个数码的偏差。这种电路噪声使采集到的电压不致限制在一个数码所 对应的电压范围内。ADC输入端(包括噪声信号)、电源线及控制线路上的任何外部噪 声都会增加内部电路噪声，从而有可能会产生更多位的跳动。&lt;span id=&quot;more-142&quot;&gt;&lt;/span&gt;&lt;br /&gt;
问：当我把一个直流信号加到转换器输入端时，如何确定输出端应该出现的数码数 目?&lt;/p&gt;
&lt;p&gt;答：在知道噪声分布、直流输入信号对应的确切数码和在数码量化范围内的位置( 在 两个数码的中心或在两个数码的边界)理想情况下，这是不困难的。但实际上你不知道这些 情 况。你只能知道一些有关转换器的交流技术指标(信噪比、动态范围等)，你可以由此进行估 算。你从这些指标中可以求出转换器噪声有效值相对满度值的大小。这种噪声幅度大多数 都 服从高斯分布，所以这种分布的标准偏差(sd)等于其均方根值或有效值。这一结果还表明呈 现的偏差数码不会有相等的概率。根据高斯分布，偏离平均值±3 sd的概率为997% 这一事实，我们在6 sd处可以估算峰峰值噪声电压。&lt;br /&gt;
如果N rms 为转换器的噪声有效值，V LSB 为1 LSB对应的电压值(=V span /2 b)，V span 为满度电压，那么以LSB为单位的峰峰噪声电压NB为：&lt;/p&gt;
&lt;p&gt;NB=6×N rms V LSB =6×2b×N rms V span &lt;br /&gt;
通常，如果转换器的信噪比表示相对满度值的噪声功率，那么我们可得：&lt;/p&gt;
&lt;p&gt;NB=32×2b×10 -SNR/20 &lt;/p&gt;
&lt;p&gt;其中b为输出字的位数。&lt;/p&gt;
&lt;p&gt;在输出端看到多少个数码取决于输入的平均值(即直流输入值)相对于与数码变迁的位置。如 果输入的平均值靠近两个输出数码的边界，与该平均值位于两个输出数码的中间相比可能会 看到更多的数码。很容易看出，对于特定的NB值在输出看到的数码的数目NC取决于直流 输入值，或者为INT(NB)+1或者为INT(NB)+2，其中INT(NB)为NB的整数部分。所以 从噪声幅度＞±3 sd的小概率事件中看到较大的数码是不足为奇的。&lt;/p&gt;
&lt;p&gt;那么在输出端有多少位NC产生跳动?表示NC数码所需要的位数是：&lt;/p&gt;
&lt;p&gt;INTlogNClog2+05&lt;/p&gt;
&lt;p&gt;但是我们能够看到比这位数还多的跳动，因为跳动的位数是转换器的直流输入实际值的函 数。例如，考虑在二进制补码中输出字从-1到0的一位码变迁要涉及到所有输出位的反转。&lt;/p&gt;
&lt;p&gt;现在让我们看一下AD1879应用实例，它是动态范围为103 dB的18位ΣΔ模数转换器。从动 态范围的定义我们有：&lt;/p&gt;
&lt;p&gt;20logSN rms =103&lt;/p&gt;
&lt;p&gt;从AD1879的产品说明中我们得到满度输入信号的有效值为6/2V。从而允许我 们可从上式中求出N rms 为30 μV。接着我们把满度输入范围(12 V)除以最大输出的数 码(2 18 )从而求出1 LSB的电压值：&lt;/p&gt;
&lt;p&gt;V LSB =122 18 =458 μV&lt;/p&gt;
&lt;p&gt;从而可以计算出NB=39。因此当AD1879输入接地(假设接地时对应AD1879的半满度值输入 )时，我们可以预期在其输出端出现4或5不同的数码。 &lt;br /&gt;
我们可以作进一步的估算。如果已知噪声高斯分布的标准偏差(有效值)和平均值(在这种情 况下噪声平均值为0)，那么我们便可以使用高斯分布标准数据表来计算噪声出现在规定输出 数码所对应的电压范围内的概率。这样估算出的一个直方图可以描绘出转换器输出数码的分 布 。这个过程也可以反过来，即利用给定直流输出值条件下的噪声数码分布的直方图可以估 算出转换器的信噪比。 &lt;br /&gt;
&lt;img src=&quot;http://www.avrw.com/article/pic/2006826163431734.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt; 此主题相关图片如下：&lt;br /&gt;
&lt;span style=&quot;cursor: hand;&quot;&gt;&lt;img onclick=&quot;window.open(this.src,null,‘‘)&quot; src=&quot;http://www.avrw.com/article/pic/2006826163431580.gif&quot; border=&quot;0&quot; alt=&quot;按此在新窗口浏览图片&quot; /&gt;&lt;/span&gt;&lt;br /&gt;
图71 噪声高斯分布&lt;/p&gt;
&lt;p&gt;为了实现上述想法，我们还是以AD1879为例来说明。考虑两种情况，一种情况是直流输入信 号恰恰使转换器输出数码位于两个数码中间，另一种情况是输入信号恰恰使输出数码处于两 个数码变迁状态。根据前面的计算，我们已求出噪声标准偏差(即有效值)为30 μV，那么1 LSB对应的噪声电压用噪声标准偏差(sd)来表示为：&lt;/p&gt;
&lt;p&gt;4578 μV300 μV=1524&lt;/p&gt;
&lt;p&gt;在直流输入信号处于两个数码变迁的中间时(如图72所示)，显然落在-05 LSB至+05 LSB 的任何输入噪声使ADC仍会产生正确输出数码。这样相当于把噪声限制于偏离平均值(0)从(- 05×1524)sd至(+05×1524)sd范围内。根据标准数据表我们可以求出噪声出现在 这 个范围的概率为554%。如果噪声出现在05 LSB至+15 LSB，那么输出将大于一个数码 。从标准数据表还可求出 噪声出现在这个范围内的概率为212%。按照这种方法进行下去我们可以得到描绘输出数码 分布的总直方图(图72)。&lt;br /&gt;
图72中的上面一个图示出了直流输入当输出码平均值为-25 LSB时的实际测量结 果。从-27到-23输出范围占5个数码。测量1024次，其中测得每个数码出现的概率 示于每一直柱顶 上， 而计算出的分布概率用括弧标注在每一直柱的顶上。可以看出，测量结果与计算值很一致， 图72中的下面一个图示出了直流输入其输出码位于两个数码的边界处的情况。按照同样的 方法，我们可以得到下面看到的直方图。然后再通过测量和计算，结果非常一致。应该注意 的是 ，实际施加的直流输入信号的稍高于两个数码之间的边界值，而计算时则按照它正确的边界 计算。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.avrw.com/article/pic/2006826163431734.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt; 此主题相关图片如下：&lt;br /&gt;
&lt;span style=&quot;cursor: hand;&quot;&gt;&lt;img onclick=&quot;window.open(this.src,null,‘‘)&quot; src=&quot;http://www.avrw.com/article/pic/2006826163431360.gif&quot; border=&quot;0&quot; alt=&quot;按此在新窗口浏览图片&quot; /&gt;&lt;/span&gt;&lt;br /&gt;
图72 输出数码分布直方图&lt;/p&gt;
&lt;p&gt;上述估算方法的最大缺点是，常规的转换器数码宽度(要逐位增加数码输出必须增加直流输 入量)随逐位增加的数码而变化。这表明，如果直流输入范围对应其输出码范围很窄，那么 我们 可以预计这要比对应其输出数码范围很宽的直流输入范围跳动位数要多。另外，这种方法还 假设 转换器内部电路噪声保持恒定，不论是输入交流信号还是直流信号。在许多应用中这是不完 全符合实际情况的。&lt;br /&gt;
当使用ΣΔ转换器(“死区”除外)时，这种估算方法可能比较准确，因为前边提到的两个 因素中的任何一个都是在这种转换器中提出的。&lt;/p&gt;
&lt;p&gt;问：现在我明白了为什么在输出端呈现多个数码变化。但为什么不把那些跳动的数 码去除而 只是使它们保持稳定，是因为其它数码实际上也不确定吗?转换器的实际分辨率是这样的吗?&lt;/p&gt;
&lt;p&gt;答：对于专门用于交流或动态应用的许多转换器，其中THD(总谐波失真)和THD＋N (总谐波失真＋噪声)是最重要的的技术指标。因此设计的目标是减小大信号和小信号输入时 的谐波失真，同时又使噪声保持在可接受的水平。从而使这些要求与优良的直流转换器的要 求有点儿不一致。优良的直流转换器为使缓慢变化的信号精密转换达到最佳，对其中的谐波 失真不看成主要问题。实际上希望有些噪声，称作颤抖信号(dither)叠加在输入信号上以便 在 非常小的信号输入情况下减小失真。颤抖信号还可以用来改善重复测量情况下的直流精度。&lt;/p&gt;
&lt;p&gt;为了理解上面的作法，让我们先看一下量化噪声。一个理想的ADC的输出精度是 有限的，因为只能用有限位数(b)的数字量表示其输入电压。2b个数字量中的每一个数字 量只能 表示在全部模拟量范围内对应其相应标称输入值-05 LSB到+05 LSB量化范围内的一个数 值。因此ADC的输出可以看作是由离散形式的模拟输入加上误差信号(量化噪声)构成的 。当将一个大的并且变化的输入信号(幅度为几十、几百或几千个LSB)加到一个ADC时，量化 噪声与 输入信号具有很小的相关性。换句话说，这种量化噪声可近似看作是白噪声。图73示出的 是，当输入信号幅度约为100 LSB正弦信号时，理想ADC在不同时刻的量化噪声。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.avrw.com/article/pic/2006826163431734.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt; 此主题相关图片如下：&lt;br /&gt;
&lt;span style=&quot;cursor: hand;&quot;&gt;&lt;img onclick=&quot;window.open(this.src,null,‘‘)&quot; src=&quot;http://www.avrw.com/article/pic/2006826163432797.gif&quot; border=&quot;0&quot; alt=&quot;按此在新窗口浏览图片&quot; /&gt;&lt;/span&gt;&lt;br /&gt;
图73 ADC在不同时刻的量化噪声分布&lt;br /&gt;
当ADC的输入幅度很低，以便两次采样之间其幅度变化不大于1 LSB时，采样保持相 同的量化程度，因此在几个采样周期都保持恒定。用图74来进一步说明，下面的三个图 分别示出了幅度仅为15 LSB的正弦输入信号，ADC的输出波形和其量化噪声波形。应该 注意的是， 当采样保持不变时，量化误差严格跟随输入波形。采样保持不变时间越长，量化噪声波形越 像输入波形，即输入信号与量化噪声之间的相关性增加。当量化误差的有效值没有改变时， 量化误差将呈现非均匀谱波形。实际上这种相关的量化噪声是以ADC谱分布的谐波形 式出现的。 分析上述现象的另外一种方法是考虑这种情况，当正弦输入信号幅度仅为1 LSB左右，而其 数字输出类似方波。方波有很丰富的谐波成分。谐波或噪声调制的产物在许多转换器应用中 是很有害 的，尤其是音频应用。&lt;/p&gt;
&lt;p&gt;为了回避这个问题，采用一种称作“颤抖”方法，把相关量化噪声换成白噪声，因为白噪声 的刺耳程度比相关噪声轻一点儿。利用电路中的元器件产生的颤抖信号叠加到输入信号的随 机噪声 上。虽然这样会使转换器的总噪声增加，但是增加的噪声用来补偿输出 &lt;br /&gt;
&lt;img src=&quot;http://www.avrw.com/article/pic/2006826163431734.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt; 此主题相关图片如下：&lt;br /&gt;
&lt;span style=&quot;cursor: hand;&quot;&gt;&lt;img onclick=&quot;window.open(this.src,null,‘‘)&quot; src=&quot;http://www.avrw.com/article/pic/2006826163432784.gif&quot; border=&quot;0&quot; alt=&quot;按此在新窗口浏览图片&quot; /&gt;&lt;/span&gt;&lt;br /&gt;
图74 当ADC的输入信号幅度很低情况下的输 入，输出波量化噪声波形&lt;/p&gt;
&lt;p&gt;数码量化噪声引起的 简单 方波。这样使量化误差不再是输入信号的函数而是颤抖噪声瞬时值的函数。因此， 颤抖信号去除了量化噪声与输入信号之间的相关性。颤抖信号的大小通常约为1／3 LSB有效 值(在高斯分布噪声峰峰值为2 LSB时)。显然，当这种转换器的输入接地时，在其输出端会 有大于2个数码的输出，我们在前面提到AD1879的例子中已经看到，当输入端接地时，在输 出端出现4或5个数码。 &lt;/p&gt;
&lt;p&gt;图75中的左图示出了在没有采用很小的颤抖输入信号情况下ADC的仿真输出。量化噪 声是采样瞬时输入信号幅度的函数。量化噪声与输入信号之间的这种相关性表现为与模数转 换输出谱图有关的谐波谱线群。应该注意图中谱线幅度的刻度是相对输入信号(而不是相对 满度输入)。 图75中的右图示出了在输入端量化噪声本底上施加4 dB颤抖信号之后模数转换输出谱图。 在 这种情况下，量化噪声依赖于进行采样的瞬时颤抖信号的幅度。因为颤抖信号的幅度不依赖 于输入信号，量化噪声与输入信号没有相关性，从而消除了ADC输出谱图中的谐波分 量，但是以增加总噪声本底为代价的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.avrw.com/article/pic/2006826163431734.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt; 此主题相关图片如下：&lt;br /&gt;
&lt;span style=&quot;cursor: hand;&quot;&gt;&lt;img onclick=&quot;window.open(this.src,null,‘‘)&quot; src=&quot;http://www.avrw.com/article/pic/2006826163433738.gif&quot; border=&quot;0&quot; alt=&quot;按此在新窗口浏览图片&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;图75 用施加颤抖信号方法改善量化噪声&lt;/p&gt;
&lt;p&gt;不是在ADC输入端实际施加颤抖噪声，而是利用转换器的热噪声作为颤抖信号能够 起到颤抖的作用，并且计算出足够的输出位数以确保去除输入信号与量化噪声的相 关性。 虽然在上面的例子中仅介绍了ADC的使用，使用颤抖信号的方法也可用于数模转换器 。颤抖信号用于数模转换器时，是把数字噪声发生器的输出端加到数模转换器的数字输入端 。&lt;/p&gt;
&lt;p&gt;问：但是在直流应用中，我想每次做精确测量时，具体测量误差都不允许有几个 LSB不确定度。对这种情况我应该怎么办?&lt;/p&gt;
&lt;p&gt;答：如果你要求每次转换都具有n位直流精度并且你找到合适的n位转换器有困难 ，有两种方法供你选择。一种方法是选用(n+2)位转换器，干脆忽略不计2 LSB。另一种方法 是，如果你具有硬件处理信号的能力和时间，那么你可以增强直流转换器颤抖噪声的分辨率 ；如果精度受噪声限制，那么实际上你可以得到超过n位转换器的n位精度。&lt;/p&gt;
&lt;p&gt;为了弄清为什么会这样做，考虑一个理想的n位转换器。对于一个给定的直流输入，在输 出端你可以得到一个数字数码，但你不知道输入信号位于数码量化范围内的位置(例如，位 于 中间还是靠近变迁点的上限)。这对你的应用精度可能足够了，但如果你在转换器的输入端 加一个噪声(致使在输出端出现几个数码)，那么你会发现叠加噪声数码分布更精确地包含给 予直流输入值的信息。在前边提到AD1879的例子中，我们已经看到了当输入位于数码变迁附近时的数码分布情况。 两个最频繁输出的数码总是位于变迁的某一侧，所以用平均值估计其输入位置是一种好方法 。实际上，当输入保持不变时，对转换数据进行多次平均，是提高转换器分辨率的一种极好 方法。当处理转换器输出数据时必须注意的是要允许输出字足够长以便不产生舍入误差(rou ndoff errors)。否则 ，确实会将不希望的噪声(称作“重建量化噪声”，requantization noise)引入最终输出端 。应该注意，滤 掉的噪声正好是这种噪声，它对转换器的其它误差源(例如积分误差和微分误差)没有影响。&lt;/p&gt;
&lt;p&gt;提高分辨率是一个很重要的想法，并且不局限于直流信号。人们实际上可以用分辨率换取 交流信号的带宽，从而可把几个转换器的输出组合起来或者构成更高分辨率的输出。基本原 理是信号重复(自相关)线性叠加，而随机噪声重复按平方根增加。因此采样次数增加4倍， 信噪比(S／N)增加6 dB。有关这个原理的应用将在后面介绍。&lt;/p&gt;
&lt;p&gt;问：前面你已经提到有关转换器的交流技术指标，但是我对S／N，THD+N ，THD，S/ THD，S/THD+N以及ADC与DAC转换器的动态范围的测量及其彼此间的相互关系还是有些混淆。 请你对此解释一下好吗?&lt;/p&gt;
&lt;p&gt;答：你的混淆是完全可以理解的。遗憾的是，有关这些技术指标的测量方法现在 还没有一个严格的工业标准，所以也就没有确切的定义。制造厂家有时非法地选取有利于 自己的片面定义。最常见的产品说明包括测试条件和不同技术指标计算方法的解释。我建议最好的方法是非 常认真地阅读产品说明。通过简单计算你常常可以把需要进行合理比较的某种型号器件的 指标转换成另一种型号的指标。&lt;/p&gt;
&lt;p&gt;大多数技术指标都不是用绝对单位表示的，而是以相对单位或比率形式来表示的。例如，噪 声不是规定用电压有效值来表示，而是用信噪比(SNR)或者在规定测试条件下的信号功率与 噪声功率的比率来表示。这种比率通常又用分贝(dB)，偶尔还用百分比(%)来表示。功率比 率 x用贝(尔)(bels)来表示，定义为log 10 x。如果用分贝(十分之一贝)表示功率比率， 再乘以10，即10log 10 x。因而SNR等于10log 10 x(信号功率／噪声 功率)dB。用电压有效值比率表示的等效形式为：&lt;/p&gt;
&lt;p&gt;SNR=20log 10 (Vs/Vn)&lt;br /&gt;
其中Vs表示信号电压有效值，Vn表示噪声电压有效值。&lt;/p&gt;
&lt;p&gt;有了这些知识准备，让我们看一下，现在是否能够弄清楚上述那些技术指标(有些是多余的) 。这些技术指标试图用来说明由于转换器性能的不完善如何影响转换器处理的交流信号特 性。在直流应用中，用一系列非理想状况的幅度大小来描述便足够了，但是这些仅说明交流 特性。例如，积分线性误差是检测大信号失真(伴随DAC的毛刺能量)的主要指标， 而微分线性误差是决定小信号失真的关键指标。因此为了准确地检测ADC的交流性能 ，至少要采用两种测量方法，现介绍如下：&lt;/p&gt;
&lt;p&gt;1满度正弦法&lt;/p&gt;
&lt;p&gt;对ADC施加接近满度值的正弦输入信号。输入信号要足够大，以便由于转换器的性能 不完善致使在输入信号的倍频位置出现有影响的谐波分量。这些谐波分量同噪声一起在转换 器输出谱中出现。通用的性能测量是谐波分量的相对值，通常用dB表示。那么相对值的基准 是什么呢?有两种可能选用的基准：转换器的输入信号和转换器的满度值(在大多数情况下相 对满度值与相对输入信号结果不同)。相对满度值表示的谐波分量显然要比相对实际输入信 号的有效值表示的谐波分量要低(比较明显)。当评价动态指标时，这个基准问题 会引起很多混淆概念，因为对每一种性能测量应该选用的基准目前还没有一个可普遍接受的 标准。我向你提供的最好建议是：决不揣想任何东西，必须非常认真地阅读厂家提供的产 品说明书。&lt;/p&gt;
&lt;p&gt;虽然，有时见到规定的具体谐波分量的数值，但是最常见的是仅规定总谐波失真(THD)。T HD用来度量谐波分量的总功率并且它是对每一个具体的谐波分量按照rss形式加和而得到 的。当相对输入信号时，对于THD的计算公式为：&lt;/p&gt;
&lt;p&gt;20log 10 ∑mi=2H2(i) rms S 或 10log 10 ∑mi =2H2(i) rms S2&lt;/p&gt;
&lt;p&gt;其中H(i) rms 表示第i次谐波分量的有效值(rms)，S表示输入信号的有 效值。通常谐波 取2到5次就足够了。应当注意输入频率或基波成分为一次谐波。为了相对满度值表示谐波分 量，在上面公式中再加上一项 xdB ，其中x是输入信号相对满度值。这个简单的变换公式 也可用于其它技术指标，但一定要知道对数运算后的正或负号。&lt;/p&gt;
&lt;p&gt;现在，一般可以弄清楚THD+N和THD的差别。THD+N这种情况不常见。THD+N不仅包括转换过程 产生的谐波分量，而且还包括噪声。当相对于输入信号时，对于THD+N的计算公式为：&lt;/p&gt;
&lt;p&gt;20log 10 N2 rms +∑mi=2H2 (i) rms S&lt;/p&gt;
&lt;p&gt;或&lt;br /&gt;
10log 10 N2 rms +∑mi=2H2 (i) rms S2&lt;/p&gt;
&lt;p&gt;其中N rms 表示在规定的测量带宽范围内累积噪声的有效值。&lt;/p&gt;
&lt;p&gt;另一项常用的技术指标是信号与噪声加失真之比S／(N+D)或S／(THD+N)也称为“sinad” 。当相对输入信号表示这项指标时，它实质上是(THD+N)的倒数。它的 dB数相同，只是符号相反。&lt;/p&gt;
&lt;p&gt;表示测量结果的另一项指标是信噪比，即S／N或SNR，它是相对噪声功率的一种度量。在 没有谐波的情况下，S／N用来估计小信号响应非常有用。如果没有规定S／N，但给出了相对 输入信号的THD和THD+N，那么从THD+N按rss形式减去THD便可求出噪信比(N/S)，即噪信 比的 倒数［=1/(S/N)］。如果THD和THD+N是按dB形式给出的，为了求出用dB形式表示相对噪声功 率的输入信号功率，可以利用前面给出的rss减法公式：&lt;/p&gt;
&lt;p&gt;SNR=-10log 10 10 (THD+N)/10 -10 THD/10 &lt;/p&gt;
&lt;p&gt;2 低电平正弦法&lt;/p&gt;
&lt;p&gt;第二种常用的测量方法是在转换器的输入端施加远远低于满度值(通常为-60 dB)的低电平正 弦信号。在这种输入电平条件下，ΣΔ转换器表现出的线性误差通常可以忽略不计，所以 在输出谱中仅能看到噪声(无谐波分量)。在这种输入电平条件下，当下面的几项 指标都相对同一基准时，则有S/N=S/N+D=-THD+N=-THD。所以用一种指标来说明噪 声的大小完全可以表示这种测量结果。这种技术指标称作“动态范围”(与“动态范围失真 ”相反)，当对转换器施加一个-60 dB输入信号时，它表示在相对满度值规定的带宽范围内 总噪声和谐波分量(如果存在)的大小。&lt;br /&gt;
常规的(不是ΣΔ)转换器甚至在输入信号很低的条件下在其输出谱上仍能呈现出谐波分量 ，因为所有的数码宽度不等(微分线性误差)。在这种情况下，在转换器输入端施加-60 dB输 入信号测量S/N，由于忽略了谐波分量，所以不同于动态范围。&lt;/p&gt;
&lt;p&gt;人们经常在同一转换器的-60 dB和规定的动态范围两种条件下看到THD+N。按照上述解 释，实际上两个条件有些多余，因为它们只是使用的基准不同。在动态范围方面唯一的一个 例外是有时当已规定好音频转换器后，在转换器的输出加一个模仿人耳朵频率响应的滤波器 。&lt;br /&gt;
转换器输出的这种处理方法称作“A型加权”(Aweighting)，因为使用了A型加权滤波器。 如果这种噪声属于白噪声，那么这种方法可以有效地降低本底噪声，从而提高S/N。&lt;/p&gt;
&lt;p&gt;上述有关ADC与DAC的各种讨论，对其中S/N这项指标可能有些例外。有时(特别是音 频DAC转换器)S／N是转换器在零码(半满度)输入条件下，对DAC输出“安静” 程度 的一种度量。在这种条件下，S／N表示DAC输出的模拟噪声功率与满度输出有关。&lt;/p&gt;
&lt;p&gt;值得注意的是，上述技术指标的测量都受下面参数的影响：测量带宽、采样频率和输入信 号频率。为了对两个转换器进行公正的比较，必须保证相同的测量条件。&lt;/p&gt;
&lt;p&gt;其它问题&lt;/p&gt;
&lt;p&gt;问：我想使用ADI公司的AD1800音频系列DAC用于数字音频放音。 我知 道利用DAC前面的转发器(interpolator)很容易对转换器的输出进行滤波，假设我想滤掉DAC 输出端的全部视频信号。因为所有的视频信号都会超过音频范围(只要采样速率 ＞40 kHz)，那么在输出端进行滤波确实很必要吗?&lt;/p&gt;
&lt;p&gt;答：这个问题提得好。为了处理20 Hz至20 kHz音频信号通常制造一个最终可以接 受DAC输出的音频设备(音频放大器、均衡器、功率放大器等)。因为这种音频设备对于远远 大于 20 kHz频率以外的信号没有响应，实际上其自身具有滤波器作用，所以这种音频设备不具备 合适的转换速率和增益来处理DAC输出频率在20 kHz以上、能量很高、未经过滤波的 那部分信号。由于受到放大器的转换速率和增益的限制，所以使放大器进入非线性区从 而产生失真。这种失真虽然对高频没有限制，但却对20 Hz到20 kHz音频范围有影响。因此 衰减DAC的高频信号可能减小失真。CD唱机常常包含非常陡的滤波器，以便能够滤掉满度以 下音频带以外大于80 dB的信号。&lt;/p&gt;
&lt;p&gt;问：我的多路ADC系统出现故障……&lt;br /&gt;
答：你在做下一步实验之前，把所有不用的多路转换器通道都接地了吗?&lt;/p&gt;
&lt;p&gt;问：没有。但你是怎么知道的?&lt;br /&gt;
答：因为浮置端是含有CMOS多路转换器(MUX)系统中最常见的问题之一。不用的MU X的输入端和输出端(不论是集中到多路ADC，还是从内部MUX芯片中分出)都可能从杂散场(漏 磁场)拾取信号而且将其注入到器件的基片，接通寄生的基片器件。甚至当不用的通道 被 切断时， 导通通道的性能都可能明显降低(在可能性很小的极端情况下，注入能力可影响到寄生的四 层器件以致损坏某些芯片)。每当使用MUX时，必须把所有的输入端和输出端都接到电源两端之间的某一电位。最好 的方法是把所有不用的通道都接到地，但也可以把它们接到电源两端内的某一方便电位。 &lt;/p&gt;
&lt;p&gt;问：为了节省电源，ADC仅在测量时供电。在连续工作时该系统很精确， 但是当选通供电时却出现了问题。这是为什么?&lt;/p&gt;
&lt;p&gt;答：仅当ADC进行转换时才接通它的电源，从而造成工作不正常，可能有三个原因 ：基准导通缓慢，初始逻辑状态处于随机状态以及系统被闩锁。由于热稳定性、电容充电、带隙式基准中使用PNP晶体管构成的再生 电流 镜电路起动缓慢等多种原因，当电源接通数毫秒之后产生相当大的误差，这对某些电压基 准来说是 不足为奇的。因此在ADC转换期间由其外部或内部基准引起的误差导致转换结果不准确。&lt;/p&gt;
&lt;p&gt;在电源接通时，一般ADC的逻辑状态处于随机状态。如果这时开始转换，ADC不能正常 工 作。当起动ADC转换时，其逻辑状态应该回到正常的预转换状态，这样在ADC进行真正转换之 前必须有两个转换周期。这又清楚地告诉我们，有些ADC在预转换完成之前，起动转换起坏 的 作用。在这种情况下，为了使ADC回到正常逻辑状态，需要进行一、两次“空”转换。&lt;br /&gt;
如果ADC设有外部逻辑，以便在ADC“忙”信号结束时开始延时直到下一次转换开始，那 么在下述 情况下是非常重要的。如果转换器在处于“忙”状态时加电，那么“忙”信号在接收到“开 始”转换脉冲之前一直被闩锁。在这种情况下，该系统不能自起动。如果在加电时总是处于 “忙”状态，那么在系统设计时肯定会提出并考虑这个问题。但是，如果在加电时仅偶然出 现“忙”信号，那么系统无法断定闩锁。通常对起动ADC的控制信号不应该依赖于“忙 ”状态。&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104166/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104166/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=142</wfw:commentRss><slash:comments>0</slash:comments><description>数据转换器的噪声
问：最近我鉴定一只双电源ADC。我将待测转换器的输入端接地，并 且在LED指示灯上观察其输出的数码。令我非常惊奇的是为什么我所观察到的输出数码范围 不是我所期望的一个数码?
答：这是由电路噪声引起的。当直流输入信号是在两个相邻输出码之间产生变迁 时，甚至是在最精密的直流转换器中只是一个很小的电路噪声在其输出端保证出现2个数码 偏差。这是模数转换领域中一个生动的事实。类似这种情况，在许多实例中其内部噪声都 可能大 到足以使输出产生几个数码的偏差。例如具有峰峰噪声电压的转换器输出偏差会超过2 LSB 。当这种转换器的输入端接地，或者输入端接一个干净的直流信号源时，我们总是能在输出 端看到3个甚至有时是4个数码的偏差。这种电路噪声使采集到的电压不致限制在一个数码所 对应的电压范围内。ADC输入端(包括噪声信号)、电源线及控制线路上的任何外部噪 声都会增加内部电路噪声，从而有可能会产生更多位的跳动。
问：当我把一个直流信号加到转换器输入端时，如何确定输出端应该出现的数码数 目?
答：在知道噪声分布、直流输入信号对应的确切数码和在数码量化范围内的位置( 在 两个数码的中心或在两个数码的边界)理想情况下，这是不困难的。但实际上你不知道这些 情 况。你只能知道一些有关转换器的交流技术指标(信噪比、动态范围等)，你可以由此进行估 算。你从这些指标中可以求出转换器噪声有效值相对满度值的大小。这种噪声幅度大多数 都 服从高斯分布，所以这种分布的标准偏差(sd)等于其均方根值或有效值。这一结果还表明呈 现的偏差数码不会有相等的概率。根据高斯分布，偏离平均值±3 sd的概率为997% 这一事实，我们在6 sd处可以估算峰峰值噪声电压。
如果N rms 为转换器的噪声有效值，V LSB 为1 LSB对应的电压值(=V span /2 b)，V span 为满度电压，那么以LSB为单位的峰峰噪声电压NB为：
NB=6×N rms V LSB =6×2b×N rms V span 
通常，如果转换器的信噪比表示相对满度值的噪声功率，那么我们可得：
NB=32×2b×10 -SNR/20 
其中b为输出字的位数。
在输出端看到多少个数码取决于输入的平均值(即直流输入值)相对于与数码变迁的位置。如 果输入的平均值靠近两个输出数码的边界，与该平均值位于两个输出数码的中间相比可能会 看到更多的数码。很容易看出，对于特定的NB值在输出看到的数码的数目NC取决于直流 输入值，或者为INT(NB)+1或者为INT(NB)+2，其中INT(NB)为NB的整数部分。所以 从噪声幅度＞±3 sd的小概率事件中看到较大的数码是不足为奇的。
那么在输出端有多少位NC产生跳动?表示NC数码所需要的位数是：
INTlogNClog2+05
但是我们能够看到比这位数还多的跳动，因为跳动的位数是转换器的直流输入实际值的函 数。例如，考虑在二进制补码中输出字从-1到0的一位码变迁要涉及到所有输出位的反转。
现在让我们看一下AD1879应用实例，它是动态范围为103 dB的18位ΣΔ模数转换器。从动 态范围的定义我们有：
20logSN rms =103
从AD1879的产品说明中我们得到满度输入信号的有效值为6/2V。从而允许我 们可从上式中求出N rms 为30 μV。接着我们把满度输入范围(12 V)除以最大输出的数 码(2 18 )从而求出1 LSB的电压值：
V LSB =122 18 =458 μV
从而可以计算出NB=39。因此当AD1879输入接地(假设接地时对应AD1879的半满度值输入 )时，我们可以预期在其输出端出现4或5不同的数码。 
我们可以作进一步的估算。如果已知噪声高斯分布的标准偏差(有效值)和平均值(在这种情 况下噪声平均值为0)，那么我们便可以使用高斯分布标准数据表来计算噪声出现在规定输出 数码所对应的电压范围内的概率。这样估算出的一个直方图可以描绘出转换器输出数码的分 布 。这个过程也可以反过来，即利用给定直流输出值条件下的噪声数码分布的直方图可以估 算出转换器的信噪比。 
 此主题相关图片如下：

图71 噪声高斯分布
为了实现上述想法，我们还是以AD1879为例来说明。考虑两种情况，一种情况是直流输入信 号恰恰使转换器输出数码位于两个数码中间，另一种情况是输入信号恰恰使输出数码处于两 个数码变迁状态。根据前面的计算，我们已求出噪声标准偏差(即有效值)为30 μV，那么1 LSB对应的噪声电压用噪声标准偏差(sd)来表示为：
4578 μV300 μV=1524
在直流输入信号处于两个数码变迁的中间时(如图72所示)，显然落在-05 LSB至+05 LSB 的任何输入噪声使ADC仍会产生正确输出数码。这样相当于把噪声限制于偏离平均值(0)从(- 05×1524)sd至(+05×1524)sd范围内。根据标准数据表我们可以求出噪声出现在 这 个范围的概率为554%。如果噪声出现在05 LSB至+15 LSB，那么输出将大于一个数码 。从标准数据表还可求出 噪声出现在这个范围内的概率为212%。按照这种方法进行下去我们可以得到描绘输出数码 分布的总直方图(图72)。
图72中的上面一个图示出了直流输入当输出码平均值为-25 LSB时的实际测量结 果。从-27到-23输出范围占5个数码。测量1024次，其中测得每个数码出现的概率 示于每一直柱顶 上， 而计算出的分布概率用括弧标注在每一直柱的顶上。可以看出，测量结果与计算值很一致， 图72中的下面一个图示出了直流输入其输出码位于两个数码的边界处的情况。按照同样的 方法，我们可以得到下面看到的直方图。然后再通过测量和计算，结果非常一致。应该注意 的是 ，实际施加的直流输入信号的稍高于两个数码之间的边界值，而计算时则按照它正确的边界 计算。
 此主题相关图片如下：

图72 输出数码分布直方图
上述估算方法的最大缺点是，常规的转换器数码宽度(要逐位增加数码输出必须增加直流输 入量)随逐位增加的数码而变化。这表明，如果直流输入范围对应其输出码范围很窄，那么 我们 可以预计这要比对应其输出数码范围很宽的直流输入范围跳动位数要多。另外，这种方法还 假设 转换器内部电路噪声保持恒定，不论是输入交流信号还是直流信号。在许多应用中这是不完 全符合实际情况的。
当使用ΣΔ转换器(“死区”除外)时，这种估算方法可能比较准确，因为前边提到的两个 因素中的任何一个都是在这种转换器中提出的。
问：现在我明白了为什么在输出端呈现多个数码变化。但为什么不把那些跳动的数 码去除而 只是使它们保持稳定，是因为其它数码实际上也不确定吗?转换器的实际分辨率是这样的吗?
答：对于专门用于交流或动态应用的许多转换器，其中THD(总谐波失真)和THD＋N (总谐波失真＋噪声)是最重要的的技术指标。因此设计的目标是减小大信号和小信号输入时 的谐波失真，同时又使噪声保持在可接受的水平。从而使这些要求与优良的直流转换器的要 求有点儿不一致。优良的直流转换器为使缓慢变化的信号精密转换达到最佳，对其中的谐波 失真不看成主要问题。实际上希望有些噪声，称作颤抖信号(dither)叠加在输入信号上以便 在 非常小的信号输入情况下减小失真。颤抖信号还可以用来改善重复测量情况下的直流精度。
为了理解上面的作法，让我们先看一下量化噪声。一个理想的ADC的输出精度是 有限的，因为只能用有限位数(b)的数字量表示其输入电压。2b个数字量中的每一个数字 量只能 表示在全部模拟量范围内对应其相应标称输入值-05 LSB到+05 LSB量化范围内的一个数 值。因此ADC的输出可以看作是由离散形式的模拟输入加上误差信号(量化噪声)构成的 。当将一个大的并且变化的输入信号(幅度为几十、几百或几千个LSB)加到一个ADC时，量化 噪声与 输入信号具有很小的相关性。换句话说，这种量化噪声可近似看作是白噪声。图73示出的 是，当输入信号幅度约为100 LSB正弦信号时，理想ADC在不同时刻的量化噪声。
 此主题相关图片如下：

图73 ADC在不同时刻的量化噪声分布
当ADC的输入幅度很低，以便两次采样之间其幅度变化不大于1 LSB时，采样保持相 同的量化程度，因此在几个采样周期都保持恒定。用图74来进一步说明，下面的三个图 分别示出了幅度仅为15 LSB的正弦输入信号，ADC的输出波形和其量化噪声波形。应该 注意的是， 当采样保持不变时，量化误差严格跟随输入波形。采样保持不变时间越长，量化噪声波形越 像输入波形，即输入信号与量化噪声之间的相关性增加。当量化误差的有效值没有改变时， 量化误差将呈现非均匀谱波形。实际上这种相关的量化噪声是以ADC谱分布的谐波形 式出现的。 分析上述现象的另外一种方法是考虑这种情况，当正弦输入信号幅度仅为1 LSB左右，而其 数字输出类似方波。方波有很丰富的谐波成分。谐波或噪声调制的产物在许多转换器应用中 是很有害 的，尤其是音频应用。
为了回避这个问题，采用一种称作“颤抖”方法，把相关量化噪声换成白噪声，因为白噪声 的刺耳程度比相关噪声轻一点儿。利用电路中的元器件产生的颤抖信号叠加到输入信号的随 机噪声 上。虽然这样会使转换器的总噪声增加，但是增加的噪声用来补偿输出 
 此主题相关图片如下：

图74 当ADC的输入信号幅度很低情况下的输 入，输出波量化噪声波形
数码量化噪声引起的 简单 方波。这样使量化误差不再是输入信号的函数而是颤抖噪声瞬时值的函数。因此， 颤抖信号去除了量化噪声与输入信号之间的相关性。颤抖信号的大小通常约为1／3 LSB有效 值(在高斯分布噪声峰峰值为2 LSB时)。显然，当这种转换器的输入接地时，在其输出端会 有大于2个数码的输出，我们在前面提到AD1879的例子中已经看到，当输入端接地时，在输 出端出现4或5个数码。 
图75中的左图示出了在没有采用很小的颤抖输入信号情况下ADC的仿真输出。量化噪 声是采样瞬时输入信号幅度的函数。量化噪声与输入信号之间的这种相关性表现为与模数转 换输出谱图有关的谐波谱线群。应该注意图中谱线幅度的刻度是相对输入信号(而不是相对 满度输入)。 图75中的右图示出了在输入端量化噪声本底上施加4 dB颤抖信号之后模数转换输出谱图。 在 这种情况下，量化噪声依赖于进行采样的瞬时颤抖信号的幅度。因为颤抖信号的幅度不依赖 于输入信号，量化噪声与输入信号没有相关性，从而消除了ADC输出谱图中的谐波分 量，但是以增加总噪声本底为代价的。
 此主题相关图片如下：

图75 用施加颤抖信号方法改善量化噪声
不是在ADC输入端实际施加颤抖噪声，而是利用转换器的热噪声作为颤抖信号能够 起到颤抖的作用，并且计算出足够的输出位数以确保去除输入信号与量化噪声的相 关性。 虽然在上面的例子中仅介绍了ADC的使用，使用颤抖信号的方法也可用于数模转换器 。颤抖信号用于数模转换器时，是把数字噪声发生器的输出端加到数模转换器的数字输入端 。
问：但是在直流应用中，我想每次做精确测量时，具体测量误差都不允许有几个 LSB不确定度。对这种情况我应该怎么办?
答：如果你要求每次转换都具有n位直流精度并且你找到合适的n位转换器有困难 ，有两种方法供你选择。一种方法是选用(n+2)位转换器，干脆忽略不计2 LSB。另一种方法 是，如果你具有硬件处理信号的能力和时间，那么你可以增强直流转换器颤抖噪声的分辨率 ；如果精度受噪声限制，那么实际上你可以得到超过n位转换器的n位精度。
为了弄清为什么会这样做，考虑一个理想的n位转换器。对于一个给定的直流输入，在输 出端你可以得到一个数字数码，但你不知道输入信号位于数码量化范围内的位置(例如，位 于 中间还是靠近变迁点的上限)。这对你的应用精度可能足够了，但如果你在转换器的输入端 加一个噪声(致使在输出端出现几个数码)，那么你会发现叠加噪声数码分布更精确地包含给 予直流输入值的信息。在前边提到AD1879的例子中，我们已经看到了当输入位于数码变迁附近时的数码分布情况。 两个最频繁输出的数码总是位于变迁的某一侧，所以用平均值估计其输入位置是一种好方法 。实际上，当输入保持不变时，对转换数据进行多次平均，是提高转换器分辨率的一种极好 方法。当处理转换器输出数据时必须注意的是要允许输出字足够长以便不产生舍入误差(rou ndoff errors)。否则 ，确实会将不希望的噪声(称作“重建量化噪声”，requantization noise)引入最终输出端 。应该注意，滤 掉的噪声正好是这种噪声，它对转换器的其它误差源(例如积分误差和微分误差)没有影响。
提高分辨率是一个很重要的想法，并且不局限于直流信号。人们实际上可以用分辨率换取 交流信号的带宽，从而可把几个转换器的输出组合起来或者构成更高分辨率的输出。基本原 理是信号重复(自相关)线性叠加，而随机噪声重复按平方根增加。因此采样次数增加4倍， 信噪比(S／N)增加6 dB。有关这个原理的应用将在后面介绍。
问：前面你已经提到有关转换器的交流技术指标，但是我对S／N，THD+N ，THD，S/ THD，S/THD+N以及ADC与DAC转换器的动态范围的测量及其彼此间的相互关系还是有些混淆。 请你对此解释一下好吗?
答：你的混淆是完全可以理解的。遗憾的是，有关这些技术指标的测量方法现在 还没有一个严格的工业标准，所以也就没有确切的定义。制造厂家有时非法地选取有利于 自己的片面定义。最常见的产品说明包括测试条件和不同技术指标计算方法的解释。我建议最好的方法是非 常认真地阅读产品说明。通过简单计算你常常可以把需要进行合理比较的某种型号器件的 指标转换成另一种型号的指标。
大多数技术指标都不是用绝对单位表示的，而是以相对单位或比率形式来表示的。例如，噪 声不是规定用电压有效值来表示，而是用信噪比(SNR)或者在规定测试条件下的信号功率与 噪声功率的比率来表示。这种比率通常又用分贝(dB)，偶尔还用百分比(%)来表示。功率比 率 x用贝(尔)(bels)来表示，定义为log 10 x。如果用分贝(十分之一贝)表示功率比率， 再乘以10，即10log 10 x。因而SNR等于10log 10 x(信号功率／噪声 功率)dB。用电压有效值比率表示的等效形式为：
SNR=20log 10 (Vs/Vn)
其中Vs表示信号电压有效值，Vn表示噪声电压有效值。
有了这些知识准备，让我们看一下，现在是否能够弄清楚上述那些技术指标(有些是多余的) 。这些技术指标试图用来说明由于转换器性能的不完善如何影响转换器处理的交流信号特 性。在直流应用中，用一系列非理想状况的幅度大小来描述便足够了，但是这些仅说明交流 特性。例如，积分线性误差是检测大信号失真(伴随DAC的毛刺能量)的主要指标， 而微分线性误差是决定小信号失真的关键指标。因此为了准确地检测ADC的交流性能 ，至少要采用两种测量方法，现介绍如下：
1满度正弦法
对ADC施加接近满度值的正弦输入信号。输入信号要足够大，以便由于转换器的性能 不完善致使在输入信号的倍频位置出现有影响的谐波分量。这些谐波分量同噪声一起在转换 器输出谱中出现。通用的性能测量是谐波分量的相对值，通常用dB表示。那么相对值的基准 是什么呢?有两种可能选用的基准：转换器的输入信号和转换器的满度值(在大多数情况下相 对满度值与相对输入信号结果不同)。相对满度值表示的谐波分量显然要比相对实际输入信 号的有效值表示的谐波分量要低(比较明显)。当评价动态指标时，这个基准问题 会引起很多混淆概念，因为对每一种性能测量应该选用的基准目前还没有一个可普遍接受的 标准。我向你提供的最好建议是：决不揣想任何东西，必须非常认真地阅读厂家提供的产 品说明书。
虽然，有时见到规定的具体谐波分量的数值，但是最常见的是仅规定总谐波失真(THD)。T HD用来度量谐波分量的总功率并且它是对每一个具体的谐波分量按照rss形式加和而得到 的。当相对输入信号时，对于THD的计算公式为：
20log 10 ∑mi=2H2(i) rms S 或 10log 10 ∑mi =2H2(i) rms S2
其中H(i) rms 表示第i次谐波分量的有效值(rms)，S表示输入信号的有 效值。通常谐波 取2到5次就足够了。应当注意输入频率或基波成分为一次谐波。为了相对满度值表示谐波分 量，在上面公式中再加上一项 xdB ，其中x是输入信号相对满度值。这个简单的变换公式 也可用于其它技术指标，但一定要知道对数运算后的正或负号。
现在，一般可以弄清楚THD+N和THD的差别。THD+N这种情况不常见。THD+N不仅包括转换过程 产生的谐波分量，而且还包括噪声。当相对于输入信号时，对于THD+N的计算公式为：
20log 10 N2 rms +∑mi=2H2 (i) rms S
或
10log 10 N2 rms +∑mi=2H2 (i) rms S2
其中N rms 表示在规定的测量带宽范围内累积噪声的有效值。
另一项常用的技术指标是信号与噪声加失真之比S／(N+D)或S／(THD+N)也称为“sinad” 。当相对输入信号表示这项指标时，它实质上是(THD+N)的倒数。它的 dB数相同，只是符号相反。
表示测量结果的另一项指标是信噪比，即S／N或SNR，它是相对噪声功率的一种度量。在 没有谐波的情况下，S／N用来估计小信号响应非常有用。如果没有规定S／N，但给出了相对 输入信号的THD和THD+N，那么从THD+N按rss形式减去THD便可求出噪信比(N/S)，即噪信 比的 倒数［=1/(S/N)］。如果THD和THD+N是按dB形式给出的，为了求出用dB形式表示相对噪声功 率的输入信号功率，可以利用前面给出的rss减法公式：
SNR=-10log 10 10 (THD+N)/10 -10 THD/10 
2 低电平正弦法
第二种常用的测量方法是在转换器的输入端施加远远低于满度值(通常为-60 dB)的低电平正 弦信号。在这种输入电平条件下，ΣΔ转换器表现出的线性误差通常可以忽略不计，所以 在输出谱中仅能看到噪声(无谐波分量)。在这种输入电平条件下，当下面的几项 指标都相对同一基准时，则有S/N=S/N+D=-THD+N=-THD。所以用一种指标来说明噪 声的大小完全可以表示这种测量结果。这种技术指标称作“动态范围”(与“动态范围失真 ”相反)，当对转换器施加一个-60 dB输入信号时，它表示在相对满度值规定的带宽范围内 总噪声和谐波分量(如果存在)的大小。
常规的(不是ΣΔ)转换器甚至在输入信号很低的条件下在其输出谱上仍能呈现出谐波分量 ，因为所有的数码宽度不等(微分线性误差)。在这种情况下，在转换器输入端施加-60 dB输 入信号测量S/N，由于忽略了谐波分量，所以不同于动态范围。
人们经常在同一转换器的-60 dB和规定的动态范围两种条件下看到THD+N。按照上述解 释，实际上两个条件有些多余，因为它们只是使用的基准不同。在动态范围方面唯一的一个 例外是有时当已规定好音频转换器后，在转换器的输出加一个模仿人耳朵频率响应的滤波器 。
转换器输出的这种处理方法称作“A型加权”(Aweighting)，因为使用了A型加权滤波器。 如果这种噪声属于白噪声，那么这种方法可以有效地降低本底噪声，从而提高S/N。
上述有关ADC与DAC的各种讨论，对其中S/N这项指标可能有些例外。有时(特别是音 频DAC转换器)S／N是转换器在零码(半满度)输入条件下，对DAC输出“安静” 程度 的一种度量。在这种条件下，S／N表示DAC输出的模拟噪声功率与满度输出有关。
值得注意的是，上述技术指标的测量都受下面参数的影响：测量带宽、采样频率和输入信 号频率。为了对两个转换器进行公正的比较，必须保证相同的测量条件。
其它问题
问：我想使用ADI公司的AD1800音频系列DAC用于数字音频放音。 我知 道利用DAC前面的转发器(interpolator)很容易对转换器的输出进行滤波，假设我想滤掉DAC 输出端的全部视频信号。因为所有的视频信号都会超过音频范围(只要采样速率 ＞40 kHz)，那么在输出端进行滤波确实很必要吗?
答：这个问题提得好。为了处理20 Hz至20 kHz音频信号通常制造一个最终可以接 受DAC输出的音频设备(音频放大器、均衡器、功率放大器等)。因为这种音频设备对于远远 大于 20 kHz频率以外的信号没有响应，实际上其自身具有滤波器作用，所以这种音频设备不具备 合适的转换速率和增益来处理DAC输出频率在20 kHz以上、能量很高、未经过滤波的 那部分信号。由于受到放大器的转换速率和增益的限制，所以使放大器进入非线性区从 而产生失真。这种失真虽然对高频没有限制，但却对20 Hz到20 kHz音频范围有影响。因此 衰减DAC的高频信号可能减小失真。CD唱机常常包含非常陡的滤波器，以便能够滤掉满度以 下音频带以外大于80 dB的信号。
问：我的多路ADC系统出现故障……
答：你在做下一步实验之前，把所有不用的多路转换器通道都接地了吗?
问：没有。但你是怎么知道的?
答：因为浮置端是含有CMOS多路转换器(MUX)系统中最常见的问题之一。不用的MU X的输入端和输出端(不论是集中到多路ADC，还是从内部MUX芯片中分出)都可能从杂散场(漏 磁场)拾取信号而且将其注入到器件的基片，接通寄生的基片器件。甚至当不用的通道 被 切断时， 导通通道的性能都可能明显降低(在可能性很小的极端情况下，注入能力可影响到寄生的四 层器件以致损坏某些芯片)。每当使用MUX时，必须把所有的输入端和输出端都接到电源两端之间的某一电位。最好 的方法是把所有不用的通道都接到地，但也可以把它们接到电源两端内的某一方便电位。 
问：为了节省电源，ADC仅在测量时供电。在连续工作时该系统很精确， 但是当选通供电时却出现了问题。这是为什么?
答：仅当ADC进行转换时才接通它的电源，从而造成工作不正常，可能有三个原因 ：基准导通缓慢，初始逻辑状态处于随机状态以及系统被闩锁。由于热稳定性、电容充电、带隙式基准中使用PNP晶体管构成的再生 电流 镜电路起动缓慢等多种原因，当电源接通数毫秒之后产生相当大的误差，这对某些电压基 准来说是 不足为奇的。因此在ADC转换期间由其外部或内部基准引起的误差导致转换结果不准确。
在电源接通时，一般ADC的逻辑状态处于随机状态。如果这时开始转换，ADC不能正常 工 作。当起动ADC转换时，其逻辑状态应该回到正常的预转换状态，这样在ADC进行真正转换之 前必须有两个转换周期。这又清楚地告诉我们，有些ADC在预转换完成之前，起动转换起坏 的 作用。在这种情况下，为了使ADC回到正常逻辑状态，需要进行一、两次“空”转换。
如果ADC设有外部逻辑，以便在ADC“忙”信号结束时开始延时直到下一次转换开始，那 么在下述 情况下是非常重要的。如果转换器在处于“忙”状态时加电，那么“忙”信号在接收到“开 始”转换脉冲之前一直被闩锁。在这种情况下，该系统不能自起动。如果在加电时总是处于 “忙”状态，那么在系统设计时肯定会提出并考虑这个问题。但是，如果在加电时仅偶然出 现“忙”信号，那么系统无法断定闩锁。通常对起动ADC的控制信号不应该依赖于“忙 ”状态。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104166/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104166/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>硬件设计</category><pubDate>Fri, 13 Feb 2009 00:48:53 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=142#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=142</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=142</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104166/5333468</fs:itemid></item><item><title>关于AD滤波软件算法</title><link>http://item.feedsky.com/~feedsky/MinruisBlog/~7224227/232104167/5333468/1/item.html</link><content:encoded>&lt;p&gt;      这两天捣鼓TI的ads8317在，弄的很头大，读出的数据噪声很重，一直在30mv上下浮动，尝试了多种算法都没有很好的效果，也不排除是待测电源太水了的缘故&amp;#8230;准备明天尝试消抖算法和递推平均算法，但愿能有所改善，阿门。&lt;/p&gt;
&lt;p&gt;     收集的关于基础滤波算法：&lt;/p&gt;
&lt;p&gt;    &lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;理论上讲单片机从&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;A/D&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;芯片上采集的信号就是需要的量化信号，但是由于存在电路的相互干扰、电源噪声干扰和电磁干扰，在&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;A/D&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;芯片的模拟输入信号上会叠加周期或者非周期的干扰信号，并会被附加到量化值中，给信号带来一定的恶化。考虑到数据采集的实时性和安全性，有时需要对采集的数据进行软处理，一尽量减小干扰信号的影响，这一过程称为数据采集滤波。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;以下介绍十种数据采集滤波的方法和编程实例。这&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;种方法针对不同的噪声和采样信号具有不同的性能，为不同场合的应用提供了较广的选择空间。选择这些方法时，必须了解电路种存在的主要噪声类型，主要包括一下方面：&lt;span id=&quot;more-139&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;* &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;噪声是突发随机噪声还是周期性噪声&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;* &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;噪声频率的高低&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;* &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;采样信号的类型是块变信号还是慢变信号&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;* &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;另外还要考虑系统可供使用的资源等&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;通过对噪声和采样性能分析，选用最合适的方法以及确定合理的参数，才能达到良好的效果。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;目前用于数据采集滤波的主要方法有以下&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;种，这&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;种方法都是在时域上进行处理的，相对于从频域角度设计的&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;IIR&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;或者&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;FIR&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;滤波器，其实现简单，运算量小，而性能可以满足绝大部分的场合的应用要求。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;限幅滤波法（又称程序判断滤波法）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;实现方法：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）根据经验判断，确定两次采样允许的最大偏差值（设为&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;A&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）每次检测到新值时判断，如果本次值与上次值之差&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; ≤ A &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;，则本次值有效；如果本次值与上次值之差&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;&amp;gt;A&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;，则本次值无效，放弃本次值，用上次值代替本次值。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 25pt; mso-char-indent-count: 2.5;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;这种方法能有效克服因偶尔因素引起的脉冲干扰，但是无法抑制那种周期性的干扰，平滑度差。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;中位置滤波法&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;实现方法：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）连续采样&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;次（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;取奇数）；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）把&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;次采样值按大小排列；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）去中间值韦本次有效值；。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;这种方法能有效克服因偶然因素引起的波动干扰，对温度、液位变化缓慢的被测参数有良好的滤波效果。缺点是对流量、速度等快速变化的参数不宜使用。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;算术平均值滤波法&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;实现方法：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;把连续&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;个采样值进行算术平均运算，作为本次滤波得到的有效值；&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;值的选取为：一般流量，&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N=12&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;；压力：&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N=4&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;这种方法的特点是：&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;值较大时，信号平滑度较高，但灵敏度较低；&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;值较小时，信号平滑度较低，但灵敏度较高，适用于对一般具有随机干扰的信号进行滤波。这种信号的特点是有一个平均值，信号在某一数值范围附近上下波动。其缺点是：对于测量速度较慢或要求数据计算速度较快的实时控制不适用；比较浪费&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;空间。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;递推平均滤波法（又称滑动平均滤波法）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;实现方法：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）把连续去&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;个采样值看成一个队列，队列的长度固定为&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;）每次采样到一个新数据放入队尾，并扔掉原来队首的一个数据（先进先出原则）；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）把队列中的&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;个数据进行算术平均运算，就可获得新的滤波结果。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;值的选取依据应用场合的不同，分别为：流量，&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N=12&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;；压力，&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N=4&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;；液面，&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N=4~12&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;；温度，&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N=1~4&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;这种方法对周期性干扰有良好的抑制效果，平滑度高，适用于高频震荡的系统。其缺点是：灵敏度低，对偶然出现的脉冲性干扰的一直作用比较差，不易消除由于脉冲干扰所引起的采样值偏差，不适用于脉冲干扰比较严重的场合；比较浪费&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;空间。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;中位值平均滤波法（有称脉冲干扰平均滤波法）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;这种方法相当于“中位置滤波法”&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;“算术平均值滤波法”，实现方法为：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）连续采样&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;个数据，去掉一个最大值和一个最小值；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;）然后计算&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N-2&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;个数据的算术平均值。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;值的选取范围为&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;3~14&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;这种方法融合和两种滤波法的优点，对于偶然出现的脉冲性干扰，可消除由于脉冲干扰锁引起的采样值偏差。其缺点是：测量速度较慢，和算术平均滤波法一样比较浪费&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;空间。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;6.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;限幅平均滤波法&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;这种方法相当于“限幅滤波法”&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;“&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;递推平均滤波法”，其实现方法是：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;）每次采样到的新数据先进行限幅处理；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-family: 宋体;&quot;&gt;&lt;span style=&quot;font-size: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;）再送入队列进行递推平均滤波处理。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;这种方法融合和两种滤波法的优点，对于偶然出现的脉冲性干扰，可消除由于脉冲干扰锁引起的采样值偏差。其缺点是比较浪费&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;空间。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;7.&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;一阶滞后滤波法&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 20pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;实现方法：&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt 56pt; text-indent: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 56.0pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial; mso-bidi-font-family: 宋体;&quot; lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;（1）&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;取&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;a=0~1&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;；&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt 56pt; text-indent: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 56.0pt;&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: 宋体;&quot; lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;（2）&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;本次滤波结果&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;（&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1-a&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;）×本次采样值＋&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;×上次滤波结果。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt 20pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;这种方法对周期性干扰具有良好的抑制作用，适用于波动频率较高的场合。其缺点是：相位&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;滞后，灵敏度低，滞后程度取决于&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;值大小；不能消除滤波频率高于采样频率的&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;1/2&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;的干扰信号。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt 20pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;8.&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;加权递推平均滤波法&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt 20pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt 20pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;这种方法是对递推平均滤波法的改进，对于不同时刻的数据加以不同的权值。通常是越接近&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;现时刻的数据，权取得越大。给予新采样值的权系数越大，则灵敏度越高，但信号平滑度低。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;这种方法适用于有较大纯滞后时间常数的对象和采样周期较短的系统。其缺点是：对于纯滞后时间常数较小，采样周期较长，变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度，滤波效果差。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;9.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;消抖滤波法&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;实现方法：&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;（&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;）设置一个滤波计数器；&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;（&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;）将每次采样值与当前有效值比较；&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;（&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;）如果采样值&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;当前有效值，则计数器清零；&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;（&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;）如果采样值大于或小于当前有效值，则计数器&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;+1&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;，并判断计数器是否大于等于上限&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;N&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;（溢出）；&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;（&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;）如果计数器溢出，则将本次值替换当前有效值，并清计数器。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;这种方法对于变化缓慢的被测参数有较好的滤波效果，可避免在临界值附近控制器的反复开&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;关跳动或显示器上数值抖动。缺点是：对于快速变化的参数不宜；如果在计数器溢出的那一次采样到的值恰好是干扰值，则会将干扰值当作有效输入导入系统。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;10.&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;限幅消抖滤波法&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;这种方法相当于“&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;&quot;&gt;限幅滤波法&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;”&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;“消抖滤波法”，即先限幅，后消抖。&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt; text-indent: 21pt; mso-char-indent-count: 2.0;&quot;&gt;&lt;span style=&quot;font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';&quot;&gt;这种方法继承了“限幅”和“消抖”的优点，改进了“消抖滤波法”中的某些缺陷，避免将干扰值导入系统。其缺点是对于快速变化的参数不宜使用。&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104167/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104167/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.minrui.net/?feed=rss2&amp;p=139</wfw:commentRss><slash:comments>1</slash:comments><description>      这两天捣鼓TI的ads8317在，弄的很头大，读出的数据噪声很重，一直在30mv上下浮动，尝试了多种算法都没有很好的效果，也不排除是待测电源太水了的缘故&amp;#8230;准备明天尝试消抖算法和递推平均算法，但愿能有所改善，阿门。
     收集的关于基础滤波算法：
    
理论上讲单片机从A/D芯片上采集的信号就是需要的量化信号，但是由于存在电路的相互干扰、电源噪声干扰和电磁干扰，在A/D芯片的模拟输入信号上会叠加周期或者非周期的干扰信号，并会被附加到量化值中，给信号带来一定的恶化。考虑到数据采集的实时性和安全性，有时需要对采集的数据进行软处理，一尽量减小干扰信号的影响，这一过程称为数据采集滤波。
以下介绍十种数据采集滤波的方法和编程实例。这10种方法针对不同的噪声和采样信号具有不同的性能，为不同场合的应用提供了较广的选择空间。选择这些方法时，必须了解电路种存在的主要噪声类型，主要包括一下方面：
* 噪声是突发随机噪声还是周期性噪声
* 噪声频率的高低
* 采样信号的类型是块变信号还是慢变信号
* 另外还要考虑系统可供使用的资源等
通过对噪声和采样性能分析，选用最合适的方法以及确定合理的参数，才能达到良好的效果。
    目前用于数据采集滤波的主要方法有以下10种，这10种方法都是在时域上进行处理的，相对于从频域角度设计的IIR或者FIR滤波器，其实现简单，运算量小，而性能可以满足绝大部分的场合的应用要求。
1.限幅滤波法（又称程序判断滤波法）
实现方法：
（1）根据经验判断，确定两次采样允许的最大偏差值（设为A）；
（2）每次检测到新值时判断，如果本次值与上次值之差 ≤ A ，则本次值有效；如果本次值与上次值之差&amp;#62;A，则本次值无效，放弃本次值，用上次值代替本次值。
这种方法能有效克服因偶尔因素引起的脉冲干扰，但是无法抑制那种周期性的干扰，平滑度差。
2.中位置滤波法
实现方法：
（1）连续采样N次（N取奇数）；
（2）把N次采样值按大小排列；
（3）去中间值韦本次有效值；。
这种方法能有效克服因偶然因素引起的波动干扰，对温度、液位变化缓慢的被测参数有良好的滤波效果。缺点是对流量、速度等快速变化的参数不宜使用。
3.算术平均值滤波法
实现方法：
把连续N个采样值进行算术平均运算，作为本次滤波得到的有效值；N值的选取为：一般流量，N=12；压力：N=4。
这种方法的特点是：N值较大时，信号平滑度较高，但灵敏度较低；N值较小时，信号平滑度较低，但灵敏度较高，适用于对一般具有随机干扰的信号进行滤波。这种信号的特点是有一个平均值，信号在某一数值范围附近上下波动。其缺点是：对于测量速度较慢或要求数据计算速度较快的实时控制不适用；比较浪费RAM空间。
 
4.递推平均滤波法（又称滑动平均滤波法）
实现方法：
（1）把连续去N个采样值看成一个队列，队列的长度固定为N；
（2）每次采样到一个新数据放入队尾，并扔掉原来队首的一个数据（先进先出原则）；
（3）把队列中的N个数据进行算术平均运算，就可获得新的滤波结果。
N值的选取依据应用场合的不同，分别为：流量，N=12；压力，N=4；液面，N=4~12；温度，N=1~4；
这种方法对周期性干扰有良好的抑制效果，平滑度高，适用于高频震荡的系统。其缺点是：灵敏度低，对偶然出现的脉冲性干扰的一直作用比较差，不易消除由于脉冲干扰所引起的采样值偏差，不适用于脉冲干扰比较严重的场合；比较浪费RAM空间。
 
5.中位值平均滤波法（有称脉冲干扰平均滤波法）
这种方法相当于“中位置滤波法”+“算术平均值滤波法”，实现方法为：
（1）连续采样N个数据，去掉一个最大值和一个最小值；
（2）然后计算N-2个数据的算术平均值。
N值的选取范围为3~14。
这种方法融合和两种滤波法的优点，对于偶然出现的脉冲性干扰，可消除由于脉冲干扰锁引起的采样值偏差。其缺点是：测量速度较慢，和算术平均滤波法一样比较浪费RAM空间。
 
6.限幅平均滤波法
这种方法相当于“限幅滤波法”+“.递推平均滤波法”，其实现方法是：
（1）每次采样到的新数据先进行限幅处理；
（2）再送入队列进行递推平均滤波处理。
这种方法融合和两种滤波法的优点，对于偶然出现的脉冲性干扰，可消除由于脉冲干扰锁引起的采样值偏差。其缺点是比较浪费RAM空间。
 
 
7.一阶滞后滤波法
 
实现方法：
（1）        取a=0~1；
（2）       本次滤波结果=（1-a）×本次采样值＋a×上次滤波结果。
这种方法对周期性干扰具有良好的抑制作用，适用于波动频率较高的场合。其缺点是：相位
滞后，灵敏度低，滞后程度取决于a值大小；不能消除滤波频率高于采样频率的1/2的干扰信号。
 
 
8.加权递推平均滤波法
 
这种方法是对递推平均滤波法的改进，对于不同时刻的数据加以不同的权值。通常是越接近
现时刻的数据，权取得越大。给予新采样值的权系数越大，则灵敏度越高，但信号平滑度低。
    这种方法适用于有较大纯滞后时间常数的对象和采样周期较短的系统。其缺点是：对于纯滞后时间常数较小，采样周期较长，变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度，滤波效果差。
 
 
9.消抖滤波法
 
实现方法：
（1）设置一个滤波计数器；
（2）将每次采样值与当前有效值比较；
（3）如果采样值=当前有效值，则计数器清零；
（4）如果采样值大于或小于当前有效值，则计数器+1，并判断计数器是否大于等于上限N（溢出）；
（5）如果计数器溢出，则将本次值替换当前有效值，并清计数器。
这种方法对于变化缓慢的被测参数有较好的滤波效果，可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动。缺点是：对于快速变化的参数不宜；如果在计数器溢出的那一次采样到的值恰好是干扰值，则会将干扰值当作有效输入导入系统。
 
 
10.限幅消抖滤波法
这种方法相当于“限幅滤波法”+“消抖滤波法”，即先限幅，后消抖。
这种方法继承了“限幅”和“消抖”的优点，改进了“消抖滤波法”中的某些缺陷，避免将干扰值导入系统。其缺点是对于快速变化的参数不宜使用。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/MinruisBlog/232104167/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/MinruisBlog/232104167/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>硬件设计</category><pubDate>Fri, 13 Feb 2009 00:36:22 +0800</pubDate><author>Micheal</author><comments>http://www.minrui.net/?p=139#comments</comments><guid isPermaLink="false">http://www.minrui.net/?p=139</guid><dc:creator>Micheal</dc:creator><fs:srclink>http://www.minrui.net/?p=139</fs:srclink><fs:srcfeed>http://www.minrui.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/MinruisBlog/~7224227/232104167/5333468</fs:itemid></item></channel></rss>