Jump to content

All Activity

This stream auto-updates     

  1. Last week
  2. Earlier
  3. I have BlackVET6 board based STM32F407VET6 and an LCD with ILI9486L. I'm pleased to enclose ILI9486 driver. The tested OK. Kindly give me access to the µGFX-Studio.ILI9486.zip
  4. Hello, when I started to use pixmaps I thought that it is an area with undefined content which you have to clear manually. As I learned, a new pixmap is initialized with the default background color GDISP_STARTUP_COLOR. Is there a way to choose the default color of a new pixmap dynamically at runtime? I think it's a waste of runtime to fill it with GDISP_STARTUP_COLOR first, and then overwrite it with the actually desired background color. Similar question for the orientation: I have to change the orientation of each pixmap that I create by using gdispGSetOrientation. Is there a way to set a default pixmap orientation? Thanks, spinnenfeind
  5. Thank! This is tested and works for me. Maybe I didn’t figure it out completely and something needs to be rewritten or added. I will be waiting for your comments. forum_ugfx_otm8009a.zip
  6. nice. happy to hear that you got it working - good job!
  7. Thank you for your suggestion. If you feel like opening an µGFX channel please feel free to do so. We're happy to promote it here and on our website - I'd also join in personally. However, we're not going to do / maintain this ourselves. We have done this in the past (eg. the #ugfx channel on freenode) but we mainly stopped doing that as we prefer to invest our time into development.
  8. The easiest way is to attach the driver as a zip file to this forum thread. If you wish you can also create a pull request on the main uGFX git repository.
  9. To develop the community, I propose to create a channel in a https://telegram.org/ . This would enable the project participants to communicate quickly.
  10. As a novice programmer, it was hard for me to figure out how to write a driver. As a result, I managed to write a driver and my display came to life with new colors. Now I will take the time to put the driver code in order and implement additional functions. I would also like to share the driver for this display. What is the best way to do this? Thanks for the great graphics library!
  11. Hi, The best way to get started is by reading the corresponding wiki article: https://wiki.ugfx.io/index.php/Display_Driver_Model You might also want to take a look at the countless examples in for of existing drivers which you can find in the /drivers directory in the library. If you have any specific questions you can always ask here on the forum - we're happy to help where we can.
  12. Hello , i'm new to µGFX, wondering if we can expect µGFX Studio available again any time soon ?
  13. Hello , i'm new to µGFX, wondering if we can expect µGFX Studio available again any time soon ?
  14. Hello Guys, i need a complete guide on how to set up uGFX on ChibiStudio... I'm using stm32f103c8 and i'm completely lost setting it up... I'm new to ChibiStudio and uGFX...
  15. DrAB

    Chinese font

    MCUFONT Regarding large font size ... if you try DejaVuSans-Bold you will see that you can't generate a size >150 ... mcufont just exits (with no error reported). I happen to want to display a few very large digits on my embedded display - thus the need to generate large sizes. So, I did some VisualStudio debugging for 'import_ttf DejaVuSans-Bold.ttf 144 bw'. It turns out that 'mcufont::rlefont::init_dictionary(*f);' (in main.cc/cmd_import_ttf) uses huge amounts of RAM and eventually throws std::bad_alloc ex, which being uncaught exits with no error message! Unhandled exception at 0x767Fxxxx in mcufont.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x00F9xxxx. Recompiling with 32-bit /3GB or in 64-bit avoids the problem - but an error message would have been helpful. -- line_height I will look into making the changes required to gU8 font->line_height ... to g16.
  16. Hello! Hello! I want to write my display driver for uGFX My display on the microcontroller otm8009a is connected via a 16 bit parallel bus to stm32f407ve via FSMC. Using the cube, I generated the FSMC initialization code. I have addresses in the memory of the microcontroller: #define LCD_REG 0x60000000 #define LCD_DATA 0x6007FFFE I wrote the initialization of the display controller and in the end I have a working functions like: void LCD_DrawPoint(uint16_t x, uint16_t y, uint16_t color) //color in RGB565 { LCD_SetWindows(x, y, x, y); LCD_DATA = Color; } void LCD_Clear(uint16_t Color) { unsigned int i; uint32_t total_point = width * height; LCD_SetWindows(0, 0, width - 1, height - 1); for(i = 0; i < total_point; i++) { LCD_DATA = Color; } } Help me please understand how I should write a driver for uGFX.
  17. inmarket

    Chinese font

    Yes. A font that large (tall) is likely to not work. Given that most embedded displays are 320x240 or smaller it is not unexpected that a line height of 267 would be considered invalid. That means a single line of text won't fit on most displays. Given the aspect ratio of most fonts you would be struggling to fit 3 characters width wise as well. I know displays are getting larger and you obviously have a use case for such a large font, but I am not surprised it fails at this size. We will have a look to see if we can fix this but that won't be quick due to our other workloads. Alternatives, 1. You can try editing the produced c file and manually adjusting the line height down to 255 (the largest value currently supported). 2. Fix the font problem in ugfx and the encoder and submit them as patches to ugfx. We would greatly appreciate them.
  18. DrAB

    Chinese font

    I will look for another Simplified Chinese font (definitely TTF) and try with that. Regarding large font size ... if you try DejaVuSans-Bold you will see that you can't generate a size >150 ... mcufont just exits (with no error reported). Also, if you do manage to generate a large font ... e.g. Anton-Regular at size=182 (the largest that produces a DAT file) you will find that the gU8 font->line_height field is "267, /* line height */", which isn't working well because the field was too small! 😞
  19. Joel Bodenmann

    Chinese font

    Hi, The font converter engine supports TTF and BDF font files. I think the font converter should reject other files but maybe that's not the case and it can't process at some point. The online font converter definitely checks for the proper file extension.
  20. DrAB

    Chinese font

    Trying to use Google Noto Sans SC (Simplified Chinese) font. Downloaded the OTF and (import_ttf) converted to DAT using mcufont.exe 16 bw. But bwfont_export terminates with a partially complete .c file. 😞 Separately mcufont terminates when generating large, say 200, font sizes, and doesn't produce a usable DAT file. 😞
  21. Make sure that all your DMA stuff is setup properly (i.e that there are no conflicts). Keep in mind that the DMA stuff is not part of µGFX - it's part of the application. You need to configure all the DMA components in a way that it works for the entire application. You might also find this forum post helpful:
  22. hai, before it i have done make data aquition with ADC external using SPI DMA... but when i mix it in uGFX, interrupt not show up... anyone can help? this is my code ------------------------------------------------------------------------------------------------------------------------------------------------------------------- #if 1 //DMA1 stream 3 CH_FAST_IRQ_HANDLER(STM32_DMA1_CH3_HANDLER){ CH_IRQ_PROLOGUE(); chSysLockFromISR(); // THIS IS NEVER RUNNING palSetLine(LINE_ARD_D4); palClearLine(LINE_ARD_D4); //TCIF[3:0]: stream x transfer complete interrupt flag (x = 3..0) //in DMA low interrupt status register (DMA_LISR) if ((DMA1->LISR & DMA_LISR_TCIF3) != 0) { //NSS high SPI2->CR1 |= SPI_CR1_SSI; //disable SPI SPI2->CR1 &= ~SPI_CR1_SPE; stop_sclk(); palSetLine(LINE_ARD_D4); uint32_t e_adc = (ADC_ConvertedValue[0] << 16) | (ADC_ConvertedValue[ 1 ]);// & 0xFF00); if(titik_spi<SAMPLING_AMBIL){ #ifdef LIHAT_HEX data_sample[titik_spi] = e_adc; #else data_sample[titik_spi] = e_adc & 0xffffff00; #endif // DEBUG titik_spi++; }else sudah_penuh=true; //CTCIF[3:0]: stream x clear transfer complete interrupt flag (x = 3..0) //Writing 1 to this bit clears the corresponding TCIFx flag in the DMA_LISR register. DMA1->LIFCR |= DMA_LIFCR_CTCIF3; palClearLine(LINE_ARD_D4); spi_process++; } chSysUnlockFromISR(); CH_IRQ_EPILOGUE(); } #endif // this is run in main function void dma_config(){ // enable clock dma1 RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN; // de init dma DMA1_Stream3->CR = 0; DMA1_Stream3->FCR = 0; DMA1_Stream3->NDTR = 0; DMA1_Stream3->PAR = 0; DMA1_Stream3->M0AR = 0; uint32_t tmpreg = 0; /*------------------------- DMAy Streamx CR Configuration ------------------*/ /* Get the DMAy_Streamx CR value */ tmpreg = DMA1_Stream3->CR; /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC and DIR bits */ tmpreg &= ((uint32_t)~(DMA_SxCR_CHSEL | DMA_SxCR_MBURST | DMA_SxCR_PBURST | \ DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ DMA_SxCR_MINC | DMA_SxCR_PINC | DMA_SxCR_CIRC | \ DMA_SxCR_DIR)); /* Configure DMAy Streamx: */ /* Set CHSEL bits according to DMA_CHSEL value */ tmpreg |= 0; //000: channel 0 selected /* Set DIR bits according to DMA_DIR value */ tmpreg |= 0; //00: peripheral-to-memory /* Set PINC bit according to DMA_PeripheralInc value */ tmpreg |= 0; //0: peripheral address pointer is fixed /* Set MINC bit according to DMA_MemoryInc value */ tmpreg |= DMA_SxCR_MINC; //1: memory address pointer is incremented after each data transfer (increment is done according to MSIZE) /* Set PSIZE bits according to DMA_PeripheralDataSize value */ tmpreg |= DMA_SxCR_PSIZE_0; //01: half-word (16-bit) (8 bit) /* Set MSIZE bits according to DMA_MemoryDataSize value */ tmpreg |= DMA_SxCR_MSIZE_0; //01: half-word (16-bit) /* Set CIRC bit according to DMA_Mode value */ tmpreg |= 0; //0: circular mode disabled /* Set PL bits according to DMA_Priority value */ tmpreg |= DMA_SxCR_PL_1 | DMA_SxCR_PL_0; //11: very high /* Set MBURST bits according to DMA_MemoryBurst value */ tmpreg |= 0; //00: single transfer /* Set PBURST bits according to DMA_PeripheralBurst value */ tmpreg |= 0; //00: single transfer /* Write to DMAy Streamx CR register */ DMA1_Stream3->CR = tmpreg; /*------------------------- DMAy Streamx FCR Configuration -----------------*/ /* Get the DMAy_Streamx FCR value */ tmpreg = DMA1_Stream3->FCR; /* Clear DMDIS and FTH bits */ tmpreg &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH); /* Configure DMAy Streamx FIFO: Set DMDIS bits according to DMA_FIFOMode value Set FTH bits according to DMA_FIFOThreshold value */ //WE NOT USE FIFO!!!! tmpreg |= DMA_SxFCR_FTH_0; //01: 1/2 full FIFO /* Write to DMAy Streamx CR */ DMA1_Stream3->FCR = tmpreg; /*------------------------- DMAy Streamx NDTR Configuration ----------------*/ /* Write to DMAy Streamx NDTR register */ DMA1_Stream3->NDTR = 2; // 16 bit * 2 /*------------------------- DMAy Streamx PAR Configuration -----------------*/ /* Write to DMAy Streamx PAR */ //dari OVM #define SPI3_DR_ADDRESS ((uint32_t) 0x40003C0C) /* lihat halaman 709 dan table 1 hal 50 */ #define SPI2_DR_ADDRESS ((uint32_t) 0x4000380C) DMA1_Stream3->PAR = (uint32_t)SPI2_DR_ADDRESS; /*------------------------- DMAy Streamx M0AR Configuration ----------------*/ /* Write to DMAy Streamx M0AR */ DMA1_Stream3->M0AR = &ADC_ConvertedValue[0]; // /* Enable the selected DMA transfer interrupts */ DMA1_Stream3->CR |= DMA_SxCR_TCIE; //| DMA_SxCR_HTIE | DMA_SxCR_TEIE | DMA_SxCR_DMEIE; //STM32_GPT_TIM5_IRQ_PRIORITY //STM32_SPI_SPI2_DMA_PRIORITY nvicEnableVector(DMA1_Stream3_IRQn,2);//CORTEX_PRIO_MASK tmpreg = DMA1_Stream3->CR; chprintf(chp,"---> See DMA1_Stream3->CR = 0x%x\r\n",tmpreg); tmpreg = DMA1_Stream3->FCR; chprintf(chp,"---> See DMA1_Stream3->FCR = 0x%x\r\n",tmpreg); tmpreg = DMA1_Stream3->NDTR; chprintf(chp,"---> See DMA1_Stream3->NDTR = 0x%x\r\n",tmpreg); tmpreg = DMA1_Stream3->PAR; chprintf(chp,"---> See DMA1_Stream3->PAR = 0x%x\r\n",tmpreg); tmpreg = DMA1_Stream3->M0AR; chprintf(chp,"---> See DMA1_Stream3->MOAR = 0x%x\r\n",tmpreg); } thank u...
  23. hai, i have same problem with u when i use DMA interrupt to do aquire data ADC external with spi, interrupt doesnt show up. can u tell me step by step?
  24. Hi, Thank you for the note. That's correct & intended behavior. The public beta phase of the µGFX-Studio is currently paused.
  25. Dear Joel, just a short technical note: the download page at https://community.ugfx.io/files/category/4-ugfx-studio-beta/ appears to be empty (in particular there is no red box with hints). Thank you for your work Claus
  26. 1Mg byte of memory. I think series STMF303 have opamps and comparators too, but memory limit is 512kb. I'm going to read about those PSoC, but I like the huge amount of information about STM32 series. Have Cypress an IDE like CubeIDE or so??
  27. What exactly is "1mg" or "1Mg"? If you also need OpAmps you might want to have a look at the "PSoC" series of Cypress. The PSoC 4, 5 and 6 all feature Cortex-M cores. Those devices come with your regular amount of peripherals (SPI, I2C, ...) but also feature programmable analog components such as OpAmps, comparators and so on. There's a guide on how to use µGFX with the PSoC creator studio (their IDE) in our wiki.
  1. Load more activity
×
×
  • Create New...