LRADC
- LRADC对应引脚
- LRADC采样电压范围及位数
- 使用LRADC涉及到的驱动文件
- 如何使用不同的LRADC通道
LRADC对应引脚
LRADC | 对应引脚 | 备注 |
---|---|---|
LRACDC1 | WIO0/WIO1 | |
LRACDC2 | GPIO8/GPIO20 | |
LRACDC3 | GPIO9/GPIO21 | |
LRACDC4 | GPIO35 | |
LRACDC5 | GPIO5 | |
LRACDC6 | 无 | 没有找到相应的引脚 |
LRACDC7 | GPIO63 |
LRADC采样电压范围及位数
LRADC 采样位数为14
使用LRADC涉及到的驱动文件
adckey_act.c 与 adc_act.c
如何使用不同的LRADC通道
- 1:配置相应引脚功能
GPIO引脚使用下面函数
acts_pinmux_set(CONFIG_ADCKEY_GPIO_NUM, ADCKEY_MFP_CFG);
WIO0/WIO1引脚使用下面函数
sys_write32(CONFIG_ADCKEY_WIO_MFP, WIO0_CTL + (CONFIG_ADCKEY_WIO_NUM * 4));
在board.c中有配置
- 2:设置通道数
使用adc_channel_setup(),这个函数设置通道数
在adckey_act.c中有设置
- 3:读adc值
读一个通道的adc值
struct adc_sequence sequence = { 0, };
uint8_t adc_buf[4];
sequence.channels = BIT(channel_cfg.channel_id);
sequence.buffer = &adc_buf[0];
sequence.buffer_size = sizeof(adc_buf);
int ret;
ret = adc_read(adc, &sequence);
ret = ((uint16_t)adc_buf[1] << 8) | adc_buf[0];
SYS_LOG_INF("0x%x", ret);
读n个通道的adc值
假设3个通道,分别为LRADC1,LARDC2,LRADC3,对于每一个通道进行了前面的两个步骤
struct adc_sequence sequence = { 0, };
uint8_t adc_buf[2*3];
sequence.channels = BIT(PMUADC_ID_LRADC1) | BIT(PMUADC_ID_LRADC2) | BIT(PMUADC_ID_LRADC3);
sequence.buffer = &adc_buf[0];
sequence.buffer_size = sizeof(adc_buf);
int ret;
ret = adc_read(adc, &sequence);
ret = ((uint16_t)adc_buf[1] << 8) | adc_buf[0];
SYS_LOG_INF("0x%x", ret);
一个通道需要两个字节来存储,所以adc_buf的大小为2*通道数
Adckey_act.c中adc_read()这个函数实际是调用的是adc_act.c中的pmuadc_read()