µ±Ç°Î»ÖãºÊ×Ò³ > \\"¼ò¼òµ¥µ¥DSP\\"ϵÁÐѧϰ»î¶¯ - µÚÁùÆÚADѧϰ¼°Ê¹ÓÃ
AdcRegs.MAX_CONV.all=0x000F; /*²ÉÑù ADCINA0*/
AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; /*²ÉÑù ADCINA1*/
AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1; /*²ÉÑù ADCINA2*/
AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2; /*²ÉÑù ADCINA3*/
AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x3; /*²ÉÑù ADCINA4*/
AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x4; /*²ÉÑù ADCINA5*/
AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x5; /*²ÉÑù ADCINA6*/
AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x6; /*²ÉÑù ADCINA7*/
AdcRegs.ADCCHSELSEQ2.bit.CONV07=0x7; /*²ÉÑù ADCINB0*/
AdcRegs.ADCCHSELSEQ3.bit.CONV08=0x8; /*²ÉÑù ADCINB1*/
AdcRegs.ADCCHSELSEQ3.bit.CONV09=0x9; /*²ÉÑù ADCINB2*/
AdcRegs.ADCCHSELSEQ3.bit.CONV10=0xA; /*²ÉÑù ADCINB3*/
AdcRegs.ADCCHSELSEQ3.bit.CONV11=0xB; /*²ÉÑù ADCINB4*/
AdcRegs.ADCCHSELSEQ4.bit.CONV12=0xC; /*²ÉÑù ADCINB5*/
AdcRegs.ADCCHSELSEQ4.bit.CONV13=0xD; /*²ÉÑù ADCINB6*/
AdcRegs.ADCCHSELSEQ4.bit.CONV14=0xE; /*²ÉÑù ADCINB7*/
AdcRegs.ADCCHSELSEQ4.bit.CONV15=0xF; ת»»Íê³Éºó£¬½á¹û´æ·ÅÔÚ½á¹û»º³å¼Ä´æÆ÷ADCRESULTn£¨x=1~16£©ÖУ¬½á¹ûÅÅÐòÈçÏÂ
Èç¹û SEQÒѾÍê³ÉÁËת»»£¬ÄÇô£¬½á¹ûÈçͼ Ëùʾ£º ADCINA0--->ADCRESULT0 ADCINA1--->ADCRESULT1 ADCINA2--->ADCRESULT2 ADCINA3--->ADCRESULT3 ADCINA4--->ADCRESULT4 ADCINA5--->ADCRESULT5 ADCINA6--->ADCRESULT6 ADCINA7--->ADCRESULT7 ADCINB0--->ADCRESULT0 ADCINB1--->ADCRESULT8
ADCINB2--->ADCRESULT9 ADCINB3--->ADCRESULT10 ADCINB4--->ADCRESULT11 ADCINB5--->ADCRESULT13 ADCINB6--->ADCRESULT14 ADCINB7--->ADCRESULT15 d¡¢¼¶ÁªÄ£Ê½Í¬²½²ÉÑù ¼¶ÁªÄ£Ê½Í¬²½²ÉÑù,¾ÍÊÇÒ»´ÎÓÐÒ»¶ÔͨµÀ²ÉÑù£¬ÏñÉÏÃæËµµÄÕâÒ»¶ÔÊǶÔÓ¦µÄ¡£Óõ½µÄ×Ô¶¯ÅÅÐòÆ÷ÊÇSEQ½«Óõ½SEQADCADCCHSELSEQ1¡¢ADCADCCHSELSEQ2.
ADCADCCHSELSEQ1¡¢ADCADCCHSELSEQ2ÖеÄÿ4λµÄ×î¸ßλÉèÖÃΪ0£»Óõ½ADCMAXCONVÖÐ×îºóÆßλµÄµÍ3λ¡£×ª»»Ë³ÐòÊÇ´ÓADCADCCHSELSEQ1µÄ×îµÍ4λ¿ªÊ¼Ò»Ö±µ½ADCADCCHSELSEQ2µÄ×î¸ß4λÕâ¸ö˳ÐòÀ´µÄ.
C´úÂë·ÖÎö£ºÕâ¸öÊÇ8¶Ôͬ²½²ÉÑùµÄ£¬Ã¿´Î²ÉÑùÁ©¸öͨµÀ£¬Ã¿¸öͨµÀ¶¼²ÉÑùÒ»´Î /*¼¶ÁªÄ£Ê½ */
AdcRegs.ADCTRL1.bit.SEQ_CASC=1; /*ÉèÖÃͬ²½²ÉÑùģʽ*/
AdcRegs.ADCTRL3.bit.SMODE_SEL=1;
/*ÐòÁз¢ÉúÆ÷×î´ó²ÉÑùͨµÀÊýΪ 8£¬×ܹ²¿É²ÉÑù 8¶ÔͨµÀ , SEQ ½«Óõ½ ADCADCCHSELSEQ1¡¢ ADCADCCHSELSEQ2 */ AdcRegs.MAX_CONV.all=0x0007; /*²ÉÑù ADCINA0£¬ADCINB0*/
AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; /*²ÉÑù ADCINA1£¬ADCINB1*/
AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1; /*²ÉÑù ADCINA2,ADCINB2*/
AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2; /*²ÉÑù ADCINA3,ADCINB3*/
AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x3; /*²ÉÑù ADCINA4,ADCINB4*/
AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x4; /*²ÉÑù ADCINA5,ADCINB5*/
AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x5; /*²ÉÑù ADCINA6,ADCINB6*/
AdcRegs.ADCCHSELSEQ2.bit.CONV6=0x6; /*²ÉÑù ADCINA7,ADCINB7*/
AdcRegs.ADCCHSELSEQ2.bit.CONV7=0x7;
Èç¹û SEQ1¶¼ÒѾÍê³ÉÁËת»»£¬ÄÇô½á¹ûÈçͼ Ëùʾ£º ADCINA0--->ADCRESULT0 ADCINB0--->ADCRESULT1 ADCINA1--->ADCRESULT2 ADCINB1--->ADCRESULT3 ADCINA2--->ADCRESULT4 ADCINB2--->ADCRESULT5 ADCINA3--->ADCRESULT6 ADCINB3--->ADCRESULT7 ADCINA4--->ADCRESULT8
ADCINB4--->ADCRESULT9 ADCINA5--->ADCRESULT10 ADCINB5--->ADCRESULT11 ADCINA6--->ADCRESULT12 ADCINB6--->ADCRESULT13 ADCINA7--->ADCRESULT14 ADCINB7--->ADCRESULT15 ͨ¹ýÉÏÊöµÄ 4 ÖÖÇé¿öÎÒÃDz»ÄÑ·¢ÏÖ£¬Ë«ÐòÁз¢ÉúÆ÷ͬ²½²ÉÑùºÍ¼¶ÁªÄ£Ê½Í¬²½²ÉÑùµÄ½á¹ûÊÇÒ»ÑùµÄ£¬Ë« ÐòÁз¢ÉúÆ÷˳Ðò²ÉÑùºÍ¼¶ÁªÄ£Ê½Ë³Ðò²ÉÑùµÄ½á¹ûÒ²ÊÇÒ»ÑùµÄ£¬¾ÍÊǼĴæÆ÷ÅäÖÃÓÐЩ²î±ð£¬²»¿ÉÕŹÚÀî´÷£¬·ñÔò²ÉÑù²»ÄÜÕýÈ·½øÐС£´ó¼Ò¿ÉÒÔ×Ðϸ±È¶Ô£¬Ìå»áÕâ 4 ÖÖÇé¿öµÄ²»Í¬Ö®´¦¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬´ó¼Ò¿ÉÒÔ¸ù¾ÝÇé¿öÀ´½øÐÐÑ¡Ôñ£¬×î¼òµ¥µÄ¾ÍÊǼ¶Áª³É 16 ·£¬È»ºó½øÐÐ˳Ðò²ÉÑù¡£
4¡¢ÐòÁз¢ÉúÆ÷µÄÁ¬Ðø×Ô¶¯ÐòÁл¯Ä£Ê½ºÍÆô¶¯/ֹͣģʽ ÎÒÃÇÖªµÀ£¬Ò»¸öÐòÁеÄת»»ÊýÊÇÓÉ MAXCONVn ½øÐпØÖƵģ¬ÔÚÆô¶¯Ò»¸öת»»ÐòÁнøÐÐת»»Ê±£¬AD Ä£¿é½« MAXCONVn µÄÖµ×°ÔØ½ø×Ô¶¯ÐòÁÐ״̬¼Ä´æÆ÷ ADCASEQSR µÄÐòÁмÆÊýÆ÷״̬λ SEQCNTR¡£µ±ÐòÁз¢ÉúÆ÷´Ó״̬ CONV00 ¿ªÊ¼²¢Ë³Ðò½øÐУ¨CONV01£¬CONV02¡£¡£¡£¡££©Ê±£¬ SEQCNTR λ´Ó×°ÈëÖµ¿ªÊ¼µÝ¼õ£¬Ö±µ½Îª 0£¬½áÊøÒ»¸öÐòÁеÄת»»£¬Íê³Éת»»ÊýΪ£¨MAXCONVn+1£©¡£ µ± AD µÄ¿ØÖƼĴæÆ÷ 1 µÄ CONT RUN λÉèΪ 0 µÄʱºò£¬AD µÄÐòÁз¢ÉúÆ÷ÔËÐÐÔÚÆô¶¯/ֹͣģʽ£¬Ò²¾ÍÊÇ˵ÕâÖÖģʽÏ£¬ÐòÁз¢ÉúÆ÷ÔÚÍê³É 1 ¸öÐòÁеÄת»»Ö®ºó½«Í£Ö¹¹¤×÷£¬ÔÚÏÂÒ»´Îת»»Æô¶¯¿ªÊ¼Ö®Ç°£¬±ØÐ븴λÐòÁз¢ÉúÆ÷£¬½«×ª»»Æ÷ÖÃΪ CONV00¡£¸´Î»µÄ·½·¨ÈçÏ£º ¸´Î»ÐòÁз¢ÉúÆ÷ £º
/*Á¢¼´¸´Î»ÐòÁз¢ÉúÆ÷Ϊ CONV00 */ AdcRegs.ADCTRL2.bit.RST_SEQ1=1; /*Á¢¼´¸´Î»ÐòÁз¢ÉúÆ÷Ϊ CONV08*/ AdcRegs.ADCTRL2.bit.RST_SEQ2=1; µ± AD µÄ¿ØÖƼĴæÆ÷ 1 µÄ CONT RUN λÉèΪ 1 µÄʱºò£¬AD µÄÐòÁз¢ÉúÆ÷ÔËÐÐÔÚÁ¬Ðø×Ô¶¯ÐòÁл¯Ä£Ê½£¬µ±ÐòÁÐת»»½áÊøÊ±£¬×ª»»ÐòÁÐ×Ô¶¯Öظ´¿ªÊ¼£¬SOC´¥·¢Ê±×Ô¶¯½« MAXCONVn×°Èë SEQCNTR£¬SEQµÄ״̬±äΪ CONV00¡£ÔÚÕâÖÖÇé¿öÏ£¬ÎªÁ˱ÜÃâÖØÐ´Êý¾Ý£¬±ØÐëÈ·±£ÔÚÏÂÒ»¸öת»»ÐòÁпªÊ¼Ç°£¬¶ÁÈ¡½á¹û¼Ä´æÆ÷¡£ 5¡¢ADCµÄ³õʼ»¯ Ê×ÏÈÓ¦¸Ã¸´Î»ADC,ÔÙ¸øREFºÍbandgapµç·Éϵ磬ÉϵçÖ®ºóÒªÓÉÖÁÉÙ5MSµÄÑÓʱʹµçÔ´Îȶ¨£¬ÔÙ¸øADCÖ÷Ä£¿éÉϵ硣³õʼ»¯º¯ÊýÔÚDSP281X_Adc.c¿âº¯ÊýÖУ¬ÔÚÖ÷º¯ÊýÖе÷Óü´¿É
#define ADC_usDELAY 8000L #define ADC_usDELAY2 20L void InitAdc(void) {
extern void DSP28x_usDelay(Uint32 Count); AdcRegs.ADCTRL1.bit.RESET=1;//¸´Î»
asm£¨¡° RPT # 10 || NOP¡±£©;//ÖÁÉٵȴý12ÖÜÆÚÒÔʹ¸´Î»ÓÐЧ
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC DELAY_US(ADC_usDELAY2); // Delay after powering up ADC
}
6¡¢ADCÆô¶¯
ÔÚÅäÖÃÍêADCºó£¬ÒªÑ¡ÔñËüµÄÆô¶¯Ä£Ê½¡£
SEQ1 £ºÈí¼þÁ¢¼´Æô¶¯ ¡¢EVA µÄ¶àÖÖʼþ ÍⲿÒý½Å £¨GPIO/XINT2_ADCSOC£©
SEQ2 £ºÈí¼þÁ¢¼´Æô¶¯ ¡¢ EVB µÄ¶àÖÖʼþ ?
SEQ £ºÈí¼þÁ¢¼´Æô¶¯ ¡¢EVA µÄ¶àÖÖʼþ ¡¢EVB µÄ¶à ÖÖʼþ ¡¢ÍⲿÒý½Å£¨GPIO/XINT2_ADCSOC£©
¶ÔÓÚÕâЩ´¥·¢·½Ê½µÄÑ¡ÔñÓпØÖƼĴæÆ÷2ADCTRL2¾ö¶¨. ÏÂÃæÒÔÒ»¸öÍêÕûµÄC´úÂëΪÀý˵Ã÷ADCµÄÅäÖã¬Õâ¸öÊǹ¤×÷ÔÚ¼¶ÁªË³Ðò²ÉÑù£¬²ÉÑù16ͨµÀ£¬ÓÐÈí¼þ´¥·¢£¬Ê¹ÄÜÖжϣ¬¹¤×÷ÔÚÖжÏģʽ0. main() {
InitSysCtrl();//³õʼ»¯cpu DINT;//¹ØÖжÏ
InitPieCtrl();//³õʼ»¯pie¼Ä´æÆ÷
IER = 0x0000;//½ûÖ¹ËùÓеÄÖÐ¶Ï IFR = 0x0000;
InitPieVectTable();//³õʼ»¯pieÖжÏÏòÁ¿±í InitAdc()£» //µ÷Óóõʼ»¯ADCº¯Êý
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;//ʹÄÜADµÄPIE¼¶ÖÐ¶Ï IER |= M_INT1; // ʹÄÜADµÄCPU¼¶µÄÖÐ¶Ï EINT; // ¿ªÈ«¾ÖÖÐ¶Ï ERTM; // ʹÄÜ·ÂÕæÖÐ¶Ï LoopCount = 0; /*Èí¼þ´¥·¢*/
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; while(1) {
LoopCount++; } }
³õʼ»¯ADCº¯Êý void InitAdc(void) {
extern void DSP28x_usDelay(Uint32 Count);
AdcRegs.ADCTRL1.bit.RESET = 1;// ADC¸´Î» asm(\µÈ´ýÖÁÉÙ12ÖÜÆÚ
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC DELAY_US(ADC_usDELAY2); // Delay after powering up ADC /*ʱÖÓÉèÖÃ12.5M*/
¹²·ÖÏí92ƪÏà¹ØÎĵµ