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

ICE3359_V2上ADC的使用问题

现在手里有一块ICE3359_V2.1的板子,EtherCAT的东西已经搭好了,还想在这上面同时配置使用ADC功能,问下EtherCAT和ADC能不能同时用?

我试着使用StarterWare里evmAM335x里面的ADC程序修改,但无法使用。里面TSCADCModuleClkConfig();  TSCADCPinMuxSetUp(); 这两个都是配置哪些内容的,如果想在ICE板子上用ADC怎么配置TouchScreen Module Registers。

下面这样配置可以吗?

TSCADCSetADCPowerUp(TSC_ADC_INSTANCE);

TSCADCConfigureAFEClock(TSC_ADC_INSTANCE, 24000000, 3000000);

TSCADCTSTransistorConfig(TSC_ADC_INSTANCE, TSCADC_TRANSISTOR_ENABLE);

TSCADCStepIDTagConfig(TSC_ADC_INSTANCE, 1);

TSCADCStepConfigProtectionDisable(TSC_ADC_INSTANCE);

StepConfigure(0, TSCADC_FIFO_0, TSCADC_POSITIVE_INP_CHANNEL1);

StepConfigure(1, TSCADC_FIFO_1, TSCADC_POSITIVE_INP_CHANNEL2);

TSCADCTSModeConfig(TSC_ADC_INSTANCE,TSCADC_GENERAL_PURPOSE_MODE);

TSCADCConfigureStepEnable(TSC_ADC_INSTANCE, 1, 1);

TSCADCConfigureStepEnable(TSC_ADC_INSTANCE, 2, 1);

CleanUpInterrupts();

TSCADCEventInterruptEnable(TSC_ADC_INSTANCE, TSCADC_END_OF_SEQUENCE_INT);

TSCADCModuleStateSet(TSC_ADC_INSTANCE, TSCADC_MODULE_ENABLE);

 

static void StepConfigure(unsigned int stepSel, unsigned int fifo,
                   unsigned int positiveInpChannel)
{
    TSCADCTSStepOperationModeControl(TSC_ADC_INSTANCE,
                                  TSCADC_SINGLE_ENDED_OPER_MODE, stepSel);

    TSCADCTSStepConfig(TSC_ADC_INSTANCE, stepSel, TSCADC_NEGATIVE_REF_VSSA,
                    positiveInpChannel, TSCADC_NEGATIVE_INP_CHANNEL1, TSCADC_POSITIVE_REF_VDDA);

    TSCADCTSStepAnalogSupplyConfig(TSC_ADC_INSTANCE, TSCADC_XPPSW_PIN_ON, TSCADC_XNPSW_PIN_OFF,
                                TSCADC_YPPSW_PIN_OFF, stepSel);

    TSCADCTSStepAnalogGroundConfig(TSC_ADC_INSTANCE, TSCADC_XNNSW_PIN_ON, TSCADC_YPNSW_PIN_OFF,
                                TSCADC_YNNSW_PIN_OFF,  TSCADC_WPNSW_PIN_OFF, stepSel);

    TSCADCTSStepFIFOSelConfig(TSC_ADC_INSTANCE, stepSel, fifo);

    TSCADCTSStepModeConfig(TSC_ADC_INSTANCE, stepSel,  TSCADC_ONE_SHOT_SOFTWARE_ENABLED);
}

static void CleanUpInterrupts(void)
{
    TSCADCIntStatusClear(TSC_ADC_INSTANCE, 0x7FF);
    TSCADCIntStatusClear(TSC_ADC_INSTANCE ,0x7FF);
    TSCADCIntStatusClear(TSC_ADC_INSTANCE, 0x7FF);
}

Steven Liu1:

这两个部分目前没有pin脚和功能上的冲突,应该是没问题的。

建议你直接在那个evm环境中把ADC先调通了,这部分的设置应该没什么差别的。

如果卡在哪里了,先把卡住的问题描述清楚,有需要的话再post上对应代码,你这样直接贴代码,辨识不出太多的东西。

Wei Li12:

回复 Steven Liu1:

谢谢!现在evm那部分的内容调通了,移植到ICE上通过CCS调试时可以看到TSC模块寄存器配置内容和我想要的一样,FIFO也有数据变化,但是FIFO的数据不是AIN引脚输入的数据,而是在几个固定的数据之间反复变化,不知道问题出在哪里?还有一个疑问就是在control module模块寄存器中我没有找的AIN0-7、VREFP、VREFN的寄存器,但是在starterware的例程里面有对这几个寄存器进行配置,所以我想问下这个寄存器是否存在?

Steven Liu1:

回复 Wei Li12:

存在的,而且是肯定要配置的,control module里面一般是对pinmux的规划,是否要打开receive enable等。

而你说的这些配置是属于McSPI的功能配置,参考TRM的12章Touchscreen contoller。里面的stepconfig1~16寄存器中都有对这个的配置。每个stepconfig寄存器都是可以单独配置这些参数的。

Wei Li12:

回复 Steven Liu1:

1、我在程序里面对模拟输入引脚AN0-7和TSC模块的参考电压VREFN、VREVP都进行了设置,设置地址是(0x44E10000)+[(0xb2c)/(0xb28)/~(b10)/(0xb30)(0xb34)],这个地址是在starterware里面例程adcVoltMeasure中找到的,在control module模块的寄存器里面,但是用CCS调试时在对应寄存器位置找不到这些设置?这是为什么?

2、我在用ADC模块时只用了两步,STEP1和STEP2,分别采集AN0和AN1通道的数据,并分别记录在FIFO0和FIFO1中,都是非差分数据、无均值、mode是SW enable、one-shot,RFM设为VSSA,REP设为VDDA,使能顺序是先使能TSC模块,在使能STEP1和STEP2,然后读FIFO的数据,在循环回去重新使能。但是FIFO0和FIFO1的数据都是两个通道输入的数据。用万用表测,输入电压为1.3V在0-1.8V之间,没有超出额定范围,这是什么原因造成的?

这些图片都是CCS调试时从ICE板上读的寄存器内容。

Wei Li12:

回复 Steven Liu1:

这几天有调了下,好像发现的问题所在,但没找到解决办法。问题如下:

1、刚为TSC配置好Clock domain,可以在CCS Debug界面读出TSC_Control寄存器的数据时,ADCSTAT寄存器中的Pen_IRQ1和Pen_IRQ0的值是1,IRQSTATUS_RAW寄存器中的PEN_IRQ_synchronized位也是1,但初始值应该都是0吧,但我没找到方法调成0。

2、TSC配置为8路ADC,全部SW Enable,配置好Step,使能Step,使能TSC_ADC_SS module,这个时候,上面问题1里面说的寄存器还是1,同时IRQSTATUS_RAW寄存器中的FIFO1_Underflow位和FIFO0_Underflow位也是1。这是不是说明我的FIFO指针位置不对呀?怎么解决?

赞(0)
未经允许不得转载:TI中文支持网 » ICE3359_V2上ADC的使用问题
分享到: 更多 (0)