V.O. 27/10/2014
Last update 08/05/2022

RS232 et Micro Controleur Unit (M.C.U.)

- Chronogramme UART
-
Interface Uart TTL 5V / RS232 avec MAX232
-
Interface Uart TTL / RS232 avec DS275 (sans condensateurs!)
-
Interface Uart TTL / RS232 avec 2 transistors (PNP +NPN)
-
Interface Uart 3,3V / RS232 avec MAX3222
-
ATTENTION effet miroir Pins connecteurs DB9 M ou F
-
Interface USB / RS232 DB9M avec TU-S9
-
Interface Cable Prolific USB - niveaux TTL 5V 4 pins (Driver)
-
Interface Cable USB - niveaux LTTL 3,3V 6 pins (Driver)
-
Interface Module CH340G HW-597 USB - niveaux LTTL 3,3V
-
Interface CH340G ,Version miniature (2022)
-
Terminal via Pickit2 pins ICSP , SANS interface TTL/RS232

-
Gestion du Controle de Flux Hardware avec signal CTS sur interface MAX232
...
exemple avec programmateur AT89C2051
-
Gestion du Controle de Flux Software XON -XOFF

-
Interface Uart TTL / Ethernet via XPORT

-
Terminal VBRAY et usage de la fonction GRAPH
-
UART #3 ( ASM bit bang & MikroC) 38400 Bauds ,TX sur une sortie XX et Rx sur RB0

- Lien sur RS232 -> feuille Excel
-
Excel 97 , WIN10, recup Datas PIC via RSCom.DLL (Port COM<10) !
- Excel 97 , WIN10 Test COM13 avec MScomm32.OCX (COM port>10 ..OK)



Interface RS232 avec circuit MAX232

un coup de google pour avoir moult exemples ..
J'ai renoncé à l'utiliser , car :
-encombrant (DIP 14)
-assez cher,
-necessite des condensateurs..s
MAIS c'est une interface complete !

Schematic connections

images/MAX232_Pinout.jpg images/t_MAX232_MS_Pinout.gif
Le classique Max232 .. Attention , Avec Variantes ! Mai 1986 docu Micro systeme ..30 ans deja !

Attention aux variantes , aux ploarites et valeurs de condensateurs
Docu en pdf du MAX232 de Micro-Systeme







Gestion du controle de Flux , sur la liaison de type "RS232"

*Gerer le controle de Flux Hardware via le protocole RTS/CTS
Montage particulier :


2 lignes supplementaires (Hardware) de commande sont necessaires
Le Client peut gerer le flux de transfert à sa convenance en gérant ces 2 lignes.
On traitera ici que le cas CTS .
Si le MCU , client du Terminal Host PC , veut interdire,stoper l'envoi de data , il met cette ligne au niveau 1
CTS=1 bloque l'envoi du Terminal vers le MCU
donc CTS=0 l'autorise .
Il faut donc affecter une Sortie MCU supplementaire ,pour generer ce signal CTS , ici avec RC4 ( RC6=TX UART1, RC7=RX UART1)
Le programme coté MCU, gere le flot , signale au Maitre (ex : PC computeur) qu'il est pret à recevoir des donnée ..
signale au maitre d'attendre ..etc..
Le MCU peut etre alors sûr d'etre PRÊT pour receveoir le flot de datas.
On peut gerer ainsi l'envoi d'un gros fichier de donnéees , par petit paquets , digérés progressivement par le MCU.
Celui ci n'ayant pas assez de RAM buffer pour stocker l'integralité du fichier .
La ligne CTS étant au niveau TTL ou LTTL, il faut un convertisseur de niveau : Le MAX232 (TTL) ou MAX3232 (LTTL)
For heureusement le MAX232 a 2 canaux de dialogue . le 1er Canal , classique pour TX et RX .
Le 2em canal servira pour RTS et CTS.




../_AT89C2051/images/Interface_TTL_RS232_ICL232.jpg

La liaison , sortie MAX232 au niveau RS232 (+-12V) etant sur une DB9 F,
on peut utiliser un cordon convertisseur RS232 DB9
TREND TUS9 vers USB

MAX232 (recupeé sur ma carte DDS 16F628) -> TREND TUS9
pin 9 RC5 RTS <--- 3 DB9F
pin 10 RC4 CTS ---> 8 DB9F
pin 11 RC6 TX ---> 2 DB9F
pin 12 RC7 RX <--- 3 DB9F
Gnd ----------------------- 5 DB9F

... Ou alors un cordon FT232R / USB comportant toutes les lignes : avec 6 pins
Un cordon Prolific 4 Pin ne conviendra pas !
example de cordon :



Bien verifier si le cordon est en TTL 5V ou LTTL 3,3V !

Cordon FT232R LTTL 3,3V / USB
1 back GND
2 blue CTS
3 Magenta VCC 5V ???
4 Vert Clavier <--- data TXD
5 Blanc data ---> Ecran RX
6 Jaune RTS

Liens sur application , avec gestion CTS
Programmateur AT89C2051
Chargement d'un fichier de 15616 données dans une 24LC256





*Gerer le controle de Flux en SOFTWARE via le protocole XON/XOFF

Pas de Hardware supplementaire.
Coté PC , on utilise le protocole XON/XOFF ou STX/ETX
Pour recevoir un gros fichier Texte par exemple
On peut dans l'interrupt UART1 RX ,
à tou moment ,suivant les conditions prevues dans Notre programme, de stopper le flux d'envoi
des datas par le PC, en lui envoyant XOFF.
Le PC reconnaisant ce protocole Stoppe l'envoi ,se met en attente de recevoir un XON pour conntinuer
Le MCU a donc tout le temps necessaire pour inurgitersoit tout le ficher,
soit d ' analyer chaque ligne de celui ci , si par exemple on a un <CR> en fn de ligne (ou autre condition)
soit de le stocker en RAM ou EEPROM ou SDCARD..


avec Terminal VBRAY :

images/t_Terminal_VBray_use_XON_XOFF.gif *****GCODE****
Text test
Z10
X10 Y10 Z10 1
X10 Y10 Z1 2
X10 Y10 Z0 3
X70 Y10 Z0 4
X70 Y70 Z0 5
X10 Y70 Z0 6
X10 Y10 Z0 7
X10 Y10 Z10 8
X10 Y0 Z10 9
X10 Y0 Z1 10
X10 Y0 Z0 11
X80 Y0 Z0 12
X80 Y80 Z0 13
X0 Y80 Z0 14
X0 Y0 Z0 15
X10 Y0 Z0 16
X10 Y0 Z10 FIN
Terminal Vbray Protocole XON/XOFF  


Resultat :


exemple avec la reception d'un fichier pour CNC en GCODE .



La reception UART est traitée via interruption ..

Un flag est levé des la reception d'un CR (0x0D) , qui correspond à la fin d'une ligne de GCode
et aussitot , dans l'interrupt, j' envoie un XOFF pour stopper, suspendre le flux d'envoi .
Dans la boucle principale on à tout le temps necessaire pour traiter cette ligne de Gcode, ici je ne fais que l'afficher
et rearme l'envoi (la suite) du fichier , en envoyant un XON au terminal
et ainsi de suite ,
on recupere chaque ligne du GCode .
puis à la fin d'envoi du fichier
la tache principale (de fond) retourne à son etat de latence :
afficher la mesure analogique
j'ai rajouté en fin de ligne un index numerique , uniquement pour faciliter le reperage sur le terminal .
des l'appui sur la touche SEND , celui ci est envoyé ..

Software de Test :

MikroC 7.50



Nota:
on peut aussi utiliser :
YAT Terminal en mode XON XOFF , ou
TERATERM terminal
mais on ne peut definir le mode XON/XOFF qu'une fois la communication etablie! via menu Setup/Serial port
Fort heureusement , le mode est ensuite memorisé dans le fichier Teraterm.ini






Interface RS232 avec circuit DALLAS DS275

Super simple et pratique !
mais Tres Cher ! et difficile à trouver maintenant en DIP8
fonctionne tres bien avec Vieux PC et RS232 haut niveaux (+-12V) et aussi avec PC Portables.
Attention : Piege à ion , si inversion Emission Reception on reste bouclé.
Donc le test de ligne en reliant 1 et 3 n'est pas forcement concluant, lors d'une recherche de probleme.
Bien verifier la concordance des pins SEPAREMENT, lien emission, puis lien reception..

images/DS275a.jpg
datasheet ici




Interface RS232 avec 2 transistors

Le moins cher ! car le plus souvant à base de recup. de composants
Remplace le DS275 dans mes applis...
Testé OK jusqu'à 56K bauds .(en mode 3 fils !)
avec une Longueur entre carte et PC < 1.5M
Inconvenient : prends plus de place !

images/Interf_RS232_2T.jpg images/DS275_like_rev1a.jpg images/DS275_like_rev1.jpg
Interface TTL-RS232 simple avec 2 transistors C.I. (c) Christian BERNARD C.I.

sujet à controverse pour les puristes : : http://www.abcelectronique.com/forum/showthread.php?t=82581
Ce montage ne satisfait nullement la norme RS232 , reste à savoir s'il faut etre ou non à la norme stricte
pour fonctionner à 1 ou 2M de distance.
Circuit realisé avec 1 BC347 NPN et 1 BC558 PNP, testé OK à 19200bauds avec alim 3,3V (au lieu de 5V).
Toujours est-il qu'il fonctionne meme mieux que le module Max RPC cité ci-dessus (rappel : utilisé avec Longueur de cable <1.5M)
rev Mai 2014

images/Interface_RS232_2T_140504.jpg images/Interface_RS232_2T_140504a.jpg
Realisation circuit interface in situ



Module Interface LTTL<-> RS232 avec MAX3222

Module acheté chez MiniInTheBox (RPC)
De gros doutes de fonctionnement au fil du temps .. semble se bloquer apres plusieurs heures
lorsqu'il est alimenté en 5V ..au lieu de 3,3V
Sinon tres pratiques pour les tests

docu: MAX3232_22_41.pdf

images/MAX3222_3232_Pinout.jpg images/max232_conex.gif
MAX3222 3.0 V to 5.5V ?, Low-Power,
up to 1Mbps, True RS-232 Transceivers Using Four 0.1µF Ext.Cap
detail connection au MCU PIC

Le fameux module !
Equipé du MAX3222

../_18FxxKxx/images/t_RS232_module_3_3V_130505.jpg
lien sur module 4.59€ made in RPC module in situ

Tolerant niveaux 5V* douteux! ,si alimenté en5V, car bloquages intempestifs .. j'ai laissé tombé au profit des cables USB/TTL
sinon niveau 3,3 si alimenté en 3,3V



ATTENTION au piege , numérotation des Pins : effet MIROIR, entre DB9 Male et DB9 femelle







Interface TUS9 USB<-> RS232 DB9M

Achat d'un convertisseur USB<->RS232 dans une grande surface (19€ chez Carrouf)
Modification d'une limande de raccordement RS232 sur carte mere de PC .. on en trouve maintenant à foison!
Le DB9 Male doit etre remplacé par un DB9 Femelle, puisque le convertisseur sort sur un DB9 Male.
La nappe peut coulisser pour recuperer les 3 connections TX sur 2 , RX sur 3 et 0V sur 5.
Installer le driver (CD Trendnet TU-S9) fournit avec le convertisseur sur le PC.
Une fois le driver USB reconnu on peut le voir apparaitre en cliquant sur "COMs" sur le terminal Vbray
et se connecter dessus via la liste de selection "COM Port".
Dans mon cas il apparait comme "COM #5" , j'ai deja COM1 et COM2 en RS232 reel , et COM3 en virtual port.

images/USB_RS232_Platine_PIC_link.jpg images/USB_RS232_Pic18F252.jpg images/Terminal_Vbray_COM5.jpg
interface Trendnet TU-S9 en usage avec Terminal Vbray

Je pense que meme ce cordon ne doit pas etre aux normes strictes RS232 !




Interface Cable Prolific 2303 USB < - > TTL

pour liaison directe aux pin UART d'un PIC alimenté en 5V




PROBLEME RENCONTRE :
Mon Cordon n'est JAMAIS reconnu ! Because Hardware Problemo
c'est du made in RPC !
images/prolific_PL2303_USB_TTL_Problemo.giiimages/prolific_PL2303_USB_TTL_Problemo.gi
pont de soudure mal placé.. enlevé .. c'est OK


Verification installation Driver sur PC Windows XP et/ou WIN10
Attention au type de driver :
Probleme avec WIN10
.. recharge toujours le driver le plus rescent, il faut donc RE-ACTIVER l'ancien driver à chaque connection USB
Pas necessaire avec WIN XP





In fine , j'ai supprimé les pilotes plus rescents pour ne conserver que celui "qui va bien", version 2008
sinon à la connection prise USB, il va chercher à utiliser des pilotes rescents ,pris sur le Web lors de la 1ere connection..


../common/Prolific_USB_driver_Pilote_Win10_ASUS.gi





ATTENTION : ce cable ne convient pas pour un MCU aliménté en 3,3V
.. même s'il "tombe en marche" à partir de VCC=3,8V! expression empruntée .. voir Forum FS

On decouvre ainsi, sur quel port il faudra connecter le terminal VBRAY , ici : COM12

images/prolific_PL2303_COM12_reconnu.gif

Ou avec l'outil USBView :

images/prolific_PL2303_cordon_USB_TTL_Detect.gif


Driver 1 : PL2303_Prolific_DriverInstaller_v1_12_0.zip




Interface Cable USB 6 pins < - > LTTL 3,3V

pour liaison directe aux pin UART d'un PIC alimenté en 3,3 ou 3,6V

TTL-232R-3V3 FTDI USB To Serial Cable Assembly TTL 24 AWG ( Amazon 9,39€ ou Farnell >20€ )

../common/t_USB_FTDI_LTTL_3_3V_Connector_6_Pins.gif
UsbView :
CSR8510 A10 CSR Bluetooth Device
Périphérique Bluetooth Oui
Btcsrusb @oem16.inf
btcusb.sys
IVT Corporation 100 mA 2.00
CSR Bluetooth Device 6.0.15.63
Btusb_DDI oem16.inf
USB\VID_0A12&PID_0001\6&df2ee03&0&3
Removable, SurpriseRemovalOK

6 Pin Header Pin Assignment
Pin 1 GND Noir
Pin 2 CTS bleu input
Pin 3 VCC Rouge
ATTENTION : +5V !!!
Pin 4 TXD Vert Clavier -------------> PIC RX
Pin 5 RXD Blanc Ecran <------------ PIC TX
Pin 6 RTS jaune output
RTS, RX, TX, 5V, CTS, GND (RTS est le fil vert et GND le noir).


Une autre version de cable USB/TTL en version 6 pins (avec CTS /RTS)

nota : sur autre cordon (connecteur Rose)
USB SKU:PL2303-KZ UC494054690CN 6 Pins , meme brochage .
1 noir Gnd
2 bleu /CTS <------ sortie PIC (un zero allume CTS sur Terminal VBRAY)
3 rouge +5V
4 Vert Clavier .-----> entree RX PIC
5 Blanc ecran <------.sortie TX PIC
6 Jaune RTS -> PIC



driver 2 : PL2303_Prolific_DriverInstaller_v1180B_HXA_ XA_HXD_EA_RA_SA_TA_TB.zip




Interface (Module) USB CH340G HW-597 USB <--> LTTL 3,3V ou TTL 5V

Choix via un strap sur le connecteur 6 pins males
1 Gnd
2 RXD <---- TX MCU
3 TXD -----> RX MCU
4 3,3V
5 VCC ...........CAVALIER choix LTTL entre 4 et 5 ou pour TTL ,
ENLEVER le cavalier
6 5V

 
connectique (ici en 3V, Enlever le cavalier pour TTL 5V)  
 
driver vu par USBVIEW  

Detail driver vu par USBVIEW.exe

Le driver à installer , pour WIN XP ,Win VISTA, WIN 7 : CH34x_Install_Windows_v3_4.zip
Win 10 le reconnait sans ajouter de driver.
Decompresser le *.zip, et lancer le programme CH34x_Install_Windows_v3_4.exe qui installera le driver .

images/t_Driver_CH340_dowload_for_WIN7.gif images/t_Installation_driver_CH340G_sur_Win_XP.gif images/t_Driver_install_sur_PC_Vista_180524_OK..gif  
recuperation driver sur le web Installation sur PC WIN XP ... OK install sur PC WIN VISTA ..OK  


images/t_Test_CH340G_et_Terminal_Vbray_OK_sur_PC_XP_180524.gif images/t_Test_CH340G_et_Terminal_Vbray_OK_sur_PC_VISTA_180524.gif
Test sur PC WIN XP avec terminal VBRAY OK Test CH340G sur VISTA .avec VBRAY .OK


Cout vraiment reduit : 6.41€ pour 10 pieces port compris ! chez ALI va vite.
Nota:
ce modele n'a pas la sortie CTS disponible sur pin ( ni RTS)

Sous windows 10, gestionnaire de peripheriques, le module apparait sous COM 15




Pour tester le module, il suffit ensuite, une fois connecté à un terminal windows (VBRAY,Teraterm,RealTerm...etc..)
de relier les pins TX et RX
Tout ce qui est tapé au clavier doit apparaitre à l'ecran (ou en double si l'option Echo du terminal est activée)



Nouvelle version Miniaturisée :


dommage : il aurait mieux valu avoir une Pin CTS au lieu de DTR !!!
dans le cas ou le PIC reste MAITRE ..






Terminal UART SANS Interface RS232 !

Le Pickit2 offre la fonctionalité UART via pins ICSP!
TRES utile pour le debugging..
Exemple:
Le Pickit2 est connecté sur un 18F26K22 en liaison ICSP , pour le programmer

( transferer le fichier Hex , les bits de config et eventuellement le contenu pour l'EEPROM du PIC).
voir la docu Microchip :
PICkit2 User Guide 51553E.pdf
Heureusement le PIC18Fx6K22 contient 2 UART Hardware, choix donc sur UART2 correspondant à RB6 Tx et RB7 Rx.

images/t_Pickit2_UART_wiring_a.gif images/t_Pickit2_UART_wiring.gif
liaison Pickit2 UART <-> PIC differences ICSP mode et UART mode

 





Interface TTL <-> Ethernet

Hardware interface :
Usage d'un module XPORT-03 de Lantronix. lien sur docu Lantronix
Software interface:
Usage d'un port virtuel Ethernet - COM3
Driver software sur PC, accessible ici , pour un usage NON Professionel.

Avantage :
Le PIC s'interface directement sur les entrees RS232 du XPORT, meme en niveau TTL 5V
(pas besoin de MAX232 ou autre ..)
Le Terminal VBray peut se connecter via le port virtuel (COM3 dans mon cas)

Le PIC est alors aussi visible sur le Reseau via TELNET ou via usage de Socket.
Exemple: acces via VB6, acces via tablette ARCHOS....en WIFI ou Internet.
voir Tous le details et exemples sur : Pic_Xport.htm

Inconvenient :
il faut alimenter le XPORT en 3,5V maxi., donc regulateur LDO oblige.
Module Interface un peu cher (~45€) si on ne se limite qu'a l'usage mode RS232 transparent.

images/Xport03_RS232.jpg ../Archos43/images/Simule_PIC.jpg
Xport monté sur platine adptateur et regulateur Virtual Port et terminal Vbray

 



24/04/2015
Chronogramme UART

Test avec Terminal VBRAY , RS232 -> interface 2tr -> entree RX de UART PIC
suite echanges techniques sur FuturaScience sur ce document
Ce lien tres interressant concernant les niveaux RS232 et la logique associée
L'oscillo Tektronix TDS 2002C est en mode RUN / Single pour ne capturer qu'un seul caractere
Sur VBRAY , dans le champ dédié à l'emission : #0134 .. click sur touche -> Send



décorticage du signal VO ..donnerait 0x61
Le niveau repos sur l'entree PIC RX UART est toujours à 1, ( correspond au -12V RS232)
Le bit START est toujours à Zero
Le Bit STOP est toujours à 1
Le bit Parité depend du choix Even et ODD , et surtout du nb d'etat 1 dans le byte transmis.

images/UART_signal_VO.jpg images/UART_0X61.jpg
Signal original RS232 levels Renversement signal pour etat logic 1 en haut TTL levels



Réponse = 0x61 ( pas evident au depart!)
Attention à la correspondance niveaux RS232 et etat logique
Attention aussi au fait que c'est le LSB bit ( à gauche) ..puis les autres jusqu'au MSB bit
donc de pois respectif 1,2,4,8,16,32,64,128

Test fait dans 2 cas de figure avec code ascii 0x86,
avec 19200,8,1,E puis 19200,8,1,O
Signaux TTL sur entree RX de l'UART PIC.

images/UART_0X86_Odd.jpg images/UART_0X86_Even.jpg
code 0x86 (ou 134 decimal) parite Even (paire) code 0x86 parité Odd (impaire)





Terminal VBRAY et fonction GRAPH

l'Application terminal VBRAY comporte des outils interessants
- 12 Touches de fonctions ; sous lesquelles on peut mettre des commandes ou Macro
- Possibilité d'utiliser des fichiers de commandes
- Usage de Script en Langage proche du Pascal
- Graphiques representant jusqu'à 4 donnees recues
- envoi possible de valeur hexadecimales
- affichage Ascii ou Hexadecimal ou les 2
- Horodatage de chaque ligne ou apparait un Carriage return (à+-50mS pres)
- Action specifique sur caractere reçu : Form Feed= CLS=12 => efface l'ecran

images/t_Capture_Vbray_terminal.gif
Chargement de Vbray terminal

Exemple : Usage de GRAPH Vbray pour visualiser l'effet d'un Filtrage exponentiel
mesure ADC brute et mesure filtree
L'axe des X represente l'indice Nieme de la valeur reçue
La case Eenable est cochée
La case CSV graph est cochée
envoi via UART du PIC des donnees suivantes
M0 = mesure ADC 0 à 1023
TFK = unsigned int valeur filtree temperature *100 , pour maxi=50000 ( soit 500,00°C) Maxima avec LM35DZ

images/t_Vbray_Graf_usage.gif




Vbray recoit par ex:
1020,49511
492,23974
Y1 scale=0,20 maxi=1200 ?
Y2 sclae = 0,005 maxi = 60000 ?



EXCEL et PIC datas 2019


Liaison entre une application PIC18LF46K22 et EXCEL , via liaison type RS232 COM ou BlueTooth
pour recuperation de données.
Application de 2013 revisitée pour fonctionner sous Excle97 et WIN10.
La DLL RSCOM.DLL , utilisée par ailleur avec RapidQ BASIC , gere la partie comuunication
Modif pour adaptation de la DLL RSCOM.DLL
Modif pour extirper une DATA particuliere dans le flux de data reçu.
Ce test concerne seulement la RECEPTION de datas . ( L'emission vers PIC n"y est pas traitée volontairement)
Remanier , si besoin les parametres du grafique ( echelle X, Y..)

Attention : Le Numero de PORT doit etre < 10 !


La Feuille configuration de la COM, via
Le numero de l'item de chaque liste de parametres

les datas sont rangées au fur et à mesure dans
les colonnes A=X
B=Y

Dans ce test , je recois une trame EDFInfo ( simulée par un autre terminal VBRAY et Script d'envoi )
La trame recue est affichée en bas de l'ecran , ainsi que sa longueur , en bytes.
le Header (entete) *T et le TAIL °C (Terminateur) permet d'isoler de la trame, la valeur de mesure de temperature (capteur DS18B20)
La valeur (numerique) isolée apparaisant dans le Label designé à cet effet.
Le graphe montre l'evolue de cette mesure
La duree d'enregistrement est definie, ainsi que l'interval de rafraichissement.
Nota , le rafraichissement doit etre >= , à la periodicité d'envoi trame par le PIC.
Apres la durée d'enregistrement, la laison est coupée.

La partie Macro Basic VBA gere le tout .
modifiable à souhait.

Source VBA :
concerne la COM : Data_Fetch_2019.bas
concerne le graphisme: Graphic_Interface_2019.bas
Fichier Excel : RS232_Test_2019.xls






Version avec MSCOMM32.OCX

sous WIN 10 et Excel97

  images/t_Test_MSComm32_OCX_COM13.gif
form   Execution

fichier excel : Test_mscomm32_ocx.xls
source VBA : Excel_VBA_Test_mscomm32_OCX.bas
User form : UserForm1_test_mscomm32_OCX.frm

nota : supporte les ports virtuels au dessus de 10 ( ici PORT #13)



paulfjujo@free.fr


common/GIF/LTC1286p.jpg



Retour à l'index general