工具/软件:Code Composer Studio
Helllo 专家、
我正在尝试 使用 SYS/BIOS RTOS 在 TMS320F2812上运行 ADC 代码。 我的通道 A (8) ADC 上的所有引脚都在工作(传统代码)。 作为修改的一部分、我想对通道 B (8个通道)进行采样。
我刚刚对代码进行了一些基本更改、并观察到我在 ADCINB0上获得预期电压、但在通道 B 的其余部分获得了不正确的值
ADCINB1-B7上的所有引脚未连接到原理图中的任何引脚、我已经在电路板上确认电压测量值大约为0V。 不过、我始终读取的值介于1.9V 至2.5V 之间(取决于通道)。
我已经浏览过 UC 的整个 ADC 模块文档(ADC_spru060d)、但似乎无法理解可能会出现什么问题、是否有人能帮助我... ADC 的配置如下所示。
-双序列发生器
-启动停止类型
- SW 控制
附加的代码。
AdcRegs.ADCTRL1.bit.SUSMOD = 2U;//序列发生器在当前转换后停止 AdcRegs.ADCTRL1.bit.ACQ_PS = 0xfu;//16周期采集窗口 AdcRegs.ADCTRL1.bit.CPS = 1U;//将 HSPCLK 除以2 AdcRegs.ADCTRL1.bit.CONT_RUN = 0U;//开始停止模式 AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1U;//序列发生器覆盖启用 AdcRegs.ADCTRREF.bit.SEQ_CLC = 0U;// ADCTL3外部初始化/ ADCTRL1.ADCTRL = 1U;//启用 ADCTRL AdcRegs.ADCTRL3.bit.ADCCLKPS= 0xfu;//将 HSPCLK 除以30 // ADCMAXCONV 注册器初始化 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x7u;//通道 A 中的转换8 ADCMAXCONVRE1.bit.ADC01.ADCCONV.ADC01.ADC01.ADC1=ADCCONV.ADC01.ADC01.ADC1C.Q1 = ADCCONV.ADC01.ADCCONV.ADC01.ADR1.ADC01.ADC1u.ADCCONV.ADC1u.ADC1u.ADCCONV.ADC01.ADC01.ADC1u.ADCENCONV.ADC01.ADC1u.ADC1u.ADC1u.ADC01.ADCCONV.ADC1u.ADC01.ADC01.ADCCONV.ADC1u.ADCCONV.ADC //ADCINA3 //ADC SEQ2选择寄存 器 AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 4U;//ADCINA4 AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 5U;//ADCINA5 AdcRegs.ADCSELSEQ2.bit.ADCSEQ2.ADC08=ADCSEQ3.ADC8R = ADC8R = ADC08.ADCQ3.ADC8R = ADC08.ADC08.ADCQ3.ADC8R = ADC08.ADC203.ADC8ADCADC8ADCADC8R = ADC8ADC8ADC203.ADCADC203.ADRC.ADRC.ADC203.ADC/ ADCADC8ADC203.ADRC.ADCADCADRC.ADC203.ADRC.ADCADCADCADCADRC.ADC8ADC203.ADC/ ADCADC203.ADC8ADCADCADCADCADCADRC.ADCADC //ADCINB4 N/C AdcRegs.ADCCHSELSEQ4.bit.CONV13 = 13U;//ADCINB5 N/C AdcRegs.ADCCHSELSEQ4.bit.CONV14 = 14u;//ADCINB6 N/C AdcRegs.ADCCHSELSEQ4.bit.CONTINV14 = 14u;//ADCINBINB6 N/ADC15 启动电路/参考电路 这里放置的是 在设置寄存器后为 ADC 加电//。 AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3U; 在 ADC 上电之前需要//7ms 的间隙。 对于 (iVol= 0;iVol<(900000/2)/12);iVol++),以下间隔约为10ms。 { } AdcRegs.ADCTRL3.bit.ADCPWDN = 1U; ///20微秒,转换开始 之前需要(iVol=0;iVol<(1500/2)/12 );iVol++) { }
//触发 ADC
if (adc_channel =adc_channel_a)
{
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1U;
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1U;
}
否则(ADC_CHANNEL == ADC_CHANNEL)
{
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2 = 1U;
AdcRegs.ADCTRL2.bit.SOC_SEQ2 = 1U;
}