1.0 ADC簡介
ADC(Analog-to-Digital Converter) 指模數轉換器。是指將連續(xù)變化的模擬信號轉換為離散的數字信號的器件。真實世界的模擬信號,例如溫度、壓力、聲音或者圖像等,需要轉換成更容易儲存、處理和發(fā)射的數字形式。模數轉換器可以實現這個功能,在各種不同的產品中都可以找到它的身影。與之相對應的 DAC(Digital-to-Analog Converter),它是 ADC 模數轉換的逆向過程。ADC 最早用于對無線信號向數字信號轉換。如電視信號,長短播電臺發(fā)射接收等。
1.1 I/O 設備模型框架
如下圖所示模數轉換一般要經過采樣、保持和量化、編碼這幾個步驟。在實際電路中,有些過程是合并進行的,如采樣和保持,量化和編碼在轉換過程中是同時實現的。

1.2 訪問 ADC 設備
應用程序通過 RT-Thread 提供的 ADC 設備管理接口來訪問 ADC 硬件,相關接口如下所示:
| 函數 | 描述 |
|---|---|
| rt_device_find() | 根據 ADC 設備名稱查找設備獲取設備句柄 |
| rt_adc_enable() | 使能 ADC 設備 |
| rt_adc_read() | 讀取 ADC 設備數據 |
| rt_adc_disable() | 關閉 ADC 設備 |
2. RT-theard配置
2.1 硬件需求
實現功能:
板載Arduino拓展口六處模擬信號讀取。
1、RA6M4開發(fā)板

2、USB下載線,ch340串口和附帶2根母母線,rx---p613;tx---p614

實驗中J13六處模擬信號需要焊接插針,方便調試
2.2 軟件配置
Renesas RA6M4開發(fā)板環(huán)境配置參照:【基于 RT-Thread Studio的CPK-RA6M4 開發(fā)板環(huán)境搭建】
1、新建項目RA6M4-ADC工程

2、在RT-theard Setting 硬件下開啟ADC,使能ADC0

3、打開RA Smart Congigurator,在Stacks中New Stack添加r_adc

4、在Property的Module的Channel中勾選Channel0~5
5、確認端口一一對應P000~P005

6、然后Generate Project Content 同步更新剛剛配置的文件

圖形化配置已經完成,接下來配置相關代碼
3. 代碼分析
在src文件下新建test_adc.c和test_adc.h文件,其他不變。

test_adc.c
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2022-07-11 Asus the first version
*/
#include
#include
#define ADC_NAME "adc0" /* ADC 設 備 名 稱 */
#define ADC_CHANNEL 6 /* ADC 通 道個數 */
#define REFER_VOLTAGE 330 /* 參 考 電 壓 3.3V,數 據 精 度 乘 以100保 留2位 小 數
*/
#define CONVERT_BITS (1 << 12) /* 轉 換 位 數 為12位 */
static int adc_sample(int argc, char *argv[])
{
rt_adc_device_t adc_dev;
rt_uint32_t value, vol;
rt_err_t ret = RT_EOK;
/* 查 找 設 備 */
adc_dev = (rt_adc_device_t)rt_device_find(ADC_NAME);
if (adc_dev == RT_NULL)
{
rt_kprintf("adc sample run failed! can't find %s device!
", ADC_NAME);
return RT_ERROR;
}
for (int var = 0; var < ADC_CHANNEL; ++var) {
/* 使 能 設 備 */
ret = rt_adc_enable(adc_dev, var);
/* 讀 取 采 樣 值 */
value = rt_adc_read(adc_dev, var);
rt_kprintf("the value is :%d
", value);
/* 轉 換 為 對 應 電 壓 值 */
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d
", vol / 100, vol % 100);
/* 關 閉 通 道 */
ret = rt_adc_disable(adc_dev, var);
}
return ret;
}
/* 導 出 到 msh 命 令 列 表 中 */
MSH_CMD_EXPORT(adc_sample, adc voltage convert sample);
test_adc.h
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2022-07-11 Asus the first version
*/
#ifndef TEST_ADC_H_
#define TEST_ADC_H_
static int adc_sample(int argc, char *argv[]);
#endif /* TEST_ADC_H_ */
保存完是灰色,沒有保存是藍色。
adc_sample導 出 到 msh 命 令 列 表 中,采樣1次
4. 下載驗證
1、編譯重構

編譯成功
2、下載程序

下載成功
3、CMD串口調試

然后板載復位,輸入:adc_sample
效果如下

這樣我們就可以天馬行空啦!
審核編輯:湯梓紅
-
adc
+關注
關注
100文章
7451瀏覽量
553867 -
Renesas
+關注
關注
0文章
1769瀏覽量
24319 -
開發(fā)板
+關注
關注
25文章
6139瀏覽量
113602 -
Arduino
+關注
關注
190文章
6515瀏覽量
196003 -
RA6M4
+關注
關注
0文章
52瀏覽量
906
發(fā)布評論請先 登錄
【開發(fā)板評測】Renesas RA6M4開發(fā)板之ESP8266_AT
【RA-Eco-RA6M4開發(fā)板評測】——8.獲取RA6M4開發(fā)板芯片內部溫度傳感器值
【RA-Eco-RA6M4開發(fā)板評測】開發(fā)環(huán)境搭建
如何對Renesas RA6M4開發(fā)板的FLASH模塊進行測評呢
Renesas RA6M4開發(fā)板之Arduino六路ADC采樣分析
Renesas CPK-RA6M4開發(fā)板之SDIO模塊評測
Renesas RA6M4開發(fā)板之USB-H評測活動
【開發(fā)板評測】Renesas RA6M4開發(fā)板之FLASH
【開發(fā)板評測】Renesas RA6M4開發(fā)板之CAN
【開發(fā)板評測】Renesas RA6M4開發(fā)板之SDIO(SDHI)
基于RT-Thread Studio的CPK-RA6M4開發(fā)板環(huán)境搭建

【Renesas RA6M4開發(fā)板之Arduino六路ADC采樣】
評論