2017-04-11 1 views

Répondre

3

De référence manuel RM0090:

réception LIN

Un circuit de détection de rupture est mis en oeuvre sur l'interface USART. La détection est totalement indépendante du récepteur USART normal. Une coupure peut être détectée à chaque fois qu'elle se produit, pendant l'état de veille ou pendant une trame.

Lorsque le récepteur est activé (RE = 1 dans USART_CR1), le circuit regarde l'entrée RX pour un signal de démarrage. La méthode de détection des bits de démarrage est la même lors de la recherche de caractères de rupture ou de données. Après un bit de démarrage a été détecté, le circuit échantillonne les bits suivants exactement comme pour les données (sur les 8ème, 9ème et 10ème échantillons). Si 10 (lorsque LBDL = 0 dans USART_CR2) ou 11 (lorsque LBDL = 1 dans USART_CR2) des bits consécutifs sont détectés comme '0 et sont suivis d'un caractère délimiteur, l'indicateur LBD est défini dans USART_SR. Si le bit LBDIE = 1, une interruption est générée. Avant de valider la rupture, le délimiteur est vérifié pour car cela signifie que la ligne RX est revenue à un niveau élevé. Si un '1 est échantillonné avant l'apparition des 10 ou 11, le circuit de détection de rupture annule la détection en cours et recherche à nouveau un bit de départ .

Si le mode LIN est désactivé (LINEN = 0), le récepteur continue de fonctionner comme USART normal, sans prendre en compte la détection de rupture.

Si le mode LIN est activé (LINGE = 1), dès qu'une erreur de trame se produit (c.-à-bit d'arrêt détectée à « 0, ce qui sera le cas pour toute trame de pause ), le récepteur arrête jusqu'à ce que le le circuit de détection de rupture reçoit soit un '1, si le mot de rupture n'était pas complet, soit un caractère délimiteur si une rupture a été détectée.