Re: PI7C9X760
Sujet : Re: PI7C9X760
De : JKB (at) *nospam* hilbert.invalid (JKB)
Groupes : fr.sci.electroniqueDate : 02. May 2023, 18:31:39
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <645148fb$0$25945$426a74cc@news.free.fr>
References : 1
User-Agent : slrn/1.0.3 (Linux)
Bonsoir,
Je me réponds à moi-même.
Le PI7C9X760 semble être à la tension minimale d'alimentation près
un SC16IS760 de NXP (la version NXP demande 2,5V là où celle de
Pericom demande 1,8V).
J'ai téléchargé la doc de NXP qui est autrement mieux fichue est
j'ai enfin réussi à obtenir quelque chose sur le port de sortie.
La configuration est maintenant la suivante :
void
pi7c9x760_init()
{
// CTS : input
// RTS : output
// DTR : output (GPIO 5)
// DSR : input (GPIO 4)
// RI : input (GPIO 7)
// CD : input (GPIO 6)
// 115200, 8N1
// Diviseur 8
// Sample rate 26 (16 - SCR + CPRN)
// SCR vaut par défaut 0.
// CPR accessible par LCR==0xBF et SFR[2]==1
pi7c9x760_write(0x03, 0xBF); // LCR
pi7c9x760_write(0x0D, 0x5A); // SFREN
pi7c9x760_write(0x07, 0x04); // SFR
pi7c9x760_write(0x04, 0x1A); // CPR
pi7c9x760_write(0x09, 0x06); // TX/RX Control Register
pi7c9x760_write(0x07, 0x00); // SFR
pi7c9x760_write(0x03, 0x80); // LCR : divisor latch enable
// DLH et DLL accessibles parce que LCR[7]==1 et LCR!=0xBF
// Diviseur 8
pi7c9x760_write(0x01, 0x00); // DLH
pi7c9x760_write(0x00, 0x08); // DLL
// Access EFR register
pi7c9x760_write(0x03, 0xBF); // LCR
pi7c9x760_write(0x02, 0x01); // EFR
// 8N1
pi7c9x760_write(0x03, 0x03); // LCR
// FIFO
pi7c9x760_write(0x02, 0x67); // FCR
// Interruptions
pi7c9x760_write(0x01, 0x03); // IER: TX/RX data ready irqs
return;
}
Les routines de lecture et d'écriture sont toujours les mêmes. Je
lis toujours correctement les contenus des registres.
Dans une routine, j'essaie maintenant d'envoyer des caractères
ASCII sur le port série et j'obtiens :
2023-05-02 19:25:14.406852:
E8 E9 E9 E8 E8 EB E9 E8 EA EB EB EA EA EB EB EC
EC ED ED EC EE EF EF EE EC
2023-05-02 19:25:15.718416:
E8 E9 E9 E8 EA EB E9 EA EA E9 E9 EA EA EB EB EC
EC ED ED EC EC ED ED EC EE
2023-05-02 19:25:17.014097:
E8 E9 E9 E8 E8 E9 EB EA E8 EB EB EA EA EB EB EC
EC ED ED EE EC ED ED EC EE
2023-05-02 19:25:18.309762:
E8 E9 E9 EA E8 E9 EB E8 EA EB E9 EA EA EB EB EC
EC ED ED EC EC ED ED EE EE
2023-05-02 19:25:19.621330:
E8 E9 E9 EA E8 E9 E9 E8 EA E9 EB EA EA EB EB EC
EC ED ED EE EC EF ED EC EE
2023-05-02 19:25:20.916976:
E8 E9 E9 E8 EA E9 E9 EA EA E9 EB EA EA EB EB EC
EC ED ED EC EC EF ED EE EE
2023-05-02 19:25:22.228530:
E8 E9 E9 E8 E8 E9 E9 E8 E8 EB E9 EA EA EB EB EC
EC ED ED EC EC EF ED EC EC
Là, j'obtiens bien mes 25 caractères. Sauf que... je tente d'envoyer
ceci :
for(i = 'A'; i < 'Z'; i++)
{
pi7c9x760_write(0x00, i);
}
La vitesse sur le port semble donc être la bonne. LSR vaut $60, donc
FIFO data error et THR et TSR vides.
Pourquoi FIFO error ? Je suppose que c'est ce qui explique la non
répétabilité des données transmises.
Je suis preneur de toute idée,
JKB
--
Si votre demande me parvient en code 29, je vous titiouillerai volontiers
une réponse.
Haut de la page
Les messages affichés proviennent d'usenet.
NewsPortal