Bonjour,
J'essaye de réaliser sur une liaison RS232 sur quelques centimètres entre un PC et un µcontrôleur au travers d'un convertisseur FTDI.
l'objectif est une communication bidirectionnelle de peu de données, depuis le PC vers le microcontrôleur avec un format toujours identique de 7 octets en émission et 3 octets réponse.
La communication consiste à envoyer du PC au microcontrôleur un grand nombre d'ordres consécutifs (pouvant atteindre 1500) et un ordre est dans le format suivant :
Le PC Envoie 7 octets au micro contrôleur (à une vitesse de 460800 bauds), le microcontrôleur reçois ces octets et réponds quelques 10ene de µs plus tard et le pc est en attente de la réponse du microcontrôleur. De souvenir de l'envoie de l'ordre à la réponse du microcontrôleur il s'écoule dans les 350µs.
Cette communication doit être le plus rapide possible et nous somme à une vitesse de 480800 bauds (qui est pour le transfert des données) .
La partie informatique a été codée sous deux logiciels, Python et Delphi et la communication s'exécute sur deux pc au performances différentes, pour voir s'ils n'étaient pas la cause de mon problème. Mais nous rencontrons le même problème quel que soit le PC ou le logiciel utilisé pour coder les fonctions du port séries (pour info les deux fonctionnent sous Windows).
Ce problème est une durée entre la fin de la réponse du microcontrôleur et la lecture du port série par le PC, en mode synchrone nous avons une durée de 5 à 6 ms et en mode Asynchrone nous avons une durée de autour de 4 ms.
Pour ce genre de communication de petits "paquets" que je souhaite réaliser, cette durée dans le réception, me fait perdre tout l'avantage d'un liaison RS232 rapide (460800 bauds) et aussi l'utilisation de cette liaison.
J'ai essayé de jouer sur les délais, timeouts... des drivers utilisés, rien ne semble y faire pour diminuer ces durées en dessous de 4 ms, et ce qui est recherché est bien en dessous de la ms.
Peut être cela est il dû à l'établissement de la communication quand un changement de direction survient, mais je ne le constate pas quand je passe d'une lecture du port vers une écriture sur le port.
D'où les questions.
- Avez vous des idées bien sur ?
- Pensez vous que le convertisseur USB/FTDI puisse être en cause, il est donnée pour 2Gbis/s , mais sur les changements de direction .. y aurait il aussi une durée d'établissement !! ?
- Avez vous déjà utilisé un port série dans les conditions décrites ci dessus ?
- Ces délais étant vraiment identiques sur les deux machines, sauriez vous, si suite à une norme liée aux UART, ce délai sur la réponse est normé ? et dans ce cas impossible a diminuer ?
- Si je passai par une liaison "SPI", pourrai je rencontrer le même type de délai de lecture ?
- Auriez vous une solution a mon problème !?
merci a vous.
bonne soirée.
-----