Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Ecran Easy TFT
NON c'est une fonction je peux ne tromper, en fonction du chronographe ca donne cela: JE SUIS SUR LA DATASHEET
Pour
write_cmd(0x01); //software reset
delay(5);
write_cmd(0x28); // display off
placer les données D0:D7->0x01
pin 38 CSX=0
pin 37 D/CX=0
pin 35 RD=1
pin 36 WR est équivalant de ENABLE sur les LCD c'est a dire a 1 pendant 15ns puis 0 pendant 15ns .je ne sais pas si tu peux mettre des NOP si oui tu places 4 nop
le delay(5)
D0:D7->0x28
CSX=0
D/CX=0
RD=1
WR=1
NOP
NOP
NOP
NOP
WR=0
NOP
NOP
NOP
NOP
Tu as tout cela en pages 13 du datasheet
viens de faire:
Software Reset
Display OFF
Tu fais pareil pour trouver les autres fonctions .Tu as tout pour faire la demo du datatsheet maintenant a toi de monter cela en C .
ATTENTIOn sur write_data ils sont sur 16 bits donc répéter l’opération
AMHA c'est tres formateur de ne pas travailler avec les LIB
A+
Pour
write_cmd(0x01); //software reset
delay(5);
write_cmd(0x28); // display off
placer les données D0:D7->0x01
pin 38 CSX=0
pin 37 D/CX=0
pin 35 RD=1
pin 36 WR est équivalant de ENABLE sur les LCD c'est a dire a 1 pendant 15ns puis 0 pendant 15ns .je ne sais pas si tu peux mettre des NOP si oui tu places 4 nop
le delay(5)
D0:D7->0x28
CSX=0
D/CX=0
RD=1
WR=1
NOP
NOP
NOP
NOP
WR=0
NOP
NOP
NOP
NOP
Tu as tout cela en pages 13 du datasheet
viens de faire:
Software Reset
Display OFF
Tu fais pareil pour trouver les autres fonctions .Tu as tout pour faire la demo du datatsheet maintenant a toi de monter cela en C .
ATTENTIOn sur write_data ils sont sur 16 bits donc répéter l’opération
AMHA c'est tres formateur de ne pas travailler avec les LIB
A+
Ecran Easy TFT
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Ok les LIB, je les ferais plus tard ! comme tu dis , c'est nickel pour apprendre .
Par contre je ne sais pas faire ta démarche, car je n'ai pas accés aux broches CSx et D/CX ?
En effet je dispose physiquement que des broches RD, WR , RS, CS et RST.
JE peux faire faires de NOP avec les codes asm .
J'ai mis en concordences toutes les broches physiquement et avec le soft ca donne ceci .
Par contre je ne sais pas faire ta démarche, car je n'ai pas accés aux broches CSx et D/CX ?
En effet je dispose physiquement que des broches RD, WR , RS, CS et RST.
JE peux faire faires de NOP avec les codes asm .
J'ai mis en concordences toutes les broches physiquement et avec le soft ca donne ceci .
Code : Tout sélectionner
// easy TFT connexions ----------------------------------------------
sbit TFT_RD at LATB0_bit;
sbit TFT_WR at LATB1_bit;
sbit TFT_RS at LATB2_bit;
sbit TFT_CS at LATB4_bit;
sbit TFT_RST at LATB5_bit;
char TFT_DataPort at PORTD; //donnée sur le PORTD de D0:D7
sbit TFT_RD_Direction at TRISB0_bit;
sbit TFT_WR_Direction at TRISB1_bit;
sbit TFT_RS_Direction at TRISB2_bit;
sbit TFT_CS_Direction at TRISB4_bit;
sbit TFT_RST_Direction at TRISB5_bit;
// End easy TFT connexions ----------------------------------------------
void main() {
ANSELB = 0; // Configure le PORTB en digital
ANSELD = 0; // Configure le PORTD en digital
while(1) {
TFT_CS=1 ;
TFT_RS=0 ;
TFT_RD= 1 ;
TFT_WR = 1 ;
asm {nop}
asm {nop}
asm {nop}
asm {nop}
TFT_WR = 0 ;
asm {nop}
asm {nop}
asm {nop}
asm {nop}
delay_ms(2000);
}
}
Ecran Easy TFT
Bonjour
jeremy ici http://www.mikroe.com/downloads/get/192 ... l_v101.pdf .Tu as le schéma et la correspondance en page 3
CN1:
LCD_RD pin1 correspond a :R/D
LCD_WR pin2 correspond a: WR
Dans ton code je ne vois pas le chargement de la donnée 0x1dans TFT_DataPort pour le rest dans D0:D7?
sinon c'est dans la bonne Voie tu viens ici de faire le rest, après a toi de rassembler cela dans des SPG puis dans des fonctions.
A+
jeremy ici http://www.mikroe.com/downloads/get/192 ... l_v101.pdf .Tu as le schéma et la correspondance en page 3
CN1:
LCD_RD pin1 correspond a :R/D
LCD_WR pin2 correspond a: WR
Dans ton code je ne vois pas le chargement de la donnée 0x1dans TFT_DataPort pour le rest dans D0:D7?
sinon c'est dans la bonne Voie tu viens ici de faire le rest, après a toi de rassembler cela dans des SPG puis dans des fonctions.
A+
Ecran Easy TFT
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour,
Ben oui mais je ne sais pas comment envoyer le (0x01) !
C'est ca mon grand probléme ? je ne sais pas sur quel BUS je dois dialoguer ? Si j'avais des broches SCLa SDA j'enverrai ça par I2C , ou des broches MISO/MOSI sur le SPI Mais la ???
Ça doit vous paraitre con je pense ,désolé !
Il faudrait réussir déjà avant d’écrire des pixels activé avec la commande display OFF et display ON . avant de vérifier que j'arrive à écrire dessus : Comme ça ,je me passe de toute la configuration pour le moment !
Dans ton code je ne vois pas le chargement de la donnée 0x1dans TFT_DataPort pour le rest dans D0:D7?
Ben oui mais je ne sais pas comment envoyer le (0x01) !
C'est ca mon grand probléme ? je ne sais pas sur quel BUS je dois dialoguer ? Si j'avais des broches SCLa SDA j'enverrai ça par I2C , ou des broches MISO/MOSI sur le SPI Mais la ???
Ça doit vous paraitre con je pense ,désolé !
Il faudrait réussir déjà avant d’écrire des pixels activé avec la commande display OFF et display ON . avant de vérifier que j'arrive à écrire dessus : Comme ça ,je me passe de toute la configuration pour le moment !
Ecran Easy TFT
Ecran Easy TFT
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
J'ai peut être compris ce que tu voulais dire .
Ça donnerais ceci :
je ferais les focntions plus tard! pense tu que le cheminement serait bon ?
Je met mon PORT D a la bonne valeur que je souhaite envoyer . Par exemple un reset qui correspond au code 0x01 . Donc je met 0x01 sur mon PORTD.
Ensuite j'active l'ecran sur le BUS en mettant la pin_CS à 0 .
Ensuite je dois choisir un registre pour savoir si c'est une commande ou une donnée ? La je sais pas a quoi correspond 1 ou 0 , Data ou commande .
et la partie la plus délicate a comprendre .
Je dois envoyer une impulsion de 15ns sur le brcohe WR pour ecrire ma donnée ?
Ça donnerais ceci :
Code : Tout sélectionner
// easy TFT connexions ----------------------------------------------
sbit TFT_RD at LATB0_bit;
sbit TFT_WR at LATB1_bit;
sbit TFT_RS at LATB2_bit;
sbit TFT_CS at LATB4_bit;
sbit TFT_RST at LATB5_bit;
char TFT_DataPort at PORTD; //donnée sur le PORTD de D0:D7
sbit TFT_RD_Direction at TRISB0_bit;
sbit TFT_WR_Direction at TRISB1_bit;
sbit TFT_RS_Direction at TRISB2_bit;
sbit TFT_CS_Direction at TRISB4_bit;
sbit TFT_RST_Direction at TRISB5_bit;
// End easy TFT connexions ----------------------------------------------
void main() {
ANSELB = 0; // Configure le PORTB en digital
ANSELD = 0; // Configure le PORTD en digital
while(1) {
TFT_DataPort = 0x01; // Met la valeur sur le PORTD (0x01= RESET)
TFT_CS=0 ; // Chip select , actif à l'etat bas
TFT_RS=0 ; // Register Select, a determiner ????
TFT_WR = 1 ; // Actif la broche WR pendant 15ns
asm {nop}
asm {nop}
asm {nop}
asm {nop}
TFT_WR = 0 ; // Désactive la Pin WR, pour ercire la valeur du PORTD sur dans le registre
asm {nop}
asm {nop}
asm {nop}
asm {nop}
delay_ms(2000);
}
}
je ferais les focntions plus tard! pense tu que le cheminement serait bon ?
Je met mon PORT D a la bonne valeur que je souhaite envoyer . Par exemple un reset qui correspond au code 0x01 . Donc je met 0x01 sur mon PORTD.
Ensuite j'active l'ecran sur le BUS en mettant la pin_CS à 0 .
Ensuite je dois choisir un registre pour savoir si c'est une commande ou une donnée ? La je sais pas a quoi correspond 1 ou 0 , Data ou commande .
et la partie la plus délicate a comprendre .
Je dois envoyer une impulsion de 15ns sur le brcohe WR pour ecrire ma donnée ?
Ecran Easy TFT
Ecran Easy TFT
Je reprends le WR et RD car j'ai dis une connerie OUPS
C'est pas WR=1 nop WR=0 nop mais:
WR=0 nop WR=1 NOP
Avec tes 4 nop a 20Mhz tu es tres largement dans les clous donc pas dAvec tes 4 nop a 20Mhz tu es tres largement dans les clous donc pas de problème cote tempoe problème cote tempo
Le contenue de D0:D7 est validé par:
lorsque tu es en ecriture c'est WR avec RD=1
lorsque tu es en lecture c'est RD avec WR=1
cette validation ce passe voir le chronographe page 12
pour WR : WR=0 WR=1 avec un temps bas et temps haut d'un MINI de 15ns
pour RD: RD=0 RD=1 avec temps bas 355ns et temps haut 90ns au MINI
désole pour cette inversion
C'est pas WR=1 nop WR=0 nop mais:
WR=0 nop WR=1 NOP
Avec tes 4 nop a 20Mhz tu es tres largement dans les clous donc pas dAvec tes 4 nop a 20Mhz tu es tres largement dans les clous donc pas de problème cote tempoe problème cote tempo
Le contenue de D0:D7 est validé par:
lorsque tu es en ecriture c'est WR avec RD=1
lorsque tu es en lecture c'est RD avec WR=1
cette validation ce passe voir le chronographe page 12
pour WR : WR=0 WR=1 avec un temps bas et temps haut d'un MINI de 15ns
pour RD: RD=0 RD=1 avec temps bas 355ns et temps haut 90ns au MINI
désole pour cette inversion
Ecran Easy TFT
Je reprends le WR et RD car j'ai dis une connerie OUPS
C'est pas WR=1 nop WR=0 nop mais:
WR=0 nop WR=1 NOP
Le contenue de D0:D7 est validé par:
Lorsque tu es en ecriture c'est WR avec RD=1
Lorsque tu es en lecture c'est RD avec WR=1
cette validation ce passe voir le chronographe page 12
pour WR : WR=0 WR=1 avec un temps bas et temps haut d'un MINI de 15ns
pour RD: RD=0 RD=1 avec temps bas 355ns et temps haut 90ns au MINI
désole pour cette inversion
C'est pas WR=1 nop WR=0 nop mais:
WR=0 nop WR=1 NOP
Le contenue de D0:D7 est validé par:
Lorsque tu es en ecriture c'est WR avec RD=1
Lorsque tu es en lecture c'est RD avec WR=1
cette validation ce passe voir le chronographe page 12
pour WR : WR=0 WR=1 avec un temps bas et temps haut d'un MINI de 15ns
pour RD: RD=0 RD=1 avec temps bas 355ns et temps haut 90ns au MINI
désole pour cette inversion
Ecran Easy TFT
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
J'ai planché aussi sur le Probléme . J'ai reussis je pense à eclaircir plusieurs points pour ma part ! . Tiens ce n'est pas évident de jongler entre la DS du MODULE Easy TFT + la ds du MI0283QT-9 + celle du driver ILI9341 .
Le nom des Broches change a chaque fois lol .
Pour remettre tout dans le bon ordre, je recapépéte :
-Broches RS sur l'écran = Registrer Select = choix d’écrire donnée ou data = broche 37 D/CX (SCL) du module ===> d’après la DS du ILI9341 1=Data, 0=Command
-La broche CS = Chip select , doit être mis à 0 , pour activer l'écran.
- Les broches RD et WR me servent en quelques sortes a acquitter l'information des broches que forme le PORTD .
Comme j'ai pas besoin de lire l'écran ( pas d'utilisation du tactile pour le moment), je n'utiliserai que l’écriture .
Il faut que j'utilise un front sur WR . Pour être certain du timing je ferais une pause de 1µs pendant les phases de tests .
Ce soir afin de valider nos réflexions communes , j'essayerais de faire activer l’écran et le désactiver . Si j'arrive à faire ça c'est gagné :
Les commandes à envoyer sont :
Le nom des Broches change a chaque fois lol .
Pour remettre tout dans le bon ordre, je recapépéte :
-Broches RS sur l'écran = Registrer Select = choix d’écrire donnée ou data = broche 37 D/CX (SCL) du module ===> d’après la DS du ILI9341 1=Data, 0=Command
-La broche CS = Chip select , doit être mis à 0 , pour activer l'écran.
- Les broches RD et WR me servent en quelques sortes a acquitter l'information des broches que forme le PORTD .
Comme j'ai pas besoin de lire l'écran ( pas d'utilisation du tactile pour le moment), je n'utiliserai que l’écriture .
Il faut que j'utilise un front sur WR . Pour être certain du timing je ferais une pause de 1µs pendant les phases de tests .
Ce soir afin de valider nos réflexions communes , j'essayerais de faire activer l’écran et le désactiver . Si j'arrive à faire ça c'est gagné :
Les commandes à envoyer sont :
Code : Tout sélectionner
// easy TFT connexions ----------------------------------------------
sbit TFT_RD at LATB0_bit;
sbit TFT_WR at LATB1_bit;
sbit TFT_RS at LATB2_bit;
sbit TFT_CS at LATB4_bit;
sbit TFT_RST at LATB5_bit;
char TFT_DataPort at PORTD; //donnée sur le PORTD de D0:D7
sbit TFT_RD_Direction at TRISB0_bit;
sbit TFT_WR_Direction at TRISB1_bit;
sbit TFT_RS_Direction at TRISB2_bit;
sbit TFT_CS_Direction at TRISB4_bit;
sbit TFT_RST_Direction at TRISB5_bit;
// End easy TFT connexions ----------------------------------------------
void main() {
ANSELB = 0; // Configure le PORTB en digital
ANSELD = 0; // Configure le PORTD en digital
while(1) {
TFT_DataPort (0x28); // Met la valeur sur le PORTD (0x28= Display off)
TFT_CS=0 ; // Chip select , actif à l'etat bas
TFT_RS=0 ; // Register Select, 1=Data, 0=Command
TFT_RD=1;
TFT_WR = 0 ; // Broche à l'état bas pendant 1µs
delay_us(1);
TFT_WR = 0 ; // // Broche à l'état haut pendant 1µs
delay_us(1);
delay_ms(2000);
TFT_DataPort (0x29); // Met la valeur sur le PORTD (0x29= Display on)
TFT_CS=0 ; // Chip select , actif à l'etat bas
TFT_RS=0 ; // Register Select, 1=Data, 0=Command
TFT_RD=1;
TFT_WR = 0 ; // Broche à l'état bas pendant 1µs
delay_us(1);
TFT_WR = 0 ; // // Broche à l'état haut pendant 1µs
delay_us(1);
delay_ms(2000);
}
}
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 47 invités