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; }
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; }
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; }; } }