Question

En toute honnêteté, je pense que la réponse est "non;" Cependant, je souhaite obtenir un deuxième avis. Fondamentalement, j'ai besoin d'un micro-contrôleur pour envoyer un signal continu à un autre, mais la communication entre eux utilise RS232. Je pense donc que je dois créer / mettre à jour les messages de communication pour qu’il fasse ce que je veux.

Qu'en pensez-vous?

Était-ce utile?

La solution

Vous devriez pouvoir définir quelque chose comme DTR (Data Terminal Ready), la broche 20 ou DSR (Data Set Ready), la broche 6, haut et le conserver comme signal d’équilibre. C’est ainsi que les modems / terminaux détectent qu’un périphérique à l’autre extrémité est prêt à communiquer. Tout dépend du niveau d'accès au matériel par le biais de votre pilote.

[EDIT] Ceci n’implique pas l’envoi de données, bien que vous puissiez toujours le faire en utilisant TX / RX, pins 2 & amp; 3.

Référence RS-232 sur wikipedia

Autres conseils

Vous voulez dire une tension fixe? Pas une onde carrée? (la lettre U) Qu'en est-il d'une commande break (si vous voulez l'appeler une commande)?

Vous pouvez certainement utiliser l’une des lignes de contrôle si cela vous aide ... Ou cherchez-vous spécifiquement quelque chose hors du TX?

Si la question est "puis-je modifier l'état DC de la ligne Tx", la réponse est que de nombreux uarts (y compris ceux des PC) peuvent être invités à créer une condition de "rupture", ce qui est le contraire à l'état inactif normal de la ligne.

Vous pouvez donc activer et désactiver la "pause" et basculer la ligne comme cela.

Il serait peut-être possible de faire quelque chose comme ça, à condition que vous n'ayez pas peur d'une interface en rafale. Un micro pourrait transmettre un octet et l'autre pourrait le modifier et le renvoyer en réponse.

Si vous pouvez contrôler les deux extrémités de la ligne, vous pourrez peut-être transformer les lignes RS-232 tx et rx en lignes logiques régulières pour donner cette information.

Toutefois, dans la plupart des cas, chaque extrémité envoie périodiquement un octet d’informations sur l’état contenant 8 valeurs numériques possibles, ce qui donne beaucoup plus d’informations sur l’état.

Une minuterie à la réception est réinitialisée chaque fois qu'un message est reçu. Si le délai est écoulé, le message a pris trop de temps et vous pouvez agir si un message d'état est manquant.

Comme d'autres l'ont souligné, si vous utilisez le contrôle de flux matériel, vous avez également certaines lignes d'état disponibles, bien que dans la plupart des cas, ces lignes ne soient pas implémentées, ce qui peut ne pas être une option.

-Adam

Un signal constant peut signifier:

  • rafale régulière de caractères: conservez le tampon d'envoi complet
  • ligne haute ou basse: n'envoyez rien ou envoyez des pauses continues

Je pense que cela dépend dans une large mesure de l'UART que vous utilisez, par exemple. le texte du lien , ainsi que le niveau d'accès que vous avez sous le logiciel. Si vous consultez la fiche technique, il est souvent possible de contrôler la plupart des broches directement à des fins de test, mais vous devrez y aller à partir d'un niveau assez bas.

À un niveau supérieur, la réponse de tvanfosson est à peu près la façon dont je le ferais.

Bien que la première réponse soit correcte, il peut ne pas être possible d’utiliser cette technique (avec DTR ou DSR) sur de nombreux microcontrôleurs, car ils ne disposent peut-être pas de ces signaux (de nombreux microcontrôleurs peuvent n’avoir que les lignes de base RX / TX et vous). Si vous vouliez des lignes de contrôle / d’état supplémentaires, vous devrez souvent utiliser d’autres ports d’entrée / sortie. Cependant, tout n’est pas perdu, de nombreux contrôleurs RS232 vous permettent de définir la ligne d’émission sur 'marque' ou 'espace' (c.-à-d. Cela vous permettrait d'obtenir votre signal d'état stable. Vous pouvez vérifier la ligne RX du récepteur pour voir si elle est au niveau de la marque ou de l'espace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top