找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

赛元微单片机ADC初始化问题

查看数: 1123 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-8-29 16:17

正文摘要:

在NTC那里我接了4.7K的电阻,也就是下图CN3的位置,理应ADC得返回2048左右的ADC值,但是返回出来只有200多,我的单片机芯片SC92F7411,用过他们赛元微里面的例程代码,返回出来的值也是一样,请问我应该怎么改,请大 ...

回复

ID:404160 发表于 2024-9-2 14:13
试试这段程序,如果还是一样,可能是硬件问题

#include "sc92f7411.h"

// 假设ADC模块的基地址为0x50000000
#define ADC_BASE 0x50000000

// ADC控制寄存器定义
#define ADC_CR1 *(volatile unsigned int *)(ADC_BASE)
#define ADC_CR2 *(volatile unsigned int *)(ADC_BASE + 4)
#define ADC_DR  *(volatile unsigned short *)(ADC_BASE + 8)

// ADC时钟使能(请根据实际情况修改)
void ADC_ClockInit() {
    // ...
}

// ADC初始化
void ADC_Init() {
    ADC_ClockInit();

    // 配置ADC控制寄存器
    ADC_CR1 = 0x00; // 清除控制寄存器
    ADC_CR2 = 0x00; // 清除控制寄存器

    // 设置采样时间、通道等(根据数据手册配置)
    ADC_CR1 |= (1 << 12); // 设置采样时间
    ADC_CR2 |= (3 << 0);  // 选择通道3

    // 使能ADC
    ADC_CR2 |= (1 << 0);
}

// 启动ADC转换
void ADC_StartConvert() {
    // 启动ADC转换
    ADC_CR2 |= (1 << 3);
}

// 读取ADC转换结果
uint16_t ADC_ReadValue() {
    // 等待转换完成(可通过中断方式)
    // ...

    return ADC_DR;
}

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表