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 ---
Forum général sur le langage C !

Modérateur : Jérémy

OLED GC9A01 et SPI Hardw 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » jeu. 9 mars 2023 09:43

Bonjour à tous,


Apres avoir testé avec succes mes 2 ecrans OLED GCA901 ( modele Bleu et modele Rouge)
avec la version ASM de François77 / tempsX
et testé aussi mon écran Rouge avec un ESP32 Wromm DevkitV1 .. super rapide .. SPI 10MHz .. test grafiques.. OK

je galere avec mon 18F27K42
Je n'avais jusqu'alors qu'utilisé l' I2C ... et le SPI bit bang pour lecture Touch screen ILI9341
Je tiens absolument à utiliser le SPI Hardware .. ce qui explique cet acharnement.
En commençant avec MikroC , dont l'aproche SPI Hardware est (apparement) plus facile .

voila la partie "Init Oled" vue avec mon SQA analyser ( SPI à 125Khz)
RST=1
CS=1
SQA_Init_CGA9A01_SPI_HW_MC_2023-0307.jpg


code en cours ...
PIC18F27K42_UART1_ADC_SPI_LCD_Rond_CGA9A01_2023-0307.zip


Nota:
sur le chronogramme

:!!: le SPI clock est permanent !
le choix Data Commande se ferait sur le 1er front montant de SCLK puis la lecture bit data sur le front descendant ?
La datasheet du GC9A01 est pas tres claire ....
D'autre part , sur ma version ESP32 .. le bit CS reste tout le temps à 1
ou alors c'est mon analyser qui m...de
L'init de CS doit etre CS=1 .. CS=0 front descendant puis retour à 1
à chaque envoi de commande ou data ?

...............à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

OLED GC9A01 et SPI Hardw 18F27K42
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#2 Message par francois77 » jeu. 9 mars 2023 11:42

Paul,

init matériel

bsf LCD_CS ; Autorisation ecriture LCD
bsf LCD_RST ; Reset LCD
Temp_ms 250 ;
bcf LCD_RST ;
Temp_ms 20 ;
bsf LCD_RST ;
Temp_ms 20 ;
bcf LCD_CS ;

Apres CS peut rester a 0 en permanence

CS sert uniquement à sélectionner le module a piloter

Dans mon programme, je suis partie sur la gestion d'un seul module en SPI , voir mon programme

en fin de programme je repasse CS a 1 , mais c'est inutile

Si tu utilise 2 écrans avec un pilotage séparé, tu peux sélectionner l'écran par CS

A+
Francois

OLED GC9A01 et SPI Hardw 18F27K42
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#3 Message par francois77 » jeu. 9 mars 2023 11:50

Paul,

Ta séquence d'init est déjà différente de la mienne (manque le tempo de 20ms + RST )

_RST=0;
Delay_ms(250);
//power init
_CS=1;
_RST=1;
Delay_ms(120);
_CS=0;

SendCmd(GC9A01A_SWRESET); // software reset
Delay_ms(150);
SQA_Trigger=1;

et tu met beaucoup de commande qui sont inutile a mon avis

Regarde mon programme, j'ai balisé les commandes inutiles

SQA_Trigger=1; c'est quoi ?


A+
Francois

OLED GC9A01 et SPI Hardw 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#4 Message par paulfjujo » jeu. 9 mars 2023 16:29

entre temps (sans X) j'avais rectifié
//power init
_CS=1;
_RST=1;
Delay_ms(250);
_RST=0;
Delay_ms(20);
_RST=1;
Delay_ms(20);
_CS=0;


SQA_Trigger=1
c'est une sortie sur RA3 pour declencher la capture des signaux SPI sur mon " logic Analyser SQA"

ce matin ,j'ai adapté la version ASM à mon 18F27K42, donc en SPI bit bang sur le port B
tout est OK , sauf la partie message ? .. donc inhibée ici

Code : Tout sélectionner

 ;  Zone_XY_Police 10,20,POLICE1,NOIR,VERT  ; x,y,police,texte,fond 
  
;  Tableau Message_1        ;
  ;  call    Ecrit_Chaine    ;
  ;  call    Tempo_1s


.....en SPI Hardware je suis sur le Port C

J'ai fait aussi une capture analyser , en mode ASM
PIC à FOSC 64Mhz -> FOSC/4 > 64/4=16MHz 1 cycle =0,0625µS soit 62.5nS
Mesure Freq. SPI 1,47MHz
SPI clock à 1 pendant 62,5nS seulement , puis à 0 pendant 680nS
data présente 62,5ns AVANT le Clock et pendant > 680nS

SQA_Init_CGA9A01_SPI_bit_bang_ASM_2023-0309.jpg


zoom
SQA_CGA9A01_SPI_bit_bang_ASM_2023-0309.jpg



La grosse difference est que le sclk SPI Hardware est un signal carré !
.. issu de FOSC/64 (speed=1Mhz) ou FOSC/16 (Speed=4Mhz) ou de MFINTOSC 500Khz speed=125Khz
....

j'ai inclus le choix SPI Bit_bang ou Hardware ..
avec un Oled sur portB et un autre sur port C pour tester les 2 modes soft bit_bang ou Hardware

Code : Tout sélectionner



#ifdef SPI_Bit_Bang
void  SendData (unsigned char Val)
{
 unsigned char i,cx;
    cx=Val;
  //  _CS=0;
    _DC=1;
     for(i=0;i<8;i++)
     {    
      if
((cx&0x80)==0x80)
       _MOSI=1;
       else
      _MOSI
=0;
         _CLOCK=1; _CLOCK=0;
        cx=cx<<1;
     }
}


void SendCmd(unsigned char value)
{
 unsigned char i,cx;
    cx=value;
  //  _CS=0;
    _DC=0;
    for(i=0;i<8;i++)
     {   if((cx&0x80)==0x80)
          _MOSI=1;  
           else 
           _MOSI
=0;
         _CLOCK=1; _CLOCK=0;
        cx=cx<<1;
     }
    //       _CS=1;
}
#else
// SPI Hardware
void SendCmd(Byte c)
{
    _DC=0; //  _RS  LATC1_bit   //Command =>_DC=0    data =>  _DC=1
    SPI1_Write(c);
}

void SendData(Byte c)
 {
   _DC=1;
   SPI1_Write(c);

}
#endif








en mode Bit_bang j'affiche des rectangles ... ça progresse ...

..à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

OLED GC9A01 et SPI Hardw 18F27K42
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#5 Message par francois77 » jeu. 9 mars 2023 17:07

:bravo: , le plus dur est fait

En conclusion les 2 mode SPI sont identique vu de la vitesse, mais diffèrent par leur rapport cyclique ?

A+
Francois

OLED GC9A01 et SPI Hardw 18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#6 Message par Temps-x » jeu. 9 mars 2023 21:54

Bonsoir paulfjujo, francois77, et tout le forum,

paulfjujo a écrit :Source du message ce matin ,j'ai adapté la version ASM à mon 18F27K42, donc en SPI bit bang sur le port B
tout est OK , sauf la partie message ? .. donc inhibée ici


C'est à causse de la gestion de la mémoire Ram de ce Pic18F27K42 qui est différente par rapport à un Pic18F26K22, ou tu n'auras pas de problème.

:-D Depuis le Temps-(x) que je le dis....

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

OLED GC9A01 et SPI Hardw 18F27K42
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#7 Message par francois77 » ven. 10 mars 2023 08:30

Bonjour Paul, Temps-x et tous le forum

Pour la partie texte, je pense plutôt aux adresses des données des polices qui sont sur plusieurs bank
Suffit a mon avis de redonner des adresses compatibles , mais bon je ne suis pas un expert

A+
Francois

OLED GC9A01 et SPI Hardw 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » dim. 12 mars 2023 09:40

bonjour à tous ,

J'ai bien avancé ( mais coté MikroC et SPI bit bang seulement)
Quasiment 90% des fonctions de l'ILI9341 tournent .. OK rectangle plein, cercle s, textes de plusieurs tailles...


sur terminal YAT :

Code : Tout sélectionner



 Presentation 

 
Directory :C:\_MikroC\_MesProjets_MikroC\_LCD_ILLI9341_SPI_Base_18F27K42
 MikroC pro 7.60 
 Projet 
PIC18F27K42_UART1_ADC_SPI_LCD_Rond_CGA9A01_2023.mcppi
 BASE PIC18F27K42  SPI1 HardW
at 1Mhz  ou Bit Bang 1.4MHz 
 Config bit 
:  P18F27K42_Fosc_Interne_64Mhz_w_Heap2500.cfgsch FOSC16x4 =64.0 MHz
 Source 
:  PIC18F27K42_UART1_ADC_SPI_LCD_Rond_CGA9A01__2023-0311.c
 18F27K42 UART1
ADC,  LCD rond CGA901 en SPI
 
 OTHERS  TFT_CG9A01_SPI_2023
.h
 TFT_CG9A01_SPI_2023
.c
 TFT_Fonts_320x240_ILI9341_2020_11
.h

 Init Memory Manager 
 Total RAM Free 
=       2410
 Taille Maxi Heap  
=       2410

 fin d
'init LCD

 LCD maxX=   239  maxY=   239
 Max RAM Buffer into the Lcd  =     76800
 SetBackgroundColor(COLOR_BLACK)
 Clear_LCD()
 Put 4 Big Pixels Vert 2x2 
 Put 4 Pixels
 Put 4 Big Pixels Orange 
 Clear_LCD()
 Rectangle_Plein 1,1,238,238,COLOR_BLACK
 puis carre avec couleur Verte 
 Rectangle_Plein x1=40 y1=60  x2=60  y2=120 Bleu 
 Rectangle_Plein x1=60 y1=60  x2=80  y2=120 Blanc 
 Rectangle_Plein x1=80 y1=60 x2=100 y2=120 Rouge
 Rectangle_Plein x1=120 y1=120 x2=130 y2=130 Jaune
 Rectangle x1=40 y1=30 x2=90 y2=80 Indigo
 Rectangle x1=160 y1=160 x2=200 y2=180 Indigo

 Efface ecran (Noir)
 Fonte active #1
 Taille Font  TerminaL6x8 =   677
 Param Font :
 cfont.width=   6 , cfont.height=   8 , cfont.nbrows=   1 , cfont.MaxC=  40
 Ecritures sur LCD
 Presentation YELLOW
LCD GC9A101 240x240 65K c WHITE
ABCDEFGHIJKLMNOPQRSTUVWXYZ
 Close Font TerminaL6x8
 Efface ecran (Noir)
 
 Fonte active #2
 Taille Font  TerminaL12x16 =  2405
 Param Font :
 cfont.width=  12 , cfont.height=  16 , cfont.nbrows=   2 , cfont.MaxC=  18

 Close Font TerminaL12x16
 Efface ecran (Noir)
 Fonte active #3
 Taille Font  Trebuchet_MS13x21=  1045
 Param Font :
 cfont.width=  13 , cfont.height=  21 , cfont.nbrows=   3 , cfont.MaxC=  17
 Close Font Trebuchet_MS13x21
 
 DrawCircle 120,120,40, COLOR_TURQUOISE
 DrawCircle 120,120,60, COLOR_INDIGO
 DrawCircle 120,120,80, COLOR_ORANGE
 FillCircle 120,120,20, COLOR_YELLOW




reste un bug sur DrawLine ... (apparait sur donc aussi sur Cercle plein)
Je posterais le code complet ici des que ce sera résolu..

la suite ..sous XC8 !
Aide toi, le ciel ou FantasPic t'aidera

OLED GC9A01 et SPI Hardw 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#9 Message par paulfjujo » lun. 13 mars 2023 18:07

Test final avec la version MikroC SPI bit bang 18F27K42
tout est OK ..
_18F27K42_OLED_rond_GC9A01_SPI_BitBang_MC_20230313.zip


video ICI

OLED_CG9A01_18F27K42_SPI_BB_MC_Test_2023-0312.jpg



next en XC8 ....
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

OLED GC9A01 et SPI Hardw 18F27K42
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#10 Message par francois77 » lun. 13 mars 2023 19:40

Bonjour Paul,

Bravo pour cette réalisation

A+

Francois


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 28 invités