Jump to content
    

Denisvak

Участник
  • Posts

    138
  • Joined

  • Last visited

Reputation

0 Обычный

About Denisvak

  • Rank
    Частый гость
    Частый гость

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1,555 profile views
  1. Как узнать? :)
  2. Проблему удалось решить вызовом DMA2D_DeadTimeConfig(250,ENABLE); перед стартом передачи DMA2D..но вобще не понравилось как работает вся эта конструкция, иногда все что-то подвесает. Пока забил на двойной буфер. Потестил SDRAM запись в него 1МГб идет 0.1с. Не долго?
  3. Делаю железячку с экраном TFT 800х480 Контроллер STM32F439 SDRAM IS42S16400J-7TLI Память пишется, все Ок. Экран работает, картинки рисуются и т.д.(без dma2d) Настала необходимость сделать вывод на экран через двойную буферизацию. Перерисовывать два слоя регулярно стало накладно и долго по времени, начал запускать dma2d, но при выводе картинки через него или очистки буфера...почему-то по экрану начинают ползти помехи, как бы след от изображенного текста, а там где ничего не нарисовано такого не возникает, изображениеподергивается и т.д. как раз при вызове DMA2D_StartTransfer(); В чем могут быть проблемы? Инициализация LTDC void LCD_Init(void) { LTDC_InitTypeDef LTDC_InitStruct; /* Configure the LCD Control pins ------------------------------------------*/ // LCD_CtrlLinesConfig(); // LCD_ChipSelect(DISABLE); // delay(300); // LCD_ChipSelect(ENABLE); // delay(300); //LCD_ChipSelect(DISABLE); /* Configure the LCD_SPI interface -----------------------------------------*/ //LCD_SPIConfig(); /* Power on the LCD --------------------------------------------------------*/ //LCD_PowerOn(); /* Enable the LTDC Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE); /* Enable the DMA2D Clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE); /* Configure the LCD Control pins */ LCD_AF_GPIOConfig(); SDRAM_Init(); /* LTDC Configuration *********************************************************/ /* Polarity configuration */ /* Initialize the horizontal synchronization polarity as active low */ LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;//LTDC_HSPolarity_AL; /* Initialize the vertical synchronization polarity as active low */ LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;// /* Initialize the data enable polarity as active low */ LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;// /* Initialize the pixel clock polarity as input pixel clock */ LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC; /* Configure R,G,B component values for LCD background color */ LTDC_InitStruct.LTDC_BackgroundRedValue = 0; LTDC_InitStruct.LTDC_BackgroundGreenValue = 0; LTDC_InitStruct.LTDC_BackgroundBlueValue = 0; /* Configure PLLSAI prescalers for LCD */ /* Enable Pixel Clock */ /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */ /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAI_N = 192 Mhz */ /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAI_R = 192/4 = 48 Mhz */ /* LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = 48/8 = 6 Mhz */ RCC_PLLSAICmd(DISABLE); RCC_PLLSAIConfig(360, 7, 3); RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4); //RCC_PLLSAIConfig(280,15,2); //RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4); /* Enable PLLSAI Clock */ RCC_PLLSAICmd(ENABLE); /* Wait for PLLSAI activation */ while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET) { } /* Timing configuration */ /* Configure horizontal synchronization width */ LTDC_InitStruct.LTDC_HorizontalSync = (Hsync-1); /* Configure vertical synchronization height */ LTDC_InitStruct.LTDC_VerticalSync = (Vsync-1); /* Configure accumulated horizontal back porch */ LTDC_InitStruct.LTDC_AccumulatedHBP = (Hsync+HBP-1); /* Configure accumulated vertical back porch */ LTDC_InitStruct.LTDC_AccumulatedVBP = (Vsync+VBP-1); /* Configure accumulated active width */ LTDC_InitStruct.LTDC_AccumulatedActiveW =(Hsync+LCD_PIXEL_WIDTH+HBP-1); /* Configure accumulated active height */ LTDC_InitStruct.LTDC_AccumulatedActiveH = (Vsync+LCD_PIXEL_HEIGHT+VBP-1); /* Configure total width */ LTDC_InitStruct.LTDC_TotalWidth = (Hsync + HBP + LCD_PIXEL_WIDTH + HFP - 1); /* Configure total height */ LTDC_InitStruct.LTDC_TotalHeigh = (Vsync + VBP + LCD_PIXEL_HEIGHT + VFP - 1); LTDC_Init(&LTDC_InitStruct); } Код инициализации памяти void SDRAM_Init(void) { FMC_SDRAMInitTypeDef FMC_SDRAMInitStructure; FMC_SDRAMTimingInitTypeDef FMC_SDRAMTimingInitStructure; /* GPIO configuration for FMC SDRAM bank */ SDRAM_GPIOConfig(); /* Enable FMC clock */ RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC, ENABLE); /* FMC Configuration ---------------------------------------------------------*/ /* FMC SDRAM Bank configuration */ /* Timing configuration for 90 Mhz of SD clock frequency (180Mhz/2) */ /* TMRD: 2 Clock cycles */ FMC_SDRAMTimingInitStructure.FMC_LoadToActiveDelay = 2; /* TXSR: min=70ns (7x11.11ns) */ FMC_SDRAMTimingInitStructure.FMC_ExitSelfRefreshDelay = 6;//7; /* TRAS: min=42ns (4x11.11ns) max=120k (ns) */ FMC_SDRAMTimingInitStructure.FMC_SelfRefreshTime = 4;//4; /* TRC: min=70 (7x11.11ns) */ FMC_SDRAMTimingInitStructure.FMC_RowCycleDelay = 6;//7; /* TWR: min=1+ 7ns (1+1x11.11ns) */ FMC_SDRAMTimingInitStructure.FMC_WriteRecoveryTime = 2; /* TRP: 20ns => 2x11.11ns */ FMC_SDRAMTimingInitStructure.FMC_RPDelay = 2; /* TRCD: 20ns => 2x11.11ns */ FMC_SDRAMTimingInitStructure.FMC_RCDDelay = 2; /* FMC SDRAM control configuration */ FMC_SDRAMInitStructure.FMC_Bank = FMC_Bank2_SDRAM; /* Row addressing: [7:0] */ FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_8b; /* Column addressing: [11:0] */ FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_12b; FMC_SDRAMInitStructure.FMC_SDMemoryDataWidth = SDRAM_MEMORY_WIDTH; FMC_SDRAMInitStructure.FMC_InternalBankNumber = FMC_InternalBank_Number_4; FMC_SDRAMInitStructure.FMC_CASLatency = SDRAM_CAS_LATENCY; FMC_SDRAMInitStructure.FMC_WriteProtection = FMC_Write_Protection_Disable; FMC_SDRAMInitStructure.FMC_SDClockPeriod = SDCLOCK_PERIOD; FMC_SDRAMInitStructure.FMC_ReadBurst = SDRAM_READBURST; FMC_SDRAMInitStructure.FMC_ReadPipeDelay = FMC_ReadPipe_Delay_2; FMC_SDRAMInitStructure.FMC_SDRAMTimingStruct = &FMC_SDRAMTimingInitStructure; /* FMC SDRAM bank initialization */ FMC_SDRAMInit(&FMC_SDRAMInitStructure); /* FMC SDRAM device initialization sequence */ SDRAM_InitSequence(); } Функция заливки экрана одним цветом(очистка) void LCD_ClearDMA2D(uint32_t Color,unsigned int adr) { DMA2D_InitTypeDef DMA2D_InitStruct; uint32_t Xaddress = 0; uint16_t Red_Value = 0, Green_Value = 0, Blue_Value = 0; Xaddress = adr; // + 2*(LCD_PIXEL_WIDTH*Ypos + Xpos); Red_Value = (0xF800 & Color) >> 11; Blue_Value = 0x001F & Color; Green_Value = (0x07E0 & Color) >> 5; /* Configure DMA2D */ DMA2D_DeInit(); DMA2D_InitStruct.DMA2D_Mode = DMA2D_R2M; DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565; DMA2D_InitStruct.DMA2D_OutputGreen = Green_Value; DMA2D_InitStruct.DMA2D_OutputBlue = Blue_Value; DMA2D_InitStruct.DMA2D_OutputRed = Red_Value; DMA2D_InitStruct.DMA2D_OutputAlpha = 0x0F; DMA2D_InitStruct.DMA2D_OutputMemoryAdd = Xaddress; DMA2D_InitStruct.DMA2D_OutputOffset = 0; DMA2D_InitStruct.DMA2D_NumberOfLine = 480; DMA2D_InitStruct.DMA2D_PixelPerLine = 800; DMA2D_Init(&DMA2D_InitStruct); /* Start Transfer */ DMA2D_StartTransfer(); // тут появляются помехи на экране. /* Wait for CTC Flag activation */ while(DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET) { } }
  4. Все же не стоит сравнивать обычный серийный ECU, точнее его калибровки с кастомным....
  5. А что нибудь с фторопластовой(тефлоновой) изоляцией, или как минимум прочненькой к истиранию, чтобы температуры от -30 до 200гр. естетственно бензо/масло стойкий. С жилками попрочнее :) Кто-что пользовал подобное?
  6. Так же есть интерес к разработке ECU "Адрес arro239 собака gmail не существует или заблокирован."
  7. Всем спасибо! Исполнитель найден!
  8. Добрый день, нужен пикадовский файлик с хитрым контуром печатной платы...помимо контура 16 сквозных падов и по пять, на каждую сторону, несквозных под ножевой разъем. Сам могу развести платку, а вот хитрые контура что-то не выходят... Чертеж платы вышлю. Пишите на denisvak (собака) маил ру.
  9. Если разъем ещё актуален то в меге есть XF2M40151A :) подходит!
  10. И ещё одним, пока :( трындец, были были и вдруг нету!
  11. Рисовать планирую STM32F407. Мне кажется для изучения этого должно хватить...сейчас нашел немного другой вариант дисплея, с тачскрином на борту, и разъем тот же самы 40пинов на все сразу.
  12. Да, в меге и нашел его :) Ну то откуда я выкавырил дисплей - это навигатор :) Такой же дисплей насколько я понимаю стоит в Sony PSP 1000. Его в запчастях можно купить за муку. Хочу попробовать порисовать на нем.
  13. Нашел вроде это FH12-40S-0.5SH по крайне мере внешне похож на тот что у меня на платке стоит!
  14. Может кто подскажет где найти разъем под плоский шлейф Шарповской TFT панельки LQ043T3DX02? аналогичный дисплей стоит в соньке псп. 40 пинов с шагом 0.5мм.
×
×
  • Create New...