n

Dependencies:   mbed

Fork of LG by igor Apu

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SPI.c Source File

SPI.c

00001 #include "Global.h"
00002 struct SPI Spi;
00003       unsigned int Temp_AMP=0;
00004             
00005             unsigned int Temp_ADC_2=0;
00006             unsigned int Temp_ADC_3=0;
00007             unsigned int Temp_ADC_4=0;
00008             unsigned int Temp_ADC_5=0;
00009      
00010 
00011             unsigned int Buff_ADC_1        [256];
00012         unsigned int Buff_ADC_2        [256];
00013             unsigned int Buff_ADC_3      [256];
00014             unsigned int Buff_ADC_4        [256];
00015             unsigned int Buff_ADC_5        [256];
00016        
00017       unsigned int Buff_AMP          [256];
00018             
00019             unsigned int SinPLC[64]={1023,  1016,    1006,  993,    976,    954,    904,    874,    841, 806, 768,   728,
00020                                 687,  645,   601,       557,    500,    379,    337,    296,    256, 219, 183,   150,
00021                                 120,   93,    69,        48,     31,     18,      8,    0,      8,   18,    31,   48, 
00022                                  69,   93,   120,    150,  183,  219,  256,  296,  337, 379,        468, 512,  557,
00023                                 601,     645,     687,    728,  768,  806,  841,  874,  904,        954,    976, 993, 1006, 
00024                                      1016,  1023};
00025  void DACLInit( void )
00026 {
00027   /* setup the related pin to DAC output */
00028   LPC_PINCON->PINSEL1 = 0x00200000; /* set p0.26 to DAC output */   
00029   return;
00030 }
00031 void SPI_Exchange()
00032 {
00033     unsigned int Dummy;
00034     
00035   Spi.ADC5 = LPC_SSP0->DR;       
00036     Spi.ADC4 = LPC_SSP0->DR;        
00037     Spi.ADC3 = LPC_SSP0->DR;        
00038     Spi.ADC2 = LPC_SSP0->DR;
00039     Spi.ADC1 = LPC_SSP0->DR;
00040 
00041     Input.ArrayIn[2]= Spi.ADC5;
00042 
00043   LPC_SSP0->DR=0x5555;
00044     LPC_SSP0->DR=0x5555;
00045     LPC_SSP0->DR=0x5555;
00046 
00047            if (CountV31 & 1)                        //если нечетный такт то
00048              {
00049                 LPC_SSP0->DR = WRITE_DAC0;                      //e.команда для ЦАП_0 передавать.
00050             LPC_SSP0->DR = (Spi.DAC_A);             //e. передача 12 бит
00051            } 
00052               else //если такт четный.
00053                   {
00054                    LPC_SSP0->DR = WRITE_DAC1 ;                      //e.команда для ЦАП_1 передавать.
00055                      LPC_SSP0->DR = (Spi.DAC_B);                //e. передача 12 бит
00056                   }          
00057                                 
00058                     LPC_DAC->CR = (((SinPLC[CountV64]*35)+21300));      
00059   while (LPC_SSP0->SR & RX_SSP_notEMPT)                     //если буфер SPI не пуст.
00060     Dummy = LPC_SSP0->DR;                                   //очистить буфер.
00061     
00062 
00063         Buff_ADC_1  [CountV255] = Spi.ADC1;               // ампл ацп.
00064         Buff_ADC_2  [CountV255] = Spi.ADC2;
00065             Buff_ADC_3  [CountV255] = Spi.ADC3;
00066             Buff_ADC_4  [CountV255] = Spi.ADC4;
00067             Buff_ADC_5  [CountV255] = Spi.ADC5;
00068     
00069     
00070     
00071       Temp_AMP += Buff_ADC_5[CountV255];
00072         Temp_AMP -= Buff_ADC_5[(CountV255-32) & 0xff];                    // заполнение буфера накопленых приращений за 8 тактов
00073         Buff_AMP[CountV255] = (unsigned int) (Temp_AMP);
00074     
00075         Temp_ADC_2 += Buff_ADC_2[CountV255];
00076         Temp_ADC_2 -= Buff_ADC_2[(CountV255-32) & 0xff]; 
00077     
00078       Temp_ADC_3 += Buff_ADC_3[CountV255];
00079         Temp_ADC_3 -= Buff_ADC_3[(CountV255-32) & 0xff]; 
00080     
00081       Temp_ADC_4 += Buff_ADC_4[CountV255];
00082         Temp_ADC_4 -= Buff_ADC_4[(CountV255-32) & 0xff]; 
00083         
00084         Temp_ADC_5 += Buff_ADC_1[CountV255];
00085         Temp_ADC_5 -= Buff_ADC_1[(CountV255-32) & 0xff]; 
00086 }
00087 void Init_SPI_Exchange()
00088 {
00089         ResetCS(ADC);                        //prepare ADC for sampling
00090           SetDAC(DAC);      
00091       LPC_GPIO2->FIOSET |= 0x0000004;       // turn on the LED
00092 //LPC_GPIO2->FIOSET |= 0x0000004;       // turn on the LED
00093 //LPC_GPIO2->FIOSET |= 0x0000004;       // turn on the LED           
00094         SetCS(ADC);                             //start ADC sampling
00095         ResetDAC(DAC);
00096 }