Part of MicroGen4 Music Synthesizer Program. (But not test it yet.) I2S ,DMA ,Stereo ,16Bit Dac(PCM1781) See detail: http://www.geocities.jp/micro_diys/index2
Now added generate Saw Wave to DAC function in generate(); You will hear Stereo saw wave sound now.
more info: http://www.geocities.jp/micro_diys/i2s_test_sample/i2s_test_sample.html
synthesizer.h@1:48f506a7b488, 2017-09-21 (annotated)
- Committer:
- p_igmon
- Date:
- Thu Sep 21 10:20:50 2017 +0000
- Revision:
- 1:48f506a7b488
- Parent:
- 0:dc88722ab141
Added Sample Saw Wave in Function Generate.
; DAC PCM1781 Can Output Saw Wave now.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
p_igmon | 0:dc88722ab141 | 1 | /* |
p_igmon | 0:dc88722ab141 | 2 | COPYRIGHT(c) 2014 p.igmon |
p_igmon | 0:dc88722ab141 | 3 | */ |
p_igmon | 0:dc88722ab141 | 4 | |
p_igmon | 0:dc88722ab141 | 5 | #ifndef SYNTHESIZER_H |
p_igmon | 0:dc88722ab141 | 6 | #define SYNTHESIZER_H |
p_igmon | 0:dc88722ab141 | 7 | |
p_igmon | 0:dc88722ab141 | 8 | typedef signed long S32; |
p_igmon | 0:dc88722ab141 | 9 | typedef signed short S16; |
p_igmon | 0:dc88722ab141 | 10 | typedef signed char S8; |
p_igmon | 0:dc88722ab141 | 11 | typedef unsigned long U32; |
p_igmon | 0:dc88722ab141 | 12 | typedef unsigned short U16; |
p_igmon | 0:dc88722ab141 | 13 | typedef unsigned char U8; |
p_igmon | 0:dc88722ab141 | 14 | |
p_igmon | 0:dc88722ab141 | 15 | #include "mbed.h" |
p_igmon | 0:dc88722ab141 | 16 | #include "cmsis.h" |
p_igmon | 0:dc88722ab141 | 17 | #include "stm32f401xe.h" |
p_igmon | 0:dc88722ab141 | 18 | #include "stm32f4xx.h" |
p_igmon | 0:dc88722ab141 | 19 | #include "stm32f4xx_hal.h" |
p_igmon | 0:dc88722ab141 | 20 | #include "stm32f4xx_hal_dma_ex.h" |
p_igmon | 0:dc88722ab141 | 21 | #include "stm32f4xx_hal_dma.h" |
p_igmon | 0:dc88722ab141 | 22 | #include "stm32f4xx_hal_i2s.h" |
p_igmon | 0:dc88722ab141 | 23 | |
p_igmon | 0:dc88722ab141 | 24 | #include "stm32f4xx_hal_conf.h" |
p_igmon | 0:dc88722ab141 | 25 | #include "stm32f4xx_it.h" |
p_igmon | 0:dc88722ab141 | 26 | |
p_igmon | 0:dc88722ab141 | 27 | #include "error.h" |
p_igmon | 0:dc88722ab141 | 28 | #include "pinmap.h" |
p_igmon | 0:dc88722ab141 | 29 | #include "PinNames.h" |
p_igmon | 0:dc88722ab141 | 30 | #include "gpio_irq_api.h" |
p_igmon | 0:dc88722ab141 | 31 | |
p_igmon | 0:dc88722ab141 | 32 | #define I2S2 SPI2 |
p_igmon | 0:dc88722ab141 | 33 | #define DMA_BUFFERSIZE 2048 |
p_igmon | 0:dc88722ab141 | 34 | |
p_igmon | 0:dc88722ab141 | 35 | |
p_igmon | 0:dc88722ab141 | 36 | typedef enum |
p_igmon | 0:dc88722ab141 | 37 | { |
p_igmon | 0:dc88722ab141 | 38 | DMA_Idle = 0, |
p_igmon | 0:dc88722ab141 | 39 | DMA_HalfComplete, |
p_igmon | 0:dc88722ab141 | 40 | DMA_FullComplete, |
p_igmon | 0:dc88722ab141 | 41 | }BUFFER_StateTypeDef; |
p_igmon | 0:dc88722ab141 | 42 | |
p_igmon | 0:dc88722ab141 | 43 | void MX_GPIO_Init(void); |
p_igmon | 0:dc88722ab141 | 44 | void uGen4_device_init(void); |
p_igmon | 0:dc88722ab141 | 45 | void init_dmabuffer(void); |
p_igmon | 0:dc88722ab141 | 46 | void i2s_dma_init(void); |
p_igmon | 0:dc88722ab141 | 47 | |
p_igmon | 0:dc88722ab141 | 48 | void wave_generate(void); |
p_igmon | 0:dc88722ab141 | 49 | |
p_igmon | 0:dc88722ab141 | 50 | void test_loop(void); |
p_igmon | 0:dc88722ab141 | 51 | void test_loop2(void); |
p_igmon | 0:dc88722ab141 | 52 | |
p_igmon | 0:dc88722ab141 | 53 | #endif |