##// END OF EJS Templates
Sync
kaveh -
r97:596815cfc1ab dev_alexis
parent child
Show More
@@ -0,0 +1,33
1 #ifndef DAC_LIB_H
2 #define DAC_LIB_H
3
4 #define DAC1_12bit_right_align 0x40007408
5 #define DAC1_12bit_left_align 0x4000740C
6 #define DAC1_8bit_right_align 0x40007410
7 #define DAC2_12bit_right_align 0x40007414
8 #define DAC2_12bit_left_align 0x40007418
9 #define DAC2_8bit_right_align 0x4000741C
10 #define DAC_Dual_12bit_right_align 0x40007420
11 #define DAC_Dual_12bit_left_align 0x40007424
12 #define DAC_Dual_8bit_right_align 0x40007428
13 #define DAC_Dual_8bit_left_align 0x4000742C
14
15 #define DAC1 0
16 #define DAC2 1
17
18 #define timer2 1
19 #define timer3 2
20 #define timer4 3
21 #define timer5 4
22 #define timer6 5
23 #define timer7 6
24 #define timer8 7
25
26
27 extern int dacopen(uint32_t pin);
28 extern int dacsetconfig(int timer, int buffer_size, int dac,uint32_t dac_type, uint32_t freq,uint32_t data);
29
30
31
32
33 #endif // DAC_LIB_H
@@ -0,0 +1,127
1 #include <stdio.h>
2 //#include <bsp.h>
3 #include <stm32f4xx_rcc.h>
4 #include <stm32f4xx_tim.h>
5 #include <stm32f4xx_dac.h>
6 #include <stm32f4xx_gpio.h>
7 #include <stm32f4xx_dma.h>
8 #include <stm32f4xx.h>
9 #include <gpio.h>
10 #include <stm32f4xx.h>
11
12
13 #define DAC_DHR12R2_ADDRESS 0x40007414
14 #define DAC_DHR8R1_ADDRESS 0x40007410
15
16 #define DAC1_12bit_right_align 0x40007408
17 #define DAC1_12bit_left_align 0x4000740C
18 #define DAC1_8bit_right_align 0x40007410
19 #define DAC2_12bit_right_align 0x40007414
20 #define DAC2_12bit_left_align 0x40007418
21 #define DAC2_8bit_right_align 0x4000741C
22 #define DAC_Dual_12bit_right_align 0x40007420
23 #define DAC_Dual_12bit_left_align 0x40007424
24 #define DAC_Dual_8bit_right_align 0x40007428
25 #define DAC_Dual_8bit_left_align 0x4000742C
26
27
28
29 const TIM_TypeDef* _timer_dev_table[14]={TIM1,TIM2,TIM3,TIM4,TIM5,TIM6,TIM7,
30 TIM8,TIM9,TIM10,TIM11,TIM12,TIM13,TIM14};
31 #define DAC1 0
32 #define DAC2 1
33
34 #define timer2 1
35 #define timer3 2
36 #define timer4 3
37 #define timer5 4
38 #define timer6 5
39 #define timer7 6
40 #define timer8 7
41
42 DAC_InitTypeDef DAC_InitStructure;
43
44 int dacopen(uint32_t pin)
45 {
46 #define GPIOGETPORT(gpio) ((GPIO_TypeDef*)(((((uint32_t)gpio) & (uint32_t)0x0000FF00)*(uint32_t)4) + (uint32_t)GPIOA))
47 #define GPIOPORTNUM(gpio) (((uint32_t)(gpio) & (uint32_t)0x0000FF00)>>(uint32_t)8)
48 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1 , ENABLE);
49 RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
50 gpio_t DACOUT;
51 DACOUT = gpioopen(pin);
52 DACOUT |= gpioan | gpionopulltype;
53 gpiosetconfig(&DACOUT);
54 return 0;
55 }
56
57 int dacsetconfig(int timer, int buffer_size, int dac,uint32_t dac_type, uint32_t freq,uint32_t data)
58 {
59 TIM_TypeDef* tim = _timer_dev_table[timer];
60 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
61 if(timer>=timer2 && timer <= timer7)RCC_APB1PeriphClockCmd((1<<(timer-1)), ENABLE);
62 if(timer==timer8)RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
63 uint32_t timfreq = (81300)*buffer_size/(freq);
64 TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
65 TIM_TimeBaseStructure.TIM_Period = timfreq;
66 TIM_TimeBaseStructure.TIM_Prescaler = 0;
67 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
68 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
69 TIM_TimeBaseInit(tim, &TIM_TimeBaseStructure);
70 TIM_SelectOutputTrigger(tim, TIM_TRGOSource_Update);
71 TIM_Cmd(tim, ENABLE);
72
73 DMA_InitTypeDef DMA_InitStructure;
74 if (timer == timer2)DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
75 if (timer == timer4)DAC_InitStructure.DAC_Trigger = DAC_Trigger_T4_TRGO;
76 if (timer == timer5)DAC_InitStructure.DAC_Trigger = DAC_Trigger_T5_TRGO;
77 if (timer == timer6)DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;
78 if (timer == timer7)DAC_InitStructure.DAC_Trigger = DAC_Trigger_T7_TRGO;
79 if (timer == timer8)DAC_InitStructure.DAC_Trigger = DAC_Trigger_T8_TRGO;
80 DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
81 DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
82 if (dac == DAC1){
83 DAC_Init(DAC_Channel_1, &DAC_InitStructure);
84 DMA_DeInit(DMA1_Stream5);
85 }
86
87 if (dac == DAC2){
88 DAC_Init(DAC_Channel_2, &DAC_InitStructure);
89 DMA_DeInit(DMA1_Stream6);
90 }
91
92 DMA_InitStructure.DMA_Channel = DMA_Channel_7;
93 DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)dac_type;
94 DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)data;
95 DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
96 DMA_InitStructure.DMA_BufferSize = buffer_size;
97 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
98 DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
99 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
100 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
101 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
102 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
103 DMA_InitStructure.DMA_Priority = DMA_Priority_High;
104 DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
105 DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
106 DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
107 DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
108
109 if (dac == DAC1){
110 DMA_Init(DMA1_Stream5, &DMA_InitStructure);
111 DMA_Cmd(DMA1_Stream5, ENABLE);
112 DAC_DMACmd(DAC_Channel_1, ENABLE);
113 DAC_Cmd(DAC_Channel_1, ENABLE);
114
115 }
116 if (dac == DAC2){
117 DMA_Init(DMA1_Stream6, &DMA_InitStructure);
118 DMA_Cmd(DMA1_Stream6, ENABLE);
119 DAC_DMACmd(DAC_Channel_2, ENABLE);
120 DAC_Cmd(DAC_Channel_2, ENABLE);
121
122 }
123 return 0;
124
125 }
126
127
@@ -50,6 +50,16 int bsp_init()
50 printf("================================================================\n\r");
50 printf("================================================================\n\r");
51 return 1;
51 return 1;
52 }
52 }
53 void bsp_GPIO_init()
54 {
55 gpio_t LED_list[]={LED1, LED2, LED3};
56 gpio_t LEDx;
57 for (int i=0;2;i++)
58 {
59 LEDx=gpioopen(LED_list[i]);
60 gpiosetdir(&LEDx,gpiooutdir);
61 }
62 }
53
63
54 void bsp_GPIO_init()
64 void bsp_GPIO_init()
55 {
65 {
@@ -27,8 +27,9
27 #define __MAX_OPENED_FILES__ 32
27 #define __MAX_OPENED_FILES__ 32
28 #define __FS_ROOT_SIZE__ 32
28 #define __FS_ROOT_SIZE__ 32
29
29
30 #define LED1 PD12
30 #define LED1 PA0
31 #define LED2 PD13
31 #define LED2 PA1
32 #define LED3 PA2
32
33
33 extern float VREF0;
34 extern float VREF0;
34
35
@@ -11,7 +11,7 SOURCES += bsp.c
11
11
12 HEADERS += bsp.h
12 HEADERS += bsp.h
13
13
14 LIBS+= -lgpio -luart -li2c -lspi -lpwm
14 LIBS+= -lgpio -luart -li2c -lspi -lpwm -ldac
15
15
16 BSPFILE = bsp.pri
16 BSPFILE = bsp.pri
17
17
@@ -11,8 +11,7 SUBDIRS += STM32F4Discovery \
11 OPLAYER \
11 OPLAYER \
12 STM32-E407 \
12 STM32-E407 \
13 STM32F429Discovery \
13 STM32F429Discovery \
14 STM32F4Discovery_35LCD \
14 STM32F4Discovery_35LCD
15 Nano-particle
16
15
17
16
18
17
@@ -36,6 +36,7 extern void reset_AHB2();
36 extern void reset_APB1();
36 extern void reset_APB1();
37 extern void reset_APB2();
37 extern void reset_APB2();
38 extern void configureSysTick();
38 extern void configureSysTick();
39 extern void delay_us(uint32_t value);
39 extern void delay_100us(uint32_t value);
40 extern void delay_100us(uint32_t value);
40 extern void SysTick_Handler(void);
41 extern void SysTick_Handler(void);
41
42
@@ -8,6 +8,7 SUBDIRS = CORE/core.pro \
8 SPI/spi.pro \
8 SPI/spi.pro \
9 I2C/i2c.pro \
9 I2C/i2c.pro \
10 PWM/pwm.pro \
10 PWM/pwm.pro \
11 DAC/dac.pro\
11 SDCARD-SDIO/sdcard-sdio.pro
12 SDCARD-SDIO/sdcard-sdio.pro
12
13
13
14
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now