This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28379D:ADC &DAC

Guru**** 2577385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1359617/tms320f28379d-adc-dac

器件型号:TMS320F28379D

#include "F28x_Project.h"  

void GPIO_select (void);
void Setup_ePWM (void);
void ConfigureADC (void);
void SetupsADCSoftware (void);
void InitDACA(void);

uint16 AdcaResult0;
Uint16 DAC_OUTPUT;

中断 void adca1_ISR (void);

空 main (void)
{
InitSysCtrl();
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
GPIO_select ();
Setup_ePWM ();
InitDACA();
ConfigureADC();
SetupsADCSoftware,

EALLOW;
PieVectTable。 ADCA1_INT =&ADCA1_ISR;
EDIS;

IER |= M_INT1;
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
EINT;
ERTM;

while (1)
{
//等待 ADC 转换
while (!AdcaRegs.ADCINTFLG.bit.ADCINT1);

//清除 ADC 中断标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

//读取 ADC 结果
AdcaResult0 = AdcaResultRegs。 ADCRESULT0;

//通过 DAC 输出 ADC 结果
DacaRegs.DACVALS.bit.DACVALS = AdcaResult0;

void GPIO_select (void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1;
EDIS;

void Setup_ePWM (void)
{
EPwm3Regs.TBCTL.bit.CLKDIV = 7;
EPwm3Regs.TBCTL.bit.HSPCLKDIV = 7;
EPwm3Regs.TBCTL.bit.CTRMODE = 0;
EPwm3Regs.AQCTLA.all = 0X0012;
EPwm3Regs.TBPRD = 55804;
EPwm3Regs.CMPA.bit.CMPA = 55804/2;

EPwm3Regs.ETSEL.bit.SOCAEN = 1;
EPwm3Regs.ETSEL.bit.SOCASEL = 1;
EPwm3Regs.ETPS.bit.SOCAPRD = 1;
EPwm3Regs.ETCLR.bit.SOCA = 1;

EPwm3Regs.ETSEL.bit.inten = 1;
EPwm3Regs.ETSEL.bit.INTSEL = 1;
EPwm3Regs.ETPS.bit.INTPRD = 1;
EPwm3Regs.ETCLR.bit.INT = 1;

空 InitDACA (空)
{
EALLOW;
DacaRegs.DACCTL.bit.DACREFSEL = 1;
DacaRegs.DACCTL.bit.LOADMODE = 0;
DacaRegs.DACOUTEN.bit.DACOUTEN = 1;
EDIS;

void ConfigureADC (void)
{
EALLOW;
AdcaRegs.ADCCTL2.bit.prescale = 6;
AdcSetMode (ADC_ADCA、ADC_Resolution_12bit、ADC_SIGNALMODE_SINGLE);
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
EDIS;

空设置 ADCSoftware (void)
{
uint16 acqps;
if (ADC_Resolution_12bit == AdcaRegs.ADCCTL2.bit.resolution)
{
Acqps = 14;

否则
{
acqps = 63;

EALLOW;
AdcaRegs.ADCSOC5CTL.bit.CHSEL = 1;
AdcaRegs.ADCSOC5CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 5;
EDIS;

中断失效 adca1_isr (void)
{

AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;


AdcaRegs.ADCSOCFRC1.all = 0x0001;


PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

此程序用于 ADC 至 DAC 的转换。 我要提供3V 的输入电压、需要与输出电压相同的电压。 但是、我无法查看输出。 我使用电源提供3V 电压、我要查看示波器上的输出。 也许我知道我的程序中的错误是什么、我在构建和调试项目时没有遇到错误。 然后让我知道我应该连接哪个引脚作为输入和输出