跳转到内容

Alcor6L/eLua/adc

来自维基教科书,开放世界中的开放书籍

此模块包含访问模拟到数字转换器 (ADC) 外设的函数。

使用此模块时,获取 ADC 数据是一个两步过程:请求样本转换(使用 adc.sample)和从转换缓冲区提取转换结果(使用 adc.getsample、adc.getsamples 或 adc.insertsamples)。各种配置参数可用于设置转换速率、从缓冲区提取结果的方式以及在提取之前如何处理这些结果。

如果使用的设备具有支持的 ADC 外设(有关详细信息,请参阅状态)并且 ADC 功能在构建时已启用(请参阅构建),则可以使用此模块。

adc.sample

[编辑 | 编辑源代码]

在 ADC 通道上启动转换和样本缓冲。

adc.sample( id, count )
  • id - ADC 通道 ID。可选地,这可以是包含通道 ID 列表的表(即:{0, 2, 3}),允许同步获取。注意:这种混合类型接受仅用于采样函数。
  • count - 要获取并放入缓冲区的样本数。

返回值:无。

adc.getsample

[编辑 | 编辑源代码]

从与给定通道关联的缓冲区中获取单个转换值。

sample = adc.getsample( id )
  • id - ADC 通道 ID。

返回值

  • sample - 转换的数值,如果样本不可用,则为 nil。

adc.getsamples

[编辑 | 编辑源代码]

从与给定通道关联的缓冲区中获取多个转换值。

samples = adc.getsamples( id, count )
  • id - ADC 通道 ID。
  • count - 可选参数,用于指示要返回的样本数。如果未包含,则返回所有可用样本。

返回值

  • samples - 包含整数转换值的表。如果可用样本不足,则剩余索引将为 nil。

adc.insertsamples

[编辑 | 编辑源代码]

从通道的缓冲区中获取多个转换值,并将它们写入表。

adc.insertsamples( id, table, idx, count )
  • id - ADC 通道 ID。
  • table - 要写入样本的表。table[idx]table[idx + count - 1] 的值将被样本覆盖(如果样本不足,则为 nil)。
  • idx - 用于写入样本的表的第一个索引。
  • count - 要返回的样本数。如果样本不足(在阻止的情况下,如果已启用),则剩余值将为 nil

返回值:无。

adc.maxval

[编辑 | 编辑源代码]

获取给定通道上可以返回的最大值(对应于最大电压)。

maxval = adc.maxval( id )
  • id - ADC 通道 ID。

返回值

  • maxval - 最大整数转换值(基于通道分辨率)

adc.setclock

[编辑 | 编辑源代码]

设置将电压转换为样本的频率(每秒样本数)。

注意:adc.setclock() 在 AVR32 平台上未实现。

clock = adc.setclock( id, clock, timer_id )
  • id - ADC 通道 ID。
  • clock - 以 Hz(每秒样本数)为单位获取样本的频率,0 表示尽可能快地获取。
  • timer_id - 用于控制 ADC 转换的定时器通道 ID。注意:目前,定时器选择将应用于给定 ADC 外设上的所有通道。

返回值:clock - 实际设置的采集频率

adc.isdone

[编辑 | 编辑源代码]

检查通道上是否仍在获取样本。

status = adc.isdone( id )
  • id - ADC 通道 ID。

返回值

  • status - 如果没有获取样本,则为 1;如果样本正在等待获取,则为 0。

adc.setblocking

[编辑 | 编辑源代码]

设置请求转换样本的函数是否应等待请求的样本或立即返回可用的样本。如果未调用此函数,则每个通道都将以阻塞模式启动。

adc.setblocking( id, mode )
  • id - ADC 通道 ID。
  • mode - 如果请求获取样本应阻塞,直到请求的样本可用或采样完成,则为 1;如果要立即返回可用样本,则为 0。

返回值:无。

adc.setsmoothing

[编辑 | 编辑源代码]

设置移动平均滤波器的长度。当长度大于 1 时,从转换缓冲区中提取的样本将与前面的长度 - 1 个缓冲值进行平均。

adc.setsmoothing( id, length )
  • id - ADC 通道 ID。
  • length - 要包含在移动平均滤波器中的先前样本数(必须是 2 的幂)。如果为 1,则禁用滤波器。启用后,将在主转换缓冲区之前填充一个滤波器缓冲区,以便平均值始终在相同数量的样本上进行。

返回值:无。

华夏公益教科书