Interfaçage du RTC (DS1307) avec le microcontrôleur et sa programmation

Essayez Notre Instrument Pour Éliminer Les Problèmes





RTC est un appareil électronique qui joue un rôle essentiel dans conception de système embarqué en temps réel . Il fournit une heure et une date précises dans diverses applications telles que l'horloge système, le système de présence des étudiants et l'alarme, etc., qui gardent une trace de l'heure actuelle et fournissent des résultats cohérents pour la tâche respective. Cet article présente l'interfaçage RTC avec 8051microcotroller et l'accès de base aux registres internes.

Interfaçage RTC avec le microcontrôleur 8051

Interfaçage RTC avec le microcontrôleur 8051



Programmation et interface RTC

L'interface RTC avec le microcontrôleur 8051 est similaire à tous les autres types d '«horloges en temps réel» qui lui sont interfacées. Alors regardons l'interfaçage RTC simple avec Microcontrôleur 8051 et la procédure de programmation qui y est associée.


Étape 1: Sélectionnez le périphérique RTC

Les différents types de puces RTC sont disponibles dans le monde embarqué en temps réel, qui sont classés en fonction de divers critères tels que le type de boîtier, la tension d'alimentation et la configuration des broches, etc. Quelques types de dispositifs RTC sont



  • Interface série à deux fils (bus I2C)
  • Interface série à trois fils (BUS USB)
  • Interface série à quatre fils (SPI BUS)

Tout d'abord, nous devons sélectionner le type de périphérique RTC par catégorie en fonction d'exigences telles que I2C Bus RTC ou SPI Bus RTC ou autre, qui convient à l'interfaçage avec le microcontrôleur respectif. Ensuite, nous pouvons sélectionner les fonctionnalités du dispositif RTC en fonction des exigences de l'application, telles que la durée de vie de la batterie, le package approprié et la fréquence d'horloge. Considérons l'interfaçage à deux fils RTC avec microcontrôleur 8051 tel que DS1307 .

Étape 2: Registre interne et adresse du périphérique RTC

RTC signifie horloge en temps réel qui fournit des années, des mois, des semaines, des jours, des heures, des minutes et des secondes en fonction de la fréquence du cristal. RTC se compose de Mémoire RAM pour le stockage des données . Une batterie de secours sera fournie en cas de panne de l'alimentation principale en connectant une batterie à l'appareil RTC.

Configuration RTC DB1307:

Blocs internes RTC et schéma des broches

Blocs internes RTC et schéma des broches

A0, A1, A2: sont des broches d'adresse de la puce RTC DB1307, qui peuvent être utilisées pour communiquer avec le périphérique maître. Nous pouvons contrôler huit appareils avec une interface RTC avec Microcontrôleur 8051 par bits A0, A1, A2 utilisant le protocole I2C.


VCC et GND: VCC et GND sont respectivement les broches d'alimentation et de masse. Cet appareil fonctionnait avec une plage de 1,8 V à 5,5 V.

VBT: VBT est une broche d'alimentation de la batterie. La source d'alimentation de la batterie doit être maintenue entre 2V et 3,5V.

SCL: SCL est une broche d'horloge série et elle est utilisée pour synchroniser les données sur l'interface série.

SDL: C'est une broche d'entrée et de sortie série. Il est utilisé pour transmettre et recevoir les données sur l'interface série.

Horloge de sortie: Il s'agit d'une broche de sortie d'onde carrée en option.

OSC0 et OSC1: Ce sont des broches d'oscillateur à cristal qui sont utilisées pour fournir les signaux d'horloge au dispositif RTC. La fréquence standard du cristal de quartz est de 22,768 KHz.

Adressage de l'appareil:

Le protocole de bus I2C autorise plusieurs appareils esclaves à la fois. Chaque appareil esclave doit être composé de sa propre adresse pour y être représenté. Le dispositif maître communique avec un dispositif esclave particulier par une adresse. L'adresse du périphérique RTC est «0xA2» où «1010» est donné par le fabricant et A0, A1, A2 sont une adresse définie par l'utilisateur, qui est utilisée pour communiquer huit périphériques RTC sur le Protocole de bus I2C .

Adressage de l

Adressage de l'appareil

Le bit R / W est utilisé pour effectuer des opérations de lecture et d'écriture dans RTC. Si R / W = 0, l'opération d'écriture est effectuée et R / W = 1 pour l'opération de lecture.

Adresse de l'opération de lecture de RTC = '0xA3'

Adresse de l'opération d'écriture de RTC = '0xA2'

Registres de mémoire et adresse:

Les registres RTC sont situés dans des emplacements d'adresse de 00h à 0Fh et les registres de mémoire RAM sont situés dans des emplacements d'adresse de 08h à 3Fh comme indiqué sur la figure. Les registres RTC sont utilisés pour fournir la fonctionnalité de calendrier et l'heure du trajet et pour afficher les week-ends.

Registres de mémoire et adresse

Registres de mémoire et adresse

Registres de contrôle / d'état:

DB1307 se compose de deux registres supplémentaires tels que contrôle / état1 et contrôle / état2 qui sont utilisés pour contrôler l'horloge en temps réel et interrompt .

Registre de contrôle / d'état1:

Registre d

Registre d'état de contrôle1

  • TEST1 = 0 mode normal

= 1 mode de test d'horloge EXT

  • STOP = 0 RTC démarre

= 1 arrêt RTC

  • TESTC = 0 remise sous tension désactivée

= remise sous tension activée

Registre de contrôle / d'état2:

Registre d

Registre d'état de contrôle2

  • TI / TP = 0 INT actif tout le temps

= 1 INT temps nécessaire actif

  • AF = 0 L'alarme ne correspond pas

= 1 correspondance d'alarme

  • TF = 0 Le dépassement de la minuterie ne se produit pas

= 1 Un dépassement de la minuterie se produit

  • ALE = 0 Désactivation des interruptions d'alarme

= 1 Alarmes activées

  • TIE = 0 La minuterie interrompt la désactivation

= 1 Activation des interruptions de la minuterie

Étape 3: Interfaçage du RTC ds1307 avec 8051

RTC peut être interfacé au microcontrôleur en utilisant différents protocoles de bus série tels que I2C et Protocoles SPI qui fournissent un lien de communication entre eux. La figure montre une horloge en temps réel s'interfaçant avec le microcontrôleur 8051 en utilisant le protocole de bus I2C. I2C est un protocole série bidirectionnel, composé de deux fils tels que SCL et SDA pour transférer des données entre des appareils connectés au bus. Le microcontrôleur 8051 n'a pas de dispositif RTC intégré, nous nous sommes donc connectés en externe via un Communication série pour garantir les données constituées.

Interfaçage RTC avec le microcontrôleur 8051

Interfaçage RTC avec le microcontrôleur 8051

Les appareils I2C ont des sorties à drain ouvert, par conséquent, une résistance de rappel doit être connectée à la ligne de bus I2C avec une source de tension. Si les résistances ne sont pas connectées aux lignes SCL et SDL, le bus ne fonctionnera pas.

Étape 4: Format de cadrage des données RTC

Comme l'interfaçage RTC avec le microcontrôleur 8051 utilise le bus I2C, le transfert de données se fait sous forme d'octets ou de paquets et chaque octet est suivi d'un accusé de réception.

Transmission de la trame de données:

En mode émission, le maître libère la condition de démarrage après avoir sélectionné le dispositif esclave par bit d'adresse. Le bit d'adresse contient 7 bits, qui indiquent les équipements esclaves comme adresse ds1307. Les données série et l'horloge série sont transmises sur les lignes SCL et SDL. Les conditions START et STOP sont reconnues comme début et fin d'un transfert série. Les opérations de réception et d'émission sont suivies du bit R / W.

Transmission de la trame de données

Transmission de la trame de données

Début: Principalement, la séquence de transfert de données initiée par le maître générant la condition de démarrage.

Adresse 7 bits: Ensuite, le maître envoie l'adresse de l'esclave dans deux formats 8 bits au lieu d'une seule adresse 16 bits.

Adresse du registre de contrôle / d'état: L'adresse du registre de contrôle / d'état permet d'autoriser les registres d'état de contrôle.

Registre de contrôle / d'état1: Le registre d'état de contrôle1 utilisé pour activer le dispositif RTC

Registre de contrôle / d'état2: Il est utilisé pour activer et désactiver les interruptions.

R / W: Si le bit de lecture et d'écriture est faible, l'opération d'écriture est effectuée.

HÉLAS: Si une opération d'écriture est effectuée dans le dispositif esclave, le récepteur envoie un ACK 1 bit au microcontrôleur.

Arrêter: Une fois l'opération d'écriture terminée dans le dispositif esclave, le microcontrôleur envoie une condition d'arrêt au dispositif esclave.

Réception de la trame de données:

Réception d

Réception d'une trame de données

Début: Principalement, la séquence de transfert de données initiée par le maître générant la condition de démarrage.

Adresse 7 bits: Ensuite, le maître envoie l'adresse esclave dans deux formats 8 bits au lieu d'une seule adresse 16 bits.

Adresse du registre de contrôle / d'état: L'adresse du registre de contrôle / d'état permet d'autoriser les registres d'état de contrôle.

Control / Status Register1: Le registre d'état de contrôle1 utilisé pour activer le dispositif RTC

Registre de contrôle / d'état2: Il est utilisé pour activer et désactiver les interruptions.

R / W: Si le bit de lecture et d'écriture est élevé, l'opération de lecture est effectuée.

HÉLAS: Si une opération d'écriture est effectuée dans le dispositif esclave, le récepteur envoie un ACK 1 bit au microcontrôleur.

Arrêter: Une fois l'opération d'écriture terminée dans le dispositif esclave, le microcontrôleur envoie une condition d'arrêt au dispositif esclave.

Étape 5: Programmation RTC

Opération d'écriture du maître vers l'esclave:

  1. Émettre la condition de démarrage du maître à l'esclave
  2. Transférer l'adresse de l'esclave en écriture sur la ligne SDL
  3. Envoyer l'adresse du registre de contrôle
  4. Envoyer le registre de contrôle / d'état1value
  5. Envoyer la valeur du registre de contrôle / d'état2
  6. Envoyez la date des minutes, secondes et heures similaires
  7. Envoyer le bit d'arrêt

#comprendre

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
void hosts (caractère non signé)
delay (caractère non signé)

void main ()
{

début()
write (0xA2) // adresse esclave //
write (0x00) // adresse du registre de contrôle //
write (0x00) // valeur du registre de contrôle 1 //
write (0x00) // contrôle regiter2 vlaue //
write (0x28) // valeur de sec //
write (0x50) // valeur minute //
write (0x02) // valeur des heures //
}

void start ()
{

SDA = 1 // traitement des données //
SCL = 1 // l'horloge est haute //
retard (100)
SDA = 0 // a envoyé les données //
retard (100)
SCL = 0 // le signal d'horloge est bas //
}
void write (caractère non signé)
{

caractère non signé k, j = 0 × 80
pour (k = 0k<8k++)
{
SDA=(d&j)
J=j>>1
SCL = 1
retard (4)
SCL = 0
}
SDA = 1
SCL = 1
retard (2)
c = SDA
retard (2)
SCL = 0
}
délai d'annulation (int p)
{
unsignedinta, b
Pour (a = 0a<255a++) //delay function//
Pour (b = 0b}

Lire l'opération de l'esclave au maître:

#comprendre
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
void write (char usigned)
void read ()
void ack ()
délai d'annulation (caractère non signé)
void main ()
{
début()
write (0xA3) // adresse esclave en lecture //
lire()
Hélas()
sec = valeur
}
void start ()
{

SDA = 1 // traitement des données //
SCL = 1 // l'horloge est haute //
retard (100)
SDA = 0 // a envoyé les données //
retard (100)
SCL = 0 // le signal d'horloge est bas //
}
void write (caractère non signé)
{

caractère non signé k, j = 0 × 80
pour (k = 0k<8k++)
{
SDA=(d&j)
J=j>>1
SCL = 1
retard (4)
SCL = 0
}
SDA = 1
SCL = 1
retard (2)
c = SDA
retard (2)
SCL = 0
}
délai d'annulation (int p)
{
unsignedinta, b
Pour (a = 0a<255a++) //delay function//
Pour (b = 0b}
Lecture nulle ()
{
Caractère non signé j, z = 0 × 00, q = 0 × 80
SDA = 1
pour (j = 0j<8j++)
{
SCL = 1
retard (100)
drapeau = SDA
si (drapeau == 1)

z = (z
void ack ()
{
SDA = 0 // La ligne SDA passe au niveau bas //
SCL = 1 // l'horloge est de haut en bas //
retard (100)
SCL = 0
}

Ce sont les étapes nécessaires pour l'interfaçage RTC avec le microcontrôleur 8051. En plus de ces étapes, les trames de données utilisées pour le transfert et la réception des données sont également décrites dans cet article pour permettre à l'utilisateur de comprendre la programmation appropriée. Pour plus d'informations sur ce concept, vous pouvez laisser un commentaire ci-dessous.