TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28035中AD直接触发转换的问题

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

Jones Chen:

软件触发不需要触发源,硬件触发才需要。

软件触发只需要写一句话就可以了。配置下面这个寄存器。

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

hua liu:

回复 Jones Chen:

那怎么知道AD转换完成呢?

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}?

还是说软件触发只能用延时来读取他的结果?

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

Forrest:

回复 hua liu:

有中断产生,ADCINT1 置位就说明他完成转换了。除非设置了ADCCTL1[INTPULSEPOS]=0

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

hua liu:

回复 Forrest:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

不可能吧,马上触发马上转换完成,转换的速度比CPU还快,而且假如我把ADCCTL1[INTPULSEPOS]=0,执行

AdcRegs.ADCSOCFRC1.all = 0x03;后,.ADCINTFLG.bit.ADCINT1也等于1,这是为什么呢?

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

hua liu:

回复 Forrest:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

 

不可能吧,马上触发马上转换完成,转换的速度比CPU速度还快,

而且假如我把ADCCTL1[INTPULSEPOS]=0,执行

AdcRegs.ADCSOCFRC1.all = 0x03;            后,.ADCINTFLG.bit.ADCINT1也等于1,这是为什么呢?

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

Forrest:

回复 hua liu:

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}有没有用,ADCCTL1[INTPULSEPOS]=0有没有效果。你可以

 CpuTimer0Regs.TCR.bit.TSS = 0;

….

  CpuTimer0Regs.TCR.bit.TSS = 1;

测试一下,看看CpuTimer走了几个时钟周期。

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

Hong Ji:

回复 Forrest:

请问可以同时配置ADCINT1和ADCINT2 吗?如SOC1是软件触发,ADCINT2响应。SOC2是EPWM触发,ADCINT1响应。

在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)

但是我找了数据手册没找到触发的软件源啊?

就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置

后面尝试了参考temperature conv的例程,但是:

AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)

while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)

AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

sensorSample = AdcResult.ADCRESULT1;

sensorSample有时候能读到转换的结果,有时候不行。

请帮忙看看怎么实现我要求的功能,谢谢

囧:

回复 Hong Ji:

可以,都可以灵活配置

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28035中AD直接触发转换的问题
分享到: 更多 (0)