跳轉到內容

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,則停用濾波器。啟用後,將在主轉換緩衝區之前填充一個濾波器緩衝區,以便平均值始終在相同數量的樣本上進行。

返回值:無。

華夏公益教科書