有些应用程序需要更高的功能。但大多数制造商已经在他们选择的模块上安装了一个“免费”的 A/D 转换器——集成在微控制器或片上系统 (SoC) 中。这些集成转换器各不相同。让我们不关注详细的规格,而是看看制造商可能获得的一些功能以及如何使用它们。
设置一些模拟通道
大多数集成 A/D 转换器使用逐次逼近寄存器 (SAR) 架构。对于半导体公司而言,SAR 是一个不错的中间选择。简单,不占用小芯片太多空间,校准容易。对于制造商而言,集成 SAR A/D 通常提供高达几百 kHz 的采样率和高达 12 位的分辨率。分辨率通常是可调的,例如没有过采样的 8 位,以及为降噪而过采样的 12 位。
引脚数通常是一个考虑因素,尤其是对于非常小的、廉价的微控制器。对于具有更多引脚的较大部件,可能有相当多的模拟通道,从 6 个到 12 个。问题是芯片上只有一个 A/D 转换器,在它前面,有一个模拟多路复用器提供通道。多路复用的一个含义是没有一些额外的电路。所有通道都具有相同的采样率。这可能会影响具有不同类型传感器的应用程序。
多花几美元,一些集成解决方案可能会有一些改进。两个多路复用器支持差分输入,而不是单端输入,以实现更好的噪声抑制。组中可能有一个特殊的通道可配置为与其他通道不同的采样率。与微控制器本身的数字电源轨相比,外部电压参考引脚可以允许更高的电压源,以实现更宽的模拟输入范围,或更稳定的电源以实现更高的精度。
图 1 SAM G51G 微控制器的框图突出显示了一个 8 通道、10 位 A/D 转换器。资料来源:微芯片
简单到高级的数据收集
对于低采样率应用,一个好的经验法则是让微控制器尽可能长时间地处于休眠状态。在需要样本时的简单配置中,A/D 子系统会唤醒,进行转换并创建结果。由于转换器时钟和模拟建立时间,请求和读取之间存在一些延迟。还有许多其他模式可以发挥作用。
图 2 MCU 的 Port 1 用于 A/D 转换。资料来源:MathWorks
大多数转换器可以编程为自由运行、定期采样和存储结果。需要注意的一点是,采样率不是无限可编程的,因为它们是时钟源的二进制倍数。随着采样率的增加,读取 A/D 数据会消耗越来越多的微控制器可用处理时间。
移动数据是任何微控制器都可以做的最耗时的操作之一。许多高级部件提供直接内存访问 (DMA),其中 A/D 子系统将数据直接写入编程的内存位置。这对于对数据块进行采样,然后在采集完成后对其进行处理非常方便。
一些 A/D 子系统提供外部触发,等待收集样本,直到某些硬件事件发生。某些部件提供比较窗口或限制。当读数低于低阈值、高于高阈值或介于或超出阈值范围时,将收集数据。这可以最大限度地减少微控制器的时间、存储和工作,直到发生感兴趣的事情。
片上 A/D 转换器适用于何处
听起来有很多选择?如果一个人只需要编程手册从头开始,可能会有很多工作。许多寄存器需要按顺序设置和管理,以使一切发生。供应商已经意识到人们不喜欢难以使用的部件。通常有可供下载的软件驱动程序可以完成大部分配置和读取工作。
请记住,虽然供应商提供的驱动程序通常用于简单的用例,但更高级的功能可能需要编码。浏览在线社区可能会找到创建和共享自定义驱动程序的人。
一些用例非常适合这些片上 A/D 转换器。一种是需要同类型传感器的多个通道;例如,八个温度传感器分布在发动机周围。另一个是局部控制,例如设置阀门以获得特定的压力读数。
微控制器功能越强大,其集成的 A/D 功能通常就越强大。如果有足够的通道,并且采样率和位分辨率对于应用程序来说足够,那么“免费”转换器值得一看。