ARM STM32F4DISCOVERY board II.

Cortex. ARM3, ARM5, ARM7 magok, mindenféle gyártóktól. Programozás-fejlesztés-tippek.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

ARM STM32F4DISCOVERY board II.

Hozzászólás Szerző: kapu48 »

ARM STM32F4_DISCOVERY board II.

Mivel 2 nap alatt nem tudtam rájönni mért nem működik az oldal elődje!?
Próbálom itt folytatni! Hátha?

:?:
Előzmények a hasonló nevű oldalon.

Röviden a névadó fejlesztő laphoz akarok Grafikus kijelzőt illeszteni.

PQG2412A SERIES (240 * 128 DOTS) PIN CONNECTIONS
http://www.palmtech.com.tw/rimages/757/P37-PQG2412A.pdf
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Eljutottam a szöveges (Text) üzemmód CGRam feltöltés megoldásáig.

Mivel ez a kijelző HW-ból 8*8 pont mátrixot tud kezelni.
És ilyen fontkészlet már van, a beépítet CGROM területen. (Csúnya összenyomót betűk!)

Inkább 16*8-as betűkészletet alkalmazok. ImTilk töl kapott font: http://www.4shared.com/file/HUZZRlhF/en ... efurl=d1ur

T6963C LCD Graphics Controller Chip
http://www.lcd-module.de/eng/pdf/zubehoer/t6963.pdf 23. oldal:
Offset Register (lower 5-bits only) Character Code (00~FF) 0 – 255 karaktert tud megcímezni.
Mi ezt a területet kettéosztjuk, így látszólag lesz 2*128 karakterünknek hely.
CGRAM Első 128*8 Bytebe töltjük a 16 pontsor magas karakterünknek a felső felét.

Amikre a szokásos módon ASCII kódjukkal hivatkozunk.
A CGRAM másik felébe kerül a karakter mátrix alsó fele, amit (ASCII kód + 128)-al címzünk.
És kirakjuk az előző alá.

Így lesz Hardveres 16pont magas, 8 pont széles karakterünk.

Ami legalább jól fog kinézni.
Elférnek a nagybetűk fölé az ékezetek, és a kisbetűk vonal alá nyúló részeit sem kell feltolnunk a szívükbe!


A megoldás majd tesztelés után idekerül. :)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

ImTilk-nek!
Itt vannak az Hu16x8-as ékezetes karakterek:

Kód: Egész kijelölése

/**
  ******************************************************************************
  * @file    fonts.h
  * @author  MCD Application Team
  * @version V5.0.2
  * @date    05-March-2012
  * @brief   Header for fonts.c file
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __FONTS0_H
#define __FONTS0_H

#ifdef __cplusplus
 extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include <stdint.h>

/** @defgroup FONTS_Exported_Constants
  * @{
  */ 
#define HU_A		127		/*"Á",95+32 	*/
#define HU_E		128		/*"É",96*/
#define HU_I		129		/*"Í",97*/
#define HU_O		130		/*"Ó",98*/
#define HU_OO		131		/*"Ö",99*/
#define HU_EO		132		/*"Ő",100*/
#define HU_U		133		/*"Ú",101*/
#define HU_UU		134		/*"Ü",102*/
#define HU_EU		135		/*"Ű",103*/
#define HU_a		136		/*"á",104+32	*/
#define HU_e		137		/*"é",105*/
#define HU_i		138		/*"í",106*/
#define HU_o		139		/*"ó",107*/
#define HU_oo		140		/*"ö",108*/
#define HU_eo		141		/*"ő",109*/
#define HU_u		142		/*"ú",110*/
#define HU_uu		143		/*"ü",111*/
#define HU_eu		144		/*"ű",112*/

#define LINE(x) ((x) * (((sFONT *)LCD_GetFont())->Height))


/** @defgroup FONTS_Exported_Types
  * @{
  */ 
typedef struct _tFont{
  const uint8_t *table;
  uint8_t Width;		//	 	szélesség
  uint8_t Height;		//	 	magasság
  uint8_t  nCHR;		//  	n CHR van a tömbben  */
} sFONT;

extern sFONT HU16x8;


#ifdef __cplusplus
}
#endif
  
#endif /* __FONTS_H */
 

Kód: Egész kijelölése

/**
  ******************************************************************************
  * @file    fonts.c
  * @author  MCD Application Team
  * @version V5.0.2
  * @date    05-March-2012
  * @brief   This file provides text fonts for STM32xx-'s LCD driver.
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "fonts0.h"

// átneveztem
const uint8_t hu16x8_fonts_table[] = {


// Ezt hozzácsapod az English fontok végéhez:
/*		ékezetes betük		*/
0x0C,0x18,0x00,0x18,0x3C,0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x00,0x00,/*"Á",95 	*/
0x0C,0x18,0x00,0x7E,0x60,0x60,0x60,0x7C,0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00,/*"É",96*/
0x0C,0x18,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,/*"Í",97*/
0x0C,0x18,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Ó",98*/
0x00,0x66,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Ö",99*/
0x33,0x66,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Ő",100*/
0x0C,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Ú",101*/
0x00,0x66,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Ü",102*/
0x33,0x66,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Ű",103*/
0x00,0x00,0x0C,0x18,0x00,0x3C,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,/*"á",104	*/
0x00,0x00,0x0C,0x18,0x00,0x3C,0x66,0x66,0x7E,0x60,0x60,0x3C,0x00,0x00,0x00,0x00,/*"é",105*/
0x00,0x00,0x0C,0x18,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00,/*"í",106*/
0x00,0x00,0x0C,0x18,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"ó",107*/
0x00,0x00,0x00,0x36,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"ö",108*/
0x00,0x00,0x36,0x6C,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"ő",109*/
0x00,0x00,0x0C,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,/*"ú",110*/
0x00,0x00,0x00,0x36,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,/*"ü",111*/
0x00,0x00,0x36,0x6C,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,/*"ű",112*/
0x06,0x09,0x09,0x06,0x3C,0x66,0x66,0x60,0x60,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,/*"Cfok",113*/
};


sFONT HU16x8 = {
		hu16x8_fonts_table,	// *table;
		8, 			// Width  széles
		16, 		// Height magas
		113 + 1,  	// nCHR   0 - 113 CHR
};
Végre 1 karakterkészlet, ami jól is néz ki!
És tudom HW-ből kezelni a Text lapon.
:D

Kód: Egész kijelölése

// STRING
  uint8_t hu[2] = {0, 0};
  uint8_t hus[] = {'M', HU_a, 's', 'o', 'd', 'i', 'k', ' ', 's', 'o', 'r', 0};
 //   Á   r   v   í    z       t     ű   r     ő       t    ü    k    ö    r       f    ú   r    ó   g     é  p
  uint8_t huss[] = {HU_A,'r','v',HU_i,'z',' ','t',HU_eu,'r',HU_eo,' ','t',HU_uu,'k',HU_oo,'r',' ','f',HU_u,'r',HU_o,'g',HU_e,'p',0};
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2012. szeptember 21. péntek, 9:41-kor.
Avatar
ImTilk
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2010. február 6. szombat, 7:00

Hozzászólás Szerző: ImTilk »

Hú de jó köszi ;)
Nagy segítség ...
Tegnap meg ma kevés meló volt, úgyhogy úgy néz ki sikerült megkreálnom az új nyákom terveit... Ellenőrzés van még hátra, remélem szombaton le is tudom "gyártani"...
Hihetetlen, hogy mennyire bonyis a lábkiosztás megtervezése, nagyon oda kell figyelni. Marha érdekesek ezek a mikrokontrollerek, egyes lábaknak sok funkciójuk lehet, és egyes funkciók több lábon is lehetnek, amit szoftverből lehet konfigurálni, hogy éppen melyik lábon van az adott funkció a lehetőségek közül. Ha figyelmetlen az ember, simán ütközhet pl. akár 2 spi busz is. Sose nyomtattam még ki adatlapot, de most a lábkiosztás részt muszáj volt, hogy átlássak mindent rendesen :D
Ha megvagyok mindenképp jelentkezem, szeretnék én is jól bekommentált forrásokkal segíteni másoknak, meg tervezek egy videót is csinálni, mit is tud a kicsikénk...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Avatar
ImTilk
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2010. február 6. szombat, 7:00

Hozzászólás Szerző: ImTilk »

Nem láthatóak nálam a képeid, ezt írja ki:
You need permission to access this item.
Lehet én vagyok a béna...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ez az első próbálkozásom a Google Drive könyvtárral.
Még nem igazán ismerem ki magam benne!
Akkor keresek másik tármegosztó helyet.

Google Drive Windows rendszerre:
https://tools.google.com/dlpage/drive/index.html 5 GB ingyenes tárhely
Valamit ír a fájl megosztásról, de akkor a partnernek is kel regisztrálni tárhelyet.
:oops:

Amit te használsz: 4shared.com/
Ez fizetős?
:?:

Kép
Kép

ÁÁ Sikerült kirakni! :lol:

Hát? Ez a fiók meg mindent megmutat, ami benne van!?
8)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Most betöltjük a CGRAM területre a fentebb összerakott : hu16x8_fonts_table karakter táblát.

Kód: Egész kijelölése

/**
 sFONT HU16x8 = {
		hu16x8_fonts_table,	// *table;
		8, 		// Width  széles
		16, 	// Height magas
		112,  	// nCHR   0 - 112 CHR
};
 *  	 Character GENERATOR RAM Page Upload > fonts_table
 *  	if 16*8font, divide 2*(8*8) CGRAM Area
 *  	destination cg_ram
 */
void GLCD_Load_CGRAM(sFONT fonts_table, uint8_t cg_ram){
	uint16_t i;
	uint8_t j;
	uint8_t ib;
	uint16_t it = 0;
	if (cg_ram){	// ? 1	CGRAM Bankválasztás
		GLCD_SetOffsetRegister(GLCD_CG_RAM_OFFSET2);
		cgram_home = GLCD_CG_RAM_HOME2; 			//0x7800 - 0x7FFF
	}else{			// ? 0
		GLCD_SetOffsetRegister(GLCD_CG_RAM_OFFSET1);
		cgram_home = GLCD_CG_RAM_HOME1;							//0x7000 - 0x77FF
	}
	// ? Karakter felső 8 Byte
	GLCD_WriteData2(cgram_home, T6963CMD_SET_ADDRESS_POINTER);		// destination address
	glcd_add = CGRM_ADDR;	// Addres P. CGRAMRA mutat
	// Karakter felső 8 Byte
	GLCD_WriteC_D(T6963CMD_SETDataAutoWRITE, GLCD_CMD, STATUSCHECK_MASK3);
	it = fonts_table.nCHR << 4;		// CHR num * 16
	for(i = 0; i < it - 8; i += 16){			//  source address -> nCHR*8-ig
		for(j = 0; j < 8; j++){	// CHR felső 8 Byte
			ib = fonts_table.table[i + j];
			GLCD_WriteC_D(ib, GLCD_DATA, WRCHECK_MASK8);
		}
	}
	GLCD_WriteC_D(T6963CMD_AUTORESET, GLCD_CMD, STATUSCHECK_MASK3);
	
	// Karakter alsó 8 Byte
	if (fonts_table.Height > 8){
		glcd_chr_vmode = 1;	// Character 16*8
		GLCD_WriteData2(cgram_home + CHR_SHIFT, T6963CMD_SET_ADDRESS_POINTER);		// destination address
		glcd_add = CGRM_ADDR;
		GLCD_WriteC_D(T6963CMD_SETDataAutoWRITE, GLCD_CMD, STATUSCHECK_MASK3);

		for(i = 8 ; i < it; i += 16){								// source address, nCHR*8+1024-ig.
			for(j = 0; j < 8; j++){					// CHR felső 8 Byte
				ib = fonts_table.table[i + j];
				GLCD_WriteC_D(ib, GLCD_DATA, WRCHECK_MASK8);
			}

		}
		GLCD_WriteC_D(T6963CMD_AUTORESET, GLCD_CMD, STATUSCHECK_MASK3);
	}
	if (display_mode < 10){	// Ha kel átállítja CGRAM használatára a kijelzőt
		display_mode += 10;          // Tároljuk Az aktuális display_mode sorszámot
		GLCD_DisplayMode(display_mode);		// CGRAM-ra vált
	}
}

Ezek lesznek a fenti képeken látható karakterek.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Kihasználva az előző képeknek készített tárterületet, bele húztam az egész aktuális project mappát.
http://www.4shared.com/folder/pA5MP9Lt/ ... oggle.html

(Alkalmanként majd frissítem az: scr könyvtár tartalmát)

Akit esetleg mégis érdekelne ez a téma, nézelődhet, ismerkedhet, akár ki is próbálhatja.

De vegye figyelembe, hogy a programírás mindig előrébb van, mint a tesztelés!
Mivel ez még nem kész, hanem fejlődő project.
(Az előkerülő hibák folyamatosan javítva.)
Ezért csak bemutató jelegű, semmi felelősséget nem vállalok a működéséről!

Kérdéseket, tanácsokat, ötleteket szívesen várom!

:)

(Közben észrevette, hogy a: ! -jel, alacsonyabb 1 sorral? ) 8O
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Találtam a Hobbi Elektronika oldalán, 1 kezdő Ismertetőt a témámhoz!
(Ez a kisebbik testvére az STM32F4DISCOVERY boardnak.)
De a működése és felépítése nagyon hasonló. Kevesebb kiegészítő HW körítéssel.

STM32 Discovery Kit programozása:
http://www.hobbielektronika.hu/cikkek/s ... .html?pg=1

Nagyon jó!
Az elejéről kezdi a Project építés ismertetését. (Remélem lesz folytatása!)
(Ezek alapján már lehet, hogy érthetőbb lesz az én ügyködésem is! Mivel én bizony belevágtam a sűrűjébe.)
:D
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Hi ImTilk!

Hátha tudod hasznát venni.

STM32F4 Adapter Board. Version 1. 16 Bites LCD
https://sites.google.com/site/miguelmor ... pter-board
http://www.element14.com/community/grou ... 2d-tft-lcd
8)
Válasz küldése