Thread 中讨论的其他器件:SysConfig、 C2000WARE
工具/软件:
您好、
我使用56RSH 封装、具有以下代码、建议我不使用 SysConfig
#include "driverlib.h"
#include "device.h"
#include "board.h"
// ADCIN2的 PGA 实例
#define PGA_NUMBER_3 3U
void initADC (void);
void initPGA (void);
void initSOC (void);
void main (void)
{
uint16_t adcResult;
浮动电压;
//初始化器件时钟和外设
设备初始化();
// GPIO 设置(C2不需要、因为它仅为模拟、但为了保持一致性)
device_initGPIO();
//可选:Board init (如果不使用 Board.c/.h、可以将其删除)
BOARD_INIT ();
//启用 ADCC
SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_ADCC);
//初始化 ADC、PGA 和 SOC
initadc();
initPGA();
initSOC();
while (1)
{
//触发 SOC2上的 ADC 转换
ADC_forceSOC (ADCC_BASE、ADC_SOC_Number2);
//等待转换完成
while (!ADC_getInterruptStatus (ADC_BASE、ADC_INT_number1)){}
//清除中断标志
ADC_clearInterruptStatus (ADCC_BASE、ADC_INT_number1);
//读取 ADC 结果
adcResult = ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number2);
//将 ADC 值转换为电压(假设基准电压为3.3V)
Voltage =((float) adcResult * 3.3f)/4095.0f;
DEVICE_DELAY_US (100000); //观察延迟(100ms)
}
}
void initADC (void)
{
//将 VREF 设置为内部3.3V
ADC_setVREF (ADCC_BASE、ADC_REFERENAL、ADC_REFERENCE_3_3V);
//设置 ADC 时钟分频器
ADC_setPrescaler (ADCC_BASE、ADC_CLK_DIV_4_0);
//将 EOC 设置为在转换结束时触发中断
ADC_setInterruptPulseMode (ADC_BASE、ADC_PULSE_END_OF_CONV);
//启用 ADC 转换器
ADC_enableConverter (ADCC_BASE);
DEVICE_DELAY_US (1000);// ADC 稳定延迟
}
void initPGA (void)
{
//启用 PGA3 (连接到 ADCIN2)
PGA_ENABLE (PGA3_BASE);
//将 GAIN 设置为3x (选择 PGA_GAIN_3、_6或_12)
PGA_setGain (PGA3_BASE、PGA_GAIN_3);
}
void initSOC (void)
{
//将 ADCC 上的 SOC2配置为从 ADCIN2 (通过 PGA3)采样
ADC_setupSOC (ADCC_BASE、ADC_SOC_Number2、
ADC_TRIGGER_SW_ONLY、ADC_CH_ADCIN2、14);
//将中断1链接到 SOC2 EOC
ADC_setInterruptSource (ADCC_BASE、ADC_INT_number1、ADC_SOC_number2);
ADC_enableInterrupt (ADCC_BASE、ADC_INT_number1);
ADC_clearInterruptStatus (ADCC_BASE、ADC_INT_number1);
}
现在、定制电路板中的电压没有达到预期。