Hallo alle Zusammen, ich bräuchte eure Hilfe. Ich will bei dem STM32F10X-128K-Eval Board über den BNC Connector einen Sinus auszugeben. Das Programm für den Sinus hab ich schon geschrieben, nur mir ist nicht ganz klar,wie diese Werte an den BNC Connector ausgeben kann? Ich weiss das der BNC an PC1 hängt, aber um die Werte für den Sinus auszugeben muss ich ja den ganzen Port C benutzen. Ich weiss jetzt nicht wie ich die Sinus Werte aus meiner Tabelle am BNC Connector ausgeben kann?? Mfg Paul
Mach dir doch bitte vorher gedanken wie du dein Wunschsignal erzeugen willst. Folgende "einfache" Möglichkeiten (unabhängig vom Board-Layout) hast du: Ausgabe über PWM, anschließend Filter Ausgabe über ADC (evt. auch Filtern) Ausgabe über gesamten port, anschließend Seriel-AD Wandler oder sowas Ich habe ca. 1 min gebraucht um im Userguide/Datenblatt nachzuschauen welches dieser Möglichkeiten bei dir in Frage kommt (30 sek davon für den pdf-Download) und es ist eine der genannten. Die Sinuserzeugung die du bereits vorgenommen hast musst du eventuell ein bischen anpassen, da ich denke das du das entsprechende HardwareModul noch nicht in aktiviert/initialisiert hast. Gruß Maddin
Maddin schrieb: > anschließend Seriel-AD Wandler quaaark... parallel! mann, wird zeit für Feierbend ;))
Danke. Kannst du mir bitte den Link für dieses pdf schicken und mir auch sagen bei welcher Seite du dies gefunden hast? Gruß Paul
ich habe jetzt das Programm fertig geschrieben, ich leg meine Sinustabelle im Speicher ab, greif per DMA zu und schicke es über den DAC. Mein problem ist jetzt, ich erhalte ke Signal an PA4 oder PA5????? Hier mein Code: #include "stm32f10x_lib.h" #define DAC_DHR12RD_Address ((u32)0x40007420) uc16 Sine12bit[32] = {2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056, 3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909, 599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647}; u32 DualSine12bit[32]; u8 Idx = 0; int main(void) { /*********************************************************************** ************************************************************************ *******************/ GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; DAC_InitTypeDef DAC_InitStruct; DMA_InitTypeDef DMA_InitStruct; RCC_DeInit(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); for (Idx= 0; Idx<32; Idx++) { DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]); } TIM_TimeBaseStruct.TIM_Prescaler = 0x0; TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStruct.TIM_Period = 0x19; TIM_TimeBaseStruct.TIM_ClockDivision = 0x0; TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStruct); TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_Update); DAC_InitStruct.DAC_Trigger = DAC_Trigger_T8_TRGO; DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Disable; DAC_Init(DAC_Channel_1, &DAC_InitStruct); DAC_Init(DAC_Channel_2, &DAC_InitStruct); DMA_DeInit(DMA2_Channel4); DMA_InitStruct.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address; DMA_InitStruct.DMA_MemoryBaseAddr = (u32)&DualSine12bit; DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralDST; DMA_InitStruct.DMA_BufferSize = 32; DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitStruct.DMA_Mode = DMA_Mode_Circular; DMA_InitStruct.DMA_Priority = DMA_Priority_High; DMA_InitStruct.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA2_Channel4, &DMA_InitStruct); DMA_Cmd(DMA2_Channel4, ENABLE); DAC_Cmd(DAC_Channel_1, ENABLE); DAC_Cmd(DAC_Channel_2, ENABLE); DAC_DMACmd(DAC_Channel_2, ENABLE); TIM_Cmd(TIM8, ENABLE); }
Das ist dann wohl dumm gelaufen... Erst ab STM32F103xC (256 KBFlash) ist der drin. Ich hab daran auch nicht gedacht, denn die bis 128 KB Flash nehme ich schon lange nicht mehr. Leider gibt es meist die Demo-Boards nur mit dem kleinen. Raus holen mit dem Messer und einen größeren drauf löten (Pins am Gehäuse abschneiden bis das schwarze Quadrat raus fällt).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.