Esempio n. 1
0
File: ad9951.c Progetto: 7799/linux
static int ad9951_probe(struct spi_device *spi)
{
	struct ad9951_state *st;
	struct iio_dev *idev;
	int ret = 0;

	idev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
	if (!idev)
		return -ENOMEM;
	spi_set_drvdata(spi, idev);
	st = iio_priv(idev);
	mutex_init(&st->lock);
	st->sdev = spi;

	idev->dev.parent = &spi->dev;

	idev->info = &ad9951_info;
	idev->modes = INDIO_DIRECT_MODE;

	ret = iio_device_register(idev);
	if (ret)
		return ret;
	spi->max_speed_hz = 2000000;
	spi->mode = SPI_MODE_3;
	spi->bits_per_word = 8;
	spi_setup(spi);
	ad9951_init(st);
	return 0;
}
Esempio n. 2
0
static int __devinit ad9951_probe(struct spi_device *spi)
{
	struct ad9951_state *st;
	struct iio_dev *idev;
	int ret = 0;

	idev = iio_allocate_device(sizeof(*st));
	if (idev == NULL) {
		ret = -ENOMEM;
		goto error_ret;
	}
	spi_set_drvdata(spi, idev);
	st = iio_priv(idev);
	mutex_init(&st->lock);
	st->sdev = spi;

	idev->dev.parent = &spi->dev;

	idev->info = &ad9951_info;
	idev->modes = INDIO_DIRECT_MODE;

	ret = iio_device_register(idev);
	if (ret)
		goto error_free_dev;
	spi->max_speed_hz = 2000000;
	spi->mode = SPI_MODE_3;
	spi->bits_per_word = 8;
	spi_setup(spi);
	ad9951_init(st);
	return 0;

error_free_dev:
	iio_free_device(idev);

error_ret:
	return ret;
}
Esempio n. 3
0
int main(void)
{
  uint16_t i;
  uint16_t fleft=440;
  uint16_t fright=261;
uint32_t f0;
  uint32_t phL1=0,phR1=0,phL2=0,phR2=0;
  SystemInit();

  
  /* Initialize LEDs and User_Button on STM32F4-Discovery --------------------*/
  STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_EXTI);
  
  STM_EVAL_LEDInit(LED4);
  STM_EVAL_LEDInit(LED3);
  STM_EVAL_LEDInit(LED5);
  STM_EVAL_LEDInit(LED6);

  RCC_GetClocksFreq(&RCC_Clocks);
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
  InitDDSPorts();
  InitDDSSPI(SPI_BaudRatePrescaler_2);
  //PLLSendFreq(freq_khz/(50*2));
  TMR2_Config(fs*mult_factor/2, RCC_Clocks.PCLK1_Frequency);
  //DDSSendFreq(freq);
  ad9951_init();
  f0=__REV(TIM2->CCR4);
  //ad9951_sendfreq(freq);
  //PLLSendCtrlWord(0x0032F0);
  EVAL_AUDIO_Init(OUTPUT_DEVICE_HEADPHONE, 70, fs);
  //SetI2SMCLK(fs);
  //Sin_Gen (Audio,fs,fleft,fright,96);
  //Sin_Gen (&Audio2[0],fs,fleft,fright,96);
  //MPX_Gen (fs,mult_factor,Audio,MPX_buf,192);
  //EVAL_AUDIO_Play(Audio,384);
  DAC_Config();
 Audio_DAC_play(DAC_buf,mult_factor*bufsize);
 TMR4_Config(DDS_buf,mult_factor*bufsize);
 TMR3_Config();
 mpx_init(mult_factor,bufsize/2);
 TMR6_Config(1000000UL, RCC_Clocks.PCLK1_Frequency*2);

 USBD_Init(&USB_OTG_dev,
            USB_OTG_FS_CORE_ID,
            &USR_desc,
            &AUDIO_cb,
            &USR_cb);
  while(1)
  {

	    if (audio_buffer_fill==1)
	      			{
		  //Sin_Gen (&Audio[0],fs,fleft,fright,48);
	    	memcpy(Audio,xbuf,192); //moved to codec routines
	    	//if (!(UserButtonPressed&2))
	    	memcpy(Audio2,Audio,192);
		    audio_buffer_fill=0;
	      			};
	      	if (audio_buffer_fill==2)
	      		  	{
	     		//Sin_Gen (&Audio[96],fs,fleft,fright,48);
	      		memcpy((uint8_t*)Audio+192,xbuf,192);// moved to codec routines
	      		//if (!(UserButtonPressed&2))
	      		memcpy((uint8_t*)Audio2+192,(uint8_t*)Audio+192,192);
	      		audio_buffer_fill=0;
	      	    	};
	      	//while (audio_buffer_fill==0);

	/*if (audio_buffer_fill==1)
	 	  	      			{memcpy(Audio,xbuf,192);audio_buffer_fill=0;
	 	  	      			};
	 	   	if (audio_buffer_fill==2)
	 	  	      	    	{memcpy((uint8_t*)Audio+192,xbuf,192);audio_buffer_fill=0;
	 	  	      	    	};

*/
//while(mpx_buff_fill==0);
	      	//DDS is synchronous with DAC
	  if (mpx_buff_fill==1)
	  {
		 // if (UserButtonPressed&2)
		 // Sin_Gen (&Audio2[0],fs,fleft,fright,48);

		  MPX_Gen (fs,mult_factor,&Audio2[0],MPX_buf,bufsize/2);
	      DAC_normalise(&MPX_buf[0],&DAC_buf[0],mult_factor*bufsize/2);
	      FM_MPX(f0,&MPX_buf[0],mult_factor*bufsize/2, &DDS_buf[0]);

	      mpx_buff_fill=0;
	  };
	  if (mpx_buff_fill==2)
	  {
		//  if (UserButtonPressed&2)
		//  Sin_Gen (&Audio2[96],fs,fleft,fright,48);

		  MPX_Gen (fs,mult_factor,&Audio2[bufsize],&MPX_buf[mult_factor*bufsize/2],bufsize/2);
	  	  DAC_normalise(&MPX_buf[mult_factor*bufsize/2],&DAC_buf[mult_factor*bufsize/2],mult_factor*bufsize/2);
	      FM_MPX(f0,&MPX_buf[mult_factor*bufsize/2],mult_factor*bufsize/2, &DDS_buf[mult_factor*bufsize/2]);
	  	  mpx_buff_fill=0;
	  };
  }

}