嵌入式学习第四十天(imx6ull裸机——ADC)

ADC是模拟信号到数字信号转换器,是一种电子设备或者模块;它用于将连续的模拟信号转换成离散的数字信号,以便数字设备(微处理器等)对其分析和处理。

ADC的工作原理:将模拟信号在一定时间间隔内分割成离散的取样,并将每个取样值转换成数字表示;这个过程主要有两个步骤:采样和量化;

采样:将连续的模拟信号在一定的事件内进行取样;采样的频率决定了单位时间内的采样点,通常以(赫兹)HZ表示;

量化:将得到的取样值转换成数字形式。这个过程通常是需要将采样值和基准值进行比较,并将其转换为数字表示

imx6ull内部有两个ADC,都是采用逐次逼近法,它的分辨率是可以选择的,有8/10/12位;同时它内部还有自动校准功能,最大转换速率为1MHZ,所以进行一次转换所需要的最快转换时间为1us;同时imx6ull内部还有硬件平均功能和比较功能,这就大大方便了我们对软件的设置。

每个ADC都有10个通道,这里的通道就是说输入的电压信号从哪个引脚出来,他其实就是GPIO00~GPIO09这10个引脚;在配置引脚时只需要配置GPIO就行,电气属性选择默认下的KEEP模式就行了。

cs 复制代码
int adc1_init(void)
{
    IOMUXC_SetPinMux(IOMUXC_GPIO1_IO01_GPIO1_IO01, 1);
    IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO01_GPIO1_IO01, 0x10b0);

//我们这里用不到中断所以关闭中断使能
    ADC1->HC[0] &= ~(1<<0);

//ADC1_CFG
    ADC->CFG = 0;
    ADC->CFG &= (0XB<<0);
    
//ADC1_GC
    ADC1->GC = 0;
    ADC1->GC |= (0X1<<0);

//校准
    ADC1->GC |= (1<<7);
    while(ADC->GC & (1<<7));
    if((ADC1->GS & (1<<1))==1)
    return -1;
    return 0;
    }
 

unsigned short adc1_read(void)
{
    ADC1->HC[0] &= ~(0X1F<<0);
    ADC1->HC[0] = 0X1;
    while(!(ADC1->HS & (1<<0)))
    return ADC1->HS & 0xfff;
}
相关推荐
HQB202640 分钟前
EG1182|屹晶微电子 60V 内置高压管异步降压 DC‑DC
嵌入式硬件·硬件工程
LCG米2 小时前
STM32硬件SPI驱动SSD1306 OLED实测:上电黑屏排查、页寻址模式与取模扫描方向陷阱
stm32·单片机·嵌入式硬件·嵌入式
硅基造物主3 小时前
STM32 从 0 到 1 做智能家居(八):PWM 控制风扇、加热片与 SG90 窗帘
stm32·嵌入式硬件·智能家居·hal库·pwm
HQB20264 小时前
EG1163 (S)|屹晶微电子 600V 高压同步降压半桥控制器
嵌入式硬件·硬件工程
木由里予4 小时前
UFS 4.1 HID(Host Initiated Defragmentation)功能详解
嵌入式硬件
意法半导体STM324 小时前
【官方原创】如何在STM32CubeMX2中使用UART
stm32·单片机·嵌入式硬件
辛迪聊物业数字化6 小时前
物业费收缴率从68%提升到97%落地复盘:中小物业收费系统选型避坑指南
人工智能·嵌入式硬件·物联网·网络协议·系统架构
白搞电子6 小时前
ESP-Mosaico 轮滑动画编排台:拍点吸附、完整动作编辑与工程保存
单片机·嵌入式硬件·电脑
恒锐丰科技林技术员7 小时前
EG2106L 高压半桥驱动芯片解析:高性价比 600V 栅极驱动方案
经验分享·嵌入式硬件·硬件工程
cu1437 小时前
细谈IT6653的具体功能与其应用
c语言·c++·单片机·嵌入式硬件