SlideShare a Scribd company logo
1 of 74
Download to read offline
EE3C Gestion des périphériques
Séance 6
Bus et périphériques
de communication
Sébastien Combéfis 28 mars 2017
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
Objectifs
Communication entre un système embarqué et le monde
Principes généraux de la communication
Notion de protocole de communication
Bus et périphériques de communications
Port série, USB
I2
C, SPI, UART, CAN, 1-Wire
3
Communication
Communication
Connexion entre le système embarqué et le monde extérieur
Entre le processeur et les périphériques on-board
Avec des périphériques distants hors de la carte
Avec d’autres systèmes embarqués ou machines
Différents éléments à considérer pour établir la communication
Type de bus, connectique utilisé
Protocole de communication, définition des messages échangés
5
Série ou parallèle
Nombre de bits transmis en même temps
Ajustement du taux de transfert, débit de la connexion
Transmission série échange un bit à la fois
Plus lent, mais moins de fils, distances plus longue
Plusieurs bits en même temps sur transmission parallèle
Plus rapide, plus de fils et interférences, distances courtes
6
Synchrone ou asynchrone
Synchronisation émetteur/récepteur pour avoir même données
Même taux de transfert de données et protocole
Mode asynchrone utilise des bits de cadre comme UART
Délimitation des données à lire, plus petit débit, moins de fil
Mode synchrone utilise une horloge partagée comme SPI
Distance plus courte, plus gros débit, un fil de plus
7
Half-duplex ou full-duplex
Détermine les sens de communication supportés
Transmission et réception, simultanément ou non
Alternance pour communication bidirectionnelle en half-duplex
Un seul fil et un seul sens à la fois
Communication bidirectionnelle simultanée en full-duplex
Plus de hardware et fils, meilleur taux d’échange
8
Communication sur la BBB
Plusieurs bus de communication existants sur la BBB
Connectés pour certains d’entre eux sur les pins headers
Connexions locales ou distantes prévues de base
Port série, UART, I2
C et SPI
CAN, USB et Ethernet
9
Interface d’extension
Interface d’extension de la BBB grâce aux header pins
Manipulée à l’aide du device tree overlay (DTO)
DT est une structure de données représentant le hardware
Description hardware d’un processeur spécifique
Lu au moment du boot pour connaitre la machine
Peut être modifié à chaud pendant l’exécution
10
Device Tree (1)
Le device tree est un arbre binaire avec composants hardware
Au maximum deux fils par nœud, racine seul nœud sans parent
Fichier texte décrivant un device tree
Racine de l’arbre est /
Déclaration de compatibilité avec processeur hardware
Liste de tous les nœuds décrivant hardware hors processeur
Nœuds caractérisés par deux éléments
Déclaration de compatibilité du device représenté
Paramètres d’adressage, notamment registres utilisés
11
Device Tree (2)
Format de base du device tree
Chargé au boot, portions modifiables à chaud
//****************************************************************
/{
compatible = ??< manufacturer >,<model >";
<node name >[@<device address >]{
compatible = ??< manufacturer >,<model >";
reg = <start address length >;
};
// Additional device node descriptions
:
:
:
};
//****************************************************************
12
BBB Device Tree (1)
Gestion dynamique des DT avec cape manager (capemgr)
Fragments de DT se retrouvent dans /lib/firmware
Vérification du statut de la configuration des slots et des pins
À l’aide de deux fichiers se trouvant dans sysfs
$ cat /sys/devices/platform/ bone_capemgr /slots
0: PF ---- -1
1: PF ---- -1
2: PF ---- -1
3: PF ---- -1
4: P-O-L- 0 Override Board Name ,00A0 ,Override Manuf ,cape -
universaln
$ cat /sys/kernel/debug/pinctrl /44 e10800.pinmux/pins | grep 964
pin 89 (44 e10964 .0) 00000027 pinctrl -single
13
Mode des pins
Configuration du mode de chacune des pins séparément
Écriture d’une valeur dans le mux map dans un fichier kernel
Exemple avec P9.11 qui est gpio0[30] donc 0 × 32 + 20 = 30
Bits 0–2 de la configuration représentent le mode (de 0 à 7)
$ cd /sys/kernel/debug/pinctrl /44 e10800.pinmux
$ cat pins | grep 878
pin 30 (44 e10878 .0) 00000037 pinctrl -single
$ cat pinmux -pins | grep 878
pin 30 (44 e10878 .0): ocp: P9_12_pinmux (GPIO UNCLAIMED) function
pinmux_P9_12_default_pin group pinmux_P9_12_default_pin
14
Port série
Port série
Port série très utilisé dans industrie automatisation de contrôle
L’une des classes de périphérique la plus importante
Interface de communication série bit à bit
Port de communication le plus important dans système embarqué
Possibilité de contrôle total via une console série
Exécutée sur un port série, ou émulée depuis un périphérique USB
16
Ligne électrique
Trois signaux obligatoires pour une communication série
TxD pour les données transmises
RxD pour les données reçues
GND pour la masse commune
Six signaux optionnels pour contrôler la communication
DTR, DCD, DSR, RI, RTS et CTS
Deux extrémités différentes à une connexion série
Data Terminal Equipment (DTE), PC mâle
Data Communication Equipment (DCE), périphérique femelle
17
Implémentation
Port série se réfère au standard RS-232 (ou RS-422/RS-485)
Utilisation de +12 V et -12 V pour les valeurs logiques
Remplacement sur ordinateur par périphérique USB émulateur
Comme ce que fait la BBB par défaut, d’ailleurs
Très utilisé dans le monde embarqué et industriel
Facile à utiliser et à implémenter
Hardware et software léger ne surchargeant pas le CPU
18
UART
Universal Asynchronous Receiver/Transmitter (UART)
Communication niveau TTL, pouvant être sur interface RS-232
Il s’agit d’un dispositif physique dans microcontrôleur ou IC
Implémentation via TTL avec deux fils pour communiquer
Caractéristiques
Série, asynchrone, full-duplex
19
Port série dans Linux
Port série représenté par un fichier /dev/ttyXXX
Où XXX identifie le type de port comme S0, S1, USB0, ACM0...
Driver Linux tty core contrôle un port série
Driver de type caractères
Contrôle du flux de données et son format
Utilisation d’une line discipline (LDISC) pour l’interaction
Intermédiaire entre user space et kernel space (code driver)
LDISC standard agit comme terminal Unix
CTRL+C pour interrompre, LF remplacés par CR/LF...
20
Configuration
Vitesse de transfert des bits sur le port en bit/s
Vitesses autorisées parmi, par exemple, 75, 9600, 115200... bit/s
Nombre de bits de donnée utilisé pour échanger l’information
Typiquement des octets (8 bits), mais bytes de 7 bits possible
Deux paramètres liés au protocole de communication
Parité pour contrôler les erreurs de transmission avec 1 bit
Bit d’arrêt définit le type de bit utilisé pour marquer le stop
Exemple : « 115200,8N1 » (8 bits, pas de parité, stop 1)
21
Exemple serveur echo (1)
Possibilité d’émuler un port série à partir de la connexion USB
Permet notamment d’avoir une console via connexion USB
Connexion série via USB entre l’hôte et la BBB
/dev/ttyUSB0 côté hôte
/dev/ttyGS0 côté BBB
Exemple d’un simple serveur echo qui renvoie ce qu’il reçoit
Par exemple, Python avec utilisation du module serial
22
Exemple serveur echo (2)
Serveur écoute port série et renvoie ce qu’il reçoit
Utilisation de serial.readline() pour lire un texte
1 def server(serial):
2 while True:
3 line = serial.readline ()
4 print(’echoing: ’, line.decode ().strip)
5 serial.write(line)
23
Exemple serveur echo (3)
Envoi d’une chaine par le client et affichage réponse serveur
Utilisation de serial.write() pour écrire un texte
1 def client(serial):
2 while True:
3 line = input(’>> ’)
4 if line == ’exit ’:
5 break
6
7 serial.write(line.encode () + b’n’)
8 line = serial.readline ()
9 print(’got: ’, line.strip ())
24
Exemple serveur echo (4)
Démarrage programme principale après configuration du port
Création d’un objet de type serial.Serial
1 if __name__ == ’__main__ ’:
2 mode = sys.argv [1]
3 device = sys.argv [2]
4
5 serial = serial.Serial(
6 port = device ,
7 baudrate = 115200 ,
8 bytesize = 8,
9 parity = ’N’,
10 stopbits = 1,
11 timeout = None ,
12 xonxoff = 0,
13 rtscts = 0
14 )
15
16 if mode == "client":
17 client(serial)
18 elif mode == "server":
19 server(serial)
20
21 serial.close ()
25
Port série sur BBB
Six ports séries sur la BBB, un seul activé par défaut
/dev/ttyO0 couplé console série, et /dev/ttyO3 unidirectionnel
Nom Périphérique TxD RxD RTS CTS
UART1 /dev/ttyO1 P9.24 P9.26
UART2 /dev/ttyO2 P9.21 P9.22 P8.38 P8.37
UART3 /dev/ttyO3 P9.42 P8.34 P8.36
UART4 /dev/ttyO4 P9.13 P9.11 P8.33 P8.35
UART5 /dev/ttyO5 P8.37 P8.38
$ ls /dev/ttyO*
/dev/ttyO0 /dev/ttyO1 /dev/ttyO2 /dev/ttyO4
$ dtc -I dtb -O dts /lib/firmware/BB -UART4 -00 A0.dtbo | grep
exclusive -use
exclusive -use = "P9.13" , "P9.11" , "uart4 ";
26
Exemple serveur echo (5)
Serveur echo entre deux ports UART physique réel
Même exemple que précédemment, lancé avec les bons chemins
UART 4 UART 5
Tx
Rx
Tx
Rx
$ echo BB -UART5 > /sys/devices/platform/ bone_capemgr /slots
$ ls /dev/ttyO*
/dev/ttyO0 /dev/ttyO1 /dev/ttyO2 /dev/ttyO4 /dev/ttyO5
27
Bus USB
Bus USB
Bus polyvalent pour connecter un périphérique électronique
Communication entre le CPU et des périphériques
Au moins deux acteurs impliqués dans communication USB
Hôte dirige le trafic vers les périphériques
Périphérique répond aux requêtes de l’hôte
Hôte interroge régulièrement tous les périphériques USB
Vérification de s’ils veulent lui envoyer un message
29
Processus d’énumération
L’hôte comprend quelle sorte de périphérique a été connecté
Reconfiguration automatique du système pour pouvoir le gérer
Processus d’énumération lors 1re connexion d’un périphérique
Envoi d’un signal de reset au périphérique
Lecture des informations du périphérique USB par l’hôte
Identification sans équivoque du périphérique USB
Chargement d’un driver pour contrôler le périphérique USB
Une fois fait, le périphérique est dans l’état configuré
30
Branchement périphérique USB
Branchement périphérique USB et monitoring messages kernel
Insertion d’une clé WiFi
$ dmesg
[ 5797.828174] usb 1-1: new high -speed USB device number 2 using musb -hdrc
[ 5797.959670] usb 1-1: New USB device found , idVendor =7392 , idProduct =7811
[ 5797.959709] usb 1-1: New USB device strings: Mfr=1, Product =2,
SerialNumber =3
[ 5797.959726] usb 1-1: Product: 802.11n WLAN Adapter
[ 5797.959741] usb 1-1: Manufacturer : Realtek
[ 5797.959756] usb 1-1: SerialNumber : 00 e04c000001
[ 5798.565101] rtl8192cu: Chip version 0x10
[ 5798.658479] rtl8192cu: MAC address: 74:da :38:2e:1f:bc
[ 5798.658517] rtl8192cu: Board Type 0
[ 5798.658645] rtl_usb: rx_max_size 15360 , rx_urb_num 8, in_ep 1
[ 5798.658835] rtl8192cu: Loading firmware rtlwifi/ rtl8192cufw_TMSC .bin
[ 5798.771670] ieee80211 phy0: Selected rate control algorithm ’rtl_rc ’
[ 5798.796870] usbcore: registered new interface driver rtl8192cu
[ 5798.804345] rtl8192cu: MAC auto ON okay!
[ 5798.876593] rtl8192cu: Tx queue select: 0x05
[ 5799.498199] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
31
Ligne électrique
Quatre signaux dans les standards USB 1.0 et USB 2.0
D+ pour les données positives
D- pour les données négatives
VCC fournit une alimentation à 5 V
GND pour la masse commune
Ajout de nouveaux signaux dans le standard USB 3.0
Superspeed transmitter/receiver dual pairs
Possibilité d’alimenter le périphérique grâce à la ligne VCC
De 5 V et 1,5 A jusque 20 V et 5 A en puissance max fournie
32
Bus USB dans Linux
Support des modes hôte ou périphérique dans le kernel Linux
Périphérique appelés “USB gadgets” dans le kernel
Système embarqué peut agir dans les deux modes
La BBB possède notamment un port USB pour relier l’hôte
Communication avec un master qui poll les périphérique
Poll sur endpoint IN ou OUT, selon sens communication
33
Type de endpoint
Configuration et récupération d’information via le contrôle
Obligatoire et utilisé avec transfert de données asynchrone
Émulation de la ligne d’interruption des CPUs
Transfert garanti de petite quantité de données synchrone
Large transfert de données avec bulk
Transfert asynchrone, sans perte, mais pas de garantie temps
Transfert isochrone de larges quantités de données
Application temps-réel comme vidéos, mais perte de données
34
Hôte USB
Branchement périphérique provoque chargement d’un driver
Driver spécifique pour le périphérique branché
Driver générique pour la classe du périphérique branché
Lecteur de codes-barres USB agit comme un clavier USB
Renvoie le code lu comme une chaine de caractères
35
Périphérique USB
Système embarqué se comporte comme périphérique USB
Utilisation du sous-système USB gadget du kernel
Plusieurs comportements possibles pour le système embarqué
Accès à une console série via /dev/ACM0
Communication série/Ethernet via /dev/usb0
Stockage d’un système de fichier comme une clé USB
36
Accès direct au bus USB
Accès direct aux données brutes sans passer par driver
Seule possibilité si Linux n’a rien trouvé après énumération
Utilisation de la librairie libusb pour accéder au bus
Offre des fonctions de bas niveau d’accès au bus USB
37
Bus I2
C
Bus I2
C (1)
Bus Inter-Integrated Circuit (I2C) connecte éléments on-board
Communication entre périphériques on-board et le CPU
Réseau entre éléments proches sur petite surface
Comme un CPU master et plusieurs senseurs/actuateurs esclaves
Possibilité d’une ligne d’interruption directe avec le CPU
Indique qu’un message doit être lu immédiatement par le master
Caractéristiques
Série, synchrone, des maitres/des esclaves
39
Bus I2
C (2)
Création d’un réseau avec des nœuds connectés sur bus I2C
Chacun étant configuré comme étant un maitre ou un esclave
Connexion de sous-systèmes d’une même board entre eux
Mémoire de type EEPROM, convertisseurs DAC et ADC...
40
Ligne électrique
Trois fils utilisés pour un bus I2C
SCL fournit un signal d’horloge
SDA fournit le bus des données
GND pour la masse commune
Possibilité d’une ligne d’interruption directe sur le CPU
Souvent implémentée comme ligne dédiée reliée à un GPIO
41
Connexion
Connexion parallèle de plusieurs périphériques I2C
Ajout de résistances pull-up, sauf si intégrées dans le contrôleur
SCL
SDA
Nœud 1 Nœud 2 Nœud 3RpRp
+5 V
42
Bus I2
C dans Linux
Périphérique I2C identifié par une adresse sur 7 bits
Adresse pas affectée au runtime, mais par designer du board
Master utilise adresse pour atteindre un périphérique sur le bus
Et indication de si le master veut lire (1) ou écrire (0)
Deux modes master et slave, de manière similaire à l’USB
Et donc deux types de drivers supportés dans le kernel
43
Bus I2
C sur la BBB (1)
Trois bus I2C sur la BBB, chacun avec un master dédié
Une pas exportée, une dédiée au cape EEPROM et une libre
Nom SDA SCL Adresse mémoire
i2c0 Pas exporté 0x44E0B000
i2c1 P9.18 ou P9.26 P9.17 ou P9.24 0x4802A000
i2c2 P9.20 ou P9.22 P9.19 ou P9.21 0x4819C000
& ls /sys/bus/i2c/devices/
0 -0024 0 -0034 0 -0050 0 -0070 2 -0054 2 -0055 2 -0056 2 -0057
i2c -0 i2c -1 i2c -2
& ls -l /sys/bus/i2c/devices/i2c -2
lrwxrwxrwx 1 root root 0 Mar 26 16:29 /sys/bus/i2c/devices/i2c -2
-> ../../../ devices/platform/ocp /4819 c000.i2c/i2c -2
44
Bus I2
C sur la BBB (2)
Trois bus I2C sur la BBB, chacun avec un master dédié
Une pas exportée, une dédiée au cape EEPROM et une libre
Nom SDA SCL Adresse mémoire
i2c0 Pas exporté 0x44E0B000
i2c1 P9.18 ou P9.26 P9.17 ou P9.24 0x4802A000
i2c2 P9.20 ou P9.22 P9.19 ou P9.21 0x4819C000
& dtc -I dtb -O dts /lib/firmware/BB -I2C2 -00 A0.dtbo | grep
exclusive -use
exclusive -use = "P9.19" , "P9.20" , "i2c2 ";
45
Accès direct au bus I2
C
Possibilité d’accès direct au bus depuis le user space
Sauf l’éventuelle ligne d’interruption à gérer dans le kernel
Trois étapes à suivre pour accéder à un périphérique I2C
Créer le bus de périphérique I2
C pour pouvoir y accéder
Ouvrir le fichier représentant le bus
Définir l’adresse de l’esclave à contacter avec ioctl
Lecture et écriture sur le bus avec read et write
46
Exemple accéléromètre (1)
Libérer puis activer le bus I2C en changeant l’overlay
Écrire dans un fichier
$ echo BB -I2C2 > /sys/devices/platform/ bone_capemgr /
slots
ou utiliser config-pin
$ config -pin overlay BB -I2C2
47
Exemple accéléromètre (2)
Connexion de l’accéléromètre sur le bus i2c-2 (P9.19 et P9.20)
Retrouver que la connexion est bien faite avec i2cdetect
$ i2cdetect -r 2
WARNING! This program can confuse your I2C bus , cause data
loss and worse!
I will probe file /dev/i2c -2 using read byte commands.
I will probe address range 0x03 -0x77.
Continue? [Y/n] Y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- 53 UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
48
Exemple accéléromètre (3)
Interrogation de l’accéléromètre pour récupérer son ID
Lire la valeur du registre 0x00
$ i2cget -y 2 0x53 0x00
0xe5
Configuration de l’accéléromètre pour activer le mode mesure
Écrire 0x08 dans le registre 0x2D
$ i2cset -y 2 0x53 0x2D 0x08
49
Exemple C (1)
Ouverture du fichier représentant le bus i2c-2
En lecture et en écriture, pour toute la transaction sur le bus
1 # include <stdio.h>
2 # include <stdint.h>
3 # include <stdlib.h>
4 # include <linux/i2c -dev.h>
5 # include <fcntl.h>
6
7 int main () {
8 int file;
9 char *filename = "/dev/i2c -2";
10
11 if (( file = open(filename , O_RDWR)) < 0) {
12 perror("Failed to open the I2C bus");
13 exit (1);
14 }
50
Exemple C (2)
Configuration de l’adresse de l’esclave
Juste donner l’adresse 7 bits, valable toute la transaction
1 int addr = 0x53;
2 if (ioctl(file , I2C_SLAVE , addr) < 0) {
3 perror("Failed to acquire access or talk to slave .n");
4 exit (1);
5 }
Écriture de données vers l’esclave sur le bus
Valeur du registre dont on veut lire la valeur
1 uint8_t buff [10] = {0};
2 buff [0] = 0x00;
3 if (write(file , buff , 1) != 1) {
4 perror("Failed to write register address to read .n");
5 exit (1);
6 }
51
Exemple C (3)
Lecture de données depuis l’esclave sur le bus
Valeur du device ID qui est de 0xe5, soit 229 en décimal
1 if (read(file , buff , 1) != 1) {
2 perror("Failed to read register from I2C bus .n");
3 exit (1);
4 }
5 printf("Data read: (%u)n", buff [0]);
Fermeture du fichier représentant le bus I2C
1 close(file);
2
3 return 0;
4 }
52
Bus SPI
Bus SPI
Bus Serial Peripheral Interface (SPI) similaire à I2C
Débits plus grands que I2
C et UART et transferts bidirectionnels
Partage d’une clock commune de synchronisation comme I2C
Choix par le master d’une fréquence supportée par les esclaves
Caractéristiques
Série, full-duplex, synchrone et un maitre/des esclaves
54
Bus SPI (2)
Un ou plusieurs fils de sélection de l’esclave
Ces lignes sont typiquement actives lorsqu’elles sont basses
Deux fils pour échanger les données dans les deux sens
Communication dans les deux sens de manière simultanée
Tel un registre glissant, envoi d’un bit par chaque côté
Flux de données efficaces pour application multimédia
LCDs, vidéos, traitement de signal, télécommunication...
55
Ligne électrique
Cinq signaux dans le protocole SPI
SCLK fournit un signal d’horloge
MOSI fournit le bus des données Master-Out/Slave-In
MISO fournit le bus des données Master-In/Slave-Out
SS pour sélectionner l’esclave
GND pour la masse commune
Une ligne SS par esclave qu’il est possible de supporter
Possibilité de générer le signal SS par une GPIO classique
56
Connexion
Connexion parallèle de plusieurs périphériques SPI
Mais connexions séparées des différentes lignes SS
MOSI
MISO
SCLK
SS1
SS2
Maitre
Esclave 1 Esclave 2
57
Bus SPI dans Linux
Bus SPI représenté par le dossier /sys/bus/spi/devices
Contient tous les périphériques disponibles sur le système
Accès brut au bus SPI similaire à l’I2C
Créer le bus de périphérique SPI pour pouvoir y accéder
Ouvrir le fichier représentant le bus
Lecture et écriture sur le bus avec read et write
58
Bus SPI sur la BBB (1)
Deux bus SPI sur la BBB, avec deux lignes SS
Un réservé pour le HDMI, l’autre libre
Nom MISO MOSI SCLK SS0 SS1
spi1 P9.21 P9.18 P9.22 P9.17 Pas disponible
spi2 P9.29 P9.30 P9.31 P9.20 ou P9.28 P9.19 ou P9.42
& ls /sys/bus/spi/devices/
spi1 .0 spi1 .1 spi2 .0 spi2 .1
& ls /sys/bus/spi/devices/spi2 .0/
driver modalias of_node power spidev statistics subsystem
uevent
59
Bus SPI sur la BBB (2)
Deux bus SPI sur la BBB, avec deux lignes SS
Un réservé pour le HDMI, l’autre libre
Nom MISO MOSI SCLK SS0 SS1
spi1 P9.21 P9.18 P9.22 P9.17 Pas disponible
spi2 P9.29 P9.30 P9.31 P9.20 ou P9.28 P9.19 ou P9.42
& dtc -I dtb -O dts /lib/firmware/BB -SPIDEV1 -00A0.dtbo | grep
exclusive -use
exclusive -use = "P9.31" , "P9.29" , "P9.30" , "P9.28" , "spi1 ";
60
Bus 1-Wire
Bus 1-Wire (1)
Bus 1-Wire (W1 ou OW) moins connu, mais important
Lent par rapport aux autres, mais un seul fil de données
Simplification de la connexion entre CPU et périphérique
Identification, authentification, donnée de calibration...
Alimentation par un condensateur à recharger (80 pF)
Rechargée par le fil de données avant la transmission effective
Caractéristiques
Half-duplex, asynchrone, un master/des esclaves
62
Bus 1-Wire (2)
Similaire à I2C mais avec plus longue portée
Et avec un débit de données beaucoup plus faible
Communication avec petits périphériques peu onéreux
Thermomètre digital, instruments météorologiques...
Utilisé dans alimentation Dell pour vérifier l’adaptateur
Informations de puissance, courant et tension via 3e fil
63
Ligne électrique
Deux ou trois fils utilisés pour un bus 1-Wire
Data pour les données échangées
GND pour la masse commune
VCC fournit une alimentation (optionnel)
VCC optionnel si mécanisme de stockage d’énergie in-built
Utilisation de Data pour alimentation une capacité
64
Mode parasite
Mode d’utilisation avec Data pour l’alimentation
Ralentissement de la communication le temps de la charge
Il faut pull-up Data suffisamment longtemps
Pour charger complètement la capacité interne
Mode parasite
Data
Mode normal
VCC
Data
65
Connexion (1)
Un microcontrôleur est le master connecté à des esclaves
Numéro de série sur 64 bits (avec type de périphérique et CRC)
Trouver esclaves par protocole énumération appelé singulation
Diffusion d’un message broadcast particulier
Commande de sélection avant de contacter un périphérique
Connexion et déconnexion du bus très facile
Périphérique stocke sa propre configuration et est de suite prêt
66
Connexion (2)
Connexion de plusieurs périphériques en parallèle
Utilisation d’une résistance pull-up
Réseau de périphériques avec un master appelé MicroLAN
Data
GND
Périphérique
1
Périphérique
2
Périphérique
3
Rp 4.7 k
VCC
67
Bus 1-Wire dans Linux
Pas de contrôleur 1-Wire disponible de base sur Linux
Solution software adaptée vu la lenteur du bus
Software pour émuler le bus 1-Wire
Il suffit de choisir une pin GPIO comme Data
68
Comparaison
Communication série
Échange d’informations entre processeur et périphériques
Différents ports et bus en fonction des propriétés désirées
Trois principals types de communications utilisés
Port série RS-232
Universal Asynchronous Receiver/Transmitter (UART)
Serial Peripheral Interface (SPI)
70
Mise en réseau
Mise en réseau de plusieurs systèmes embarqués
Différent bus en fonction de la distance et niveau de réseautage
Trois principals types de communications utilisés
Inter-Integrated Circuit (I2
C) (niveau board)
Controller Area Network (CAN) (niveau système)
Ethernet (LAN)
71
Comparaison
Bus Transmission Sens Synchronisation Débit max
RS-232 série duplex asynchrone de 75 bits/s à 115200 bit/s
UART série full-duplex asynchrone M/S 3686,4 kbit/s
USB série 10 Gbit/s
I2C série synchrone Ms/Ss de 100 kbit/s à 5 Mbit/s
SPI série full-duplex synchrone M/Ss 10 Mbits/s
1-Wire half-duplex asynchrone M/Ss 16.3 kbit/s
72
Livres de référence
ISBN
978-1-784-39352-6
ISBN
978-1-627-05511-6
73
Crédits
Photos des livres depuis Amazon
https://www.flickr.com/photos/30003006@N00/2439637326
https://www.flickr.com/photos/17289090@N07/5817880561
https://www.flickr.com/photos/emil_kabanov/6862588971
https://www.flickr.com/photos/hoeken/3042677810
https://www.flickr.com/photos/ncbob/7423723004
https://www.flickr.com/photos/goingslo/4067593977
https://www.flickr.com/photos/phm_sinan/1364979311
74

More Related Content

What's hot

Automatisation d'une maison intelligente via une application android
Automatisation d'une maison intelligente via une application androidAutomatisation d'une maison intelligente via une application android
Automatisation d'une maison intelligente via une application androidAbderrahim Bouharaoua
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Ahmed Makni
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1SinGuy
 
présentation de soutenance PFE
présentation de soutenance PFEprésentation de soutenance PFE
présentation de soutenance PFEKarim Labidi
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODwebmasterref68
 
SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13Mohsen Sadok
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile Raoua Bennasr
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Sana Aroussi
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITLina Meddeb
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSECAM Brussels Engineering School
 
Présentation systema de controle d'acces et de température
Présentation systema de controle d'acces et de températurePrésentation systema de controle d'acces et de température
Présentation systema de controle d'acces et de températureMohamed Amin Elaguech
 
Presentation arduino
Presentation arduinoPresentation arduino
Presentation arduinoSinGuy
 
Mise en place de deux réseaux LAN interconnectés par un réseau WAN
Mise en place de deux réseaux LAN interconnectés par un réseau WANMise en place de deux réseaux LAN interconnectés par un réseau WAN
Mise en place de deux réseaux LAN interconnectés par un réseau WANGhassen Chaieb
 
Intro arduino
Intro arduinoIntro arduino
Intro arduinoSOAEnsAD
 

What's hot (20)

Automatisation d'une maison intelligente via une application android
Automatisation d'une maison intelligente via une application androidAutomatisation d'une maison intelligente via une application android
Automatisation d'une maison intelligente via une application android
 
Présentation pfe finale
Présentation pfe finalePrésentation pfe finale
Présentation pfe finale
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
Architecture de Von Neumann & Harvard
Architecture de Von Neumann & HarvardArchitecture de Von Neumann & Harvard
Architecture de Von Neumann & Harvard
 
présentation de soutenance PFE
présentation de soutenance PFEprésentation de soutenance PFE
présentation de soutenance PFE
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
 
SMART Home Rapport
SMART Home RapportSMART Home Rapport
SMART Home Rapport
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Presentation,PFE
Presentation,PFEPresentation,PFE
Presentation,PFE
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
 
Présentation systema de controle d'acces et de température
Présentation systema de controle d'acces et de températurePrésentation systema de controle d'acces et de température
Présentation systema de controle d'acces et de température
 
Presentation arduino
Presentation arduinoPresentation arduino
Presentation arduino
 
Mise en place de deux réseaux LAN interconnectés par un réseau WAN
Mise en place de deux réseaux LAN interconnectés par un réseau WANMise en place de deux réseaux LAN interconnectés par un réseau WAN
Mise en place de deux réseaux LAN interconnectés par un réseau WAN
 
Intro arduino
Intro arduinoIntro arduino
Intro arduino
 
Rapport
RapportRapport
Rapport
 

Viewers also liked

Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...ECAM Brussels Engineering School
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelECAM Brussels Engineering School
 
la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...najwa sabouk
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 

Viewers also liked (20)

Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...
 
Développement informatique : Programmation concurrente
Développement informatique : Programmation concurrenteDéveloppement informatique : Programmation concurrente
Développement informatique : Programmation concurrente
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnel
 
Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
 
Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...
 
Développement informatique : Programmation graphique
Développement informatique : Programmation graphiqueDéveloppement informatique : Programmation graphique
Développement informatique : Programmation graphique
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Introduction à la formation Digitalent
Introduction à la formation DigitalentIntroduction à la formation Digitalent
Introduction à la formation Digitalent
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 

Similar to Programmation de systèmes embarqués : Bus et périphériques de communication

OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 
Les elements du_micro
Les elements du_microLes elements du_micro
Les elements du_microTafriqt Ugafa
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdfAliRami3
 
Chap2dsp 120209101928-phpapp02
Chap2dsp 120209101928-phpapp02Chap2dsp 120209101928-phpapp02
Chap2dsp 120209101928-phpapp02Fathi Kallel
 
Composants routeur cisco et différent mode de Configuration
Composants routeur cisco et différent mode de ConfigurationComposants routeur cisco et différent mode de Configuration
Composants routeur cisco et différent mode de ConfigurationZakariaBouzzitMadrid
 
laboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .pptlaboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .pptprofsn
 
Monter son pc pour les nuls
Monter son pc pour les nulsMonter son pc pour les nuls
Monter son pc pour les nulsYoussef Bensafi
 
Materiel informatique 2011
Materiel informatique 2011Materiel informatique 2011
Materiel informatique 2011Jouhadi mehdi
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDmohamedsaidi212001
 
Dictionnaire informatique
Dictionnaire informatiqueDictionnaire informatique
Dictionnaire informatiqueFranck Lecluse
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112Hafid Moujane
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Karim Touati
 
Fpga handout
Fpga handoutFpga handout
Fpga handoutassnad
 

Similar to Programmation de systèmes embarqués : Bus et périphériques de communication (20)

prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
embarqués.pdf
embarqués.pdfembarqués.pdf
embarqués.pdf
 
Sockets
SocketsSockets
Sockets
 
Les elements du_micro
Les elements du_microLes elements du_micro
Les elements du_micro
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
 
Chap2dsp 120209101928-phpapp02
Chap2dsp 120209101928-phpapp02Chap2dsp 120209101928-phpapp02
Chap2dsp 120209101928-phpapp02
 
13
1313
13
 
Composants routeur cisco et différent mode de Configuration
Composants routeur cisco et différent mode de ConfigurationComposants routeur cisco et différent mode de Configuration
Composants routeur cisco et différent mode de Configuration
 
laboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .pptlaboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .ppt
 
Monter son pc pour les nuls
Monter son pc pour les nulsMonter son pc pour les nuls
Monter son pc pour les nuls
 
Materiel informatique 2011
Materiel informatique 2011Materiel informatique 2011
Materiel informatique 2011
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 
SoC Hamdi -chap4
SoC Hamdi -chap4SoC Hamdi -chap4
SoC Hamdi -chap4
 
Dictionnaire informatique
Dictionnaire informatiqueDictionnaire informatique
Dictionnaire informatique
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
 
Mini projet 3t2i se
Mini projet 3t2i seMini projet 3t2i se
Mini projet 3t2i se
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
 
Fpga handout
Fpga handoutFpga handout
Fpga handout
 

More from ECAM Brussels Engineering School

Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéECAM Brussels Engineering School
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetECAM Brussels Engineering School
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...ECAM Brussels Engineering School
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleECAM Brussels Engineering School
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...ECAM Brussels Engineering School
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 

More from ECAM Brussels Engineering School (11)

Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projet
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 

Programmation de systèmes embarqués : Bus et périphériques de communication

  • 1. EE3C Gestion des périphériques Séance 6 Bus et périphériques de communication Sébastien Combéfis 28 mars 2017
  • 2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
  • 3. Objectifs Communication entre un système embarqué et le monde Principes généraux de la communication Notion de protocole de communication Bus et périphériques de communications Port série, USB I2 C, SPI, UART, CAN, 1-Wire 3
  • 5. Communication Connexion entre le système embarqué et le monde extérieur Entre le processeur et les périphériques on-board Avec des périphériques distants hors de la carte Avec d’autres systèmes embarqués ou machines Différents éléments à considérer pour établir la communication Type de bus, connectique utilisé Protocole de communication, définition des messages échangés 5
  • 6. Série ou parallèle Nombre de bits transmis en même temps Ajustement du taux de transfert, débit de la connexion Transmission série échange un bit à la fois Plus lent, mais moins de fils, distances plus longue Plusieurs bits en même temps sur transmission parallèle Plus rapide, plus de fils et interférences, distances courtes 6
  • 7. Synchrone ou asynchrone Synchronisation émetteur/récepteur pour avoir même données Même taux de transfert de données et protocole Mode asynchrone utilise des bits de cadre comme UART Délimitation des données à lire, plus petit débit, moins de fil Mode synchrone utilise une horloge partagée comme SPI Distance plus courte, plus gros débit, un fil de plus 7
  • 8. Half-duplex ou full-duplex Détermine les sens de communication supportés Transmission et réception, simultanément ou non Alternance pour communication bidirectionnelle en half-duplex Un seul fil et un seul sens à la fois Communication bidirectionnelle simultanée en full-duplex Plus de hardware et fils, meilleur taux d’échange 8
  • 9. Communication sur la BBB Plusieurs bus de communication existants sur la BBB Connectés pour certains d’entre eux sur les pins headers Connexions locales ou distantes prévues de base Port série, UART, I2 C et SPI CAN, USB et Ethernet 9
  • 10. Interface d’extension Interface d’extension de la BBB grâce aux header pins Manipulée à l’aide du device tree overlay (DTO) DT est une structure de données représentant le hardware Description hardware d’un processeur spécifique Lu au moment du boot pour connaitre la machine Peut être modifié à chaud pendant l’exécution 10
  • 11. Device Tree (1) Le device tree est un arbre binaire avec composants hardware Au maximum deux fils par nœud, racine seul nœud sans parent Fichier texte décrivant un device tree Racine de l’arbre est / Déclaration de compatibilité avec processeur hardware Liste de tous les nœuds décrivant hardware hors processeur Nœuds caractérisés par deux éléments Déclaration de compatibilité du device représenté Paramètres d’adressage, notamment registres utilisés 11
  • 12. Device Tree (2) Format de base du device tree Chargé au boot, portions modifiables à chaud //**************************************************************** /{ compatible = ??< manufacturer >,<model >"; <node name >[@<device address >]{ compatible = ??< manufacturer >,<model >"; reg = <start address length >; }; // Additional device node descriptions : : : }; //**************************************************************** 12
  • 13. BBB Device Tree (1) Gestion dynamique des DT avec cape manager (capemgr) Fragments de DT se retrouvent dans /lib/firmware Vérification du statut de la configuration des slots et des pins À l’aide de deux fichiers se trouvant dans sysfs $ cat /sys/devices/platform/ bone_capemgr /slots 0: PF ---- -1 1: PF ---- -1 2: PF ---- -1 3: PF ---- -1 4: P-O-L- 0 Override Board Name ,00A0 ,Override Manuf ,cape - universaln $ cat /sys/kernel/debug/pinctrl /44 e10800.pinmux/pins | grep 964 pin 89 (44 e10964 .0) 00000027 pinctrl -single 13
  • 14. Mode des pins Configuration du mode de chacune des pins séparément Écriture d’une valeur dans le mux map dans un fichier kernel Exemple avec P9.11 qui est gpio0[30] donc 0 × 32 + 20 = 30 Bits 0–2 de la configuration représentent le mode (de 0 à 7) $ cd /sys/kernel/debug/pinctrl /44 e10800.pinmux $ cat pins | grep 878 pin 30 (44 e10878 .0) 00000037 pinctrl -single $ cat pinmux -pins | grep 878 pin 30 (44 e10878 .0): ocp: P9_12_pinmux (GPIO UNCLAIMED) function pinmux_P9_12_default_pin group pinmux_P9_12_default_pin 14
  • 16. Port série Port série très utilisé dans industrie automatisation de contrôle L’une des classes de périphérique la plus importante Interface de communication série bit à bit Port de communication le plus important dans système embarqué Possibilité de contrôle total via une console série Exécutée sur un port série, ou émulée depuis un périphérique USB 16
  • 17. Ligne électrique Trois signaux obligatoires pour une communication série TxD pour les données transmises RxD pour les données reçues GND pour la masse commune Six signaux optionnels pour contrôler la communication DTR, DCD, DSR, RI, RTS et CTS Deux extrémités différentes à une connexion série Data Terminal Equipment (DTE), PC mâle Data Communication Equipment (DCE), périphérique femelle 17
  • 18. Implémentation Port série se réfère au standard RS-232 (ou RS-422/RS-485) Utilisation de +12 V et -12 V pour les valeurs logiques Remplacement sur ordinateur par périphérique USB émulateur Comme ce que fait la BBB par défaut, d’ailleurs Très utilisé dans le monde embarqué et industriel Facile à utiliser et à implémenter Hardware et software léger ne surchargeant pas le CPU 18
  • 19. UART Universal Asynchronous Receiver/Transmitter (UART) Communication niveau TTL, pouvant être sur interface RS-232 Il s’agit d’un dispositif physique dans microcontrôleur ou IC Implémentation via TTL avec deux fils pour communiquer Caractéristiques Série, asynchrone, full-duplex 19
  • 20. Port série dans Linux Port série représenté par un fichier /dev/ttyXXX Où XXX identifie le type de port comme S0, S1, USB0, ACM0... Driver Linux tty core contrôle un port série Driver de type caractères Contrôle du flux de données et son format Utilisation d’une line discipline (LDISC) pour l’interaction Intermédiaire entre user space et kernel space (code driver) LDISC standard agit comme terminal Unix CTRL+C pour interrompre, LF remplacés par CR/LF... 20
  • 21. Configuration Vitesse de transfert des bits sur le port en bit/s Vitesses autorisées parmi, par exemple, 75, 9600, 115200... bit/s Nombre de bits de donnée utilisé pour échanger l’information Typiquement des octets (8 bits), mais bytes de 7 bits possible Deux paramètres liés au protocole de communication Parité pour contrôler les erreurs de transmission avec 1 bit Bit d’arrêt définit le type de bit utilisé pour marquer le stop Exemple : « 115200,8N1 » (8 bits, pas de parité, stop 1) 21
  • 22. Exemple serveur echo (1) Possibilité d’émuler un port série à partir de la connexion USB Permet notamment d’avoir une console via connexion USB Connexion série via USB entre l’hôte et la BBB /dev/ttyUSB0 côté hôte /dev/ttyGS0 côté BBB Exemple d’un simple serveur echo qui renvoie ce qu’il reçoit Par exemple, Python avec utilisation du module serial 22
  • 23. Exemple serveur echo (2) Serveur écoute port série et renvoie ce qu’il reçoit Utilisation de serial.readline() pour lire un texte 1 def server(serial): 2 while True: 3 line = serial.readline () 4 print(’echoing: ’, line.decode ().strip) 5 serial.write(line) 23
  • 24. Exemple serveur echo (3) Envoi d’une chaine par le client et affichage réponse serveur Utilisation de serial.write() pour écrire un texte 1 def client(serial): 2 while True: 3 line = input(’>> ’) 4 if line == ’exit ’: 5 break 6 7 serial.write(line.encode () + b’n’) 8 line = serial.readline () 9 print(’got: ’, line.strip ()) 24
  • 25. Exemple serveur echo (4) Démarrage programme principale après configuration du port Création d’un objet de type serial.Serial 1 if __name__ == ’__main__ ’: 2 mode = sys.argv [1] 3 device = sys.argv [2] 4 5 serial = serial.Serial( 6 port = device , 7 baudrate = 115200 , 8 bytesize = 8, 9 parity = ’N’, 10 stopbits = 1, 11 timeout = None , 12 xonxoff = 0, 13 rtscts = 0 14 ) 15 16 if mode == "client": 17 client(serial) 18 elif mode == "server": 19 server(serial) 20 21 serial.close () 25
  • 26. Port série sur BBB Six ports séries sur la BBB, un seul activé par défaut /dev/ttyO0 couplé console série, et /dev/ttyO3 unidirectionnel Nom Périphérique TxD RxD RTS CTS UART1 /dev/ttyO1 P9.24 P9.26 UART2 /dev/ttyO2 P9.21 P9.22 P8.38 P8.37 UART3 /dev/ttyO3 P9.42 P8.34 P8.36 UART4 /dev/ttyO4 P9.13 P9.11 P8.33 P8.35 UART5 /dev/ttyO5 P8.37 P8.38 $ ls /dev/ttyO* /dev/ttyO0 /dev/ttyO1 /dev/ttyO2 /dev/ttyO4 $ dtc -I dtb -O dts /lib/firmware/BB -UART4 -00 A0.dtbo | grep exclusive -use exclusive -use = "P9.13" , "P9.11" , "uart4 "; 26
  • 27. Exemple serveur echo (5) Serveur echo entre deux ports UART physique réel Même exemple que précédemment, lancé avec les bons chemins UART 4 UART 5 Tx Rx Tx Rx $ echo BB -UART5 > /sys/devices/platform/ bone_capemgr /slots $ ls /dev/ttyO* /dev/ttyO0 /dev/ttyO1 /dev/ttyO2 /dev/ttyO4 /dev/ttyO5 27
  • 29. Bus USB Bus polyvalent pour connecter un périphérique électronique Communication entre le CPU et des périphériques Au moins deux acteurs impliqués dans communication USB Hôte dirige le trafic vers les périphériques Périphérique répond aux requêtes de l’hôte Hôte interroge régulièrement tous les périphériques USB Vérification de s’ils veulent lui envoyer un message 29
  • 30. Processus d’énumération L’hôte comprend quelle sorte de périphérique a été connecté Reconfiguration automatique du système pour pouvoir le gérer Processus d’énumération lors 1re connexion d’un périphérique Envoi d’un signal de reset au périphérique Lecture des informations du périphérique USB par l’hôte Identification sans équivoque du périphérique USB Chargement d’un driver pour contrôler le périphérique USB Une fois fait, le périphérique est dans l’état configuré 30
  • 31. Branchement périphérique USB Branchement périphérique USB et monitoring messages kernel Insertion d’une clé WiFi $ dmesg [ 5797.828174] usb 1-1: new high -speed USB device number 2 using musb -hdrc [ 5797.959670] usb 1-1: New USB device found , idVendor =7392 , idProduct =7811 [ 5797.959709] usb 1-1: New USB device strings: Mfr=1, Product =2, SerialNumber =3 [ 5797.959726] usb 1-1: Product: 802.11n WLAN Adapter [ 5797.959741] usb 1-1: Manufacturer : Realtek [ 5797.959756] usb 1-1: SerialNumber : 00 e04c000001 [ 5798.565101] rtl8192cu: Chip version 0x10 [ 5798.658479] rtl8192cu: MAC address: 74:da :38:2e:1f:bc [ 5798.658517] rtl8192cu: Board Type 0 [ 5798.658645] rtl_usb: rx_max_size 15360 , rx_urb_num 8, in_ep 1 [ 5798.658835] rtl8192cu: Loading firmware rtlwifi/ rtl8192cufw_TMSC .bin [ 5798.771670] ieee80211 phy0: Selected rate control algorithm ’rtl_rc ’ [ 5798.796870] usbcore: registered new interface driver rtl8192cu [ 5798.804345] rtl8192cu: MAC auto ON okay! [ 5798.876593] rtl8192cu: Tx queue select: 0x05 [ 5799.498199] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready 31
  • 32. Ligne électrique Quatre signaux dans les standards USB 1.0 et USB 2.0 D+ pour les données positives D- pour les données négatives VCC fournit une alimentation à 5 V GND pour la masse commune Ajout de nouveaux signaux dans le standard USB 3.0 Superspeed transmitter/receiver dual pairs Possibilité d’alimenter le périphérique grâce à la ligne VCC De 5 V et 1,5 A jusque 20 V et 5 A en puissance max fournie 32
  • 33. Bus USB dans Linux Support des modes hôte ou périphérique dans le kernel Linux Périphérique appelés “USB gadgets” dans le kernel Système embarqué peut agir dans les deux modes La BBB possède notamment un port USB pour relier l’hôte Communication avec un master qui poll les périphérique Poll sur endpoint IN ou OUT, selon sens communication 33
  • 34. Type de endpoint Configuration et récupération d’information via le contrôle Obligatoire et utilisé avec transfert de données asynchrone Émulation de la ligne d’interruption des CPUs Transfert garanti de petite quantité de données synchrone Large transfert de données avec bulk Transfert asynchrone, sans perte, mais pas de garantie temps Transfert isochrone de larges quantités de données Application temps-réel comme vidéos, mais perte de données 34
  • 35. Hôte USB Branchement périphérique provoque chargement d’un driver Driver spécifique pour le périphérique branché Driver générique pour la classe du périphérique branché Lecteur de codes-barres USB agit comme un clavier USB Renvoie le code lu comme une chaine de caractères 35
  • 36. Périphérique USB Système embarqué se comporte comme périphérique USB Utilisation du sous-système USB gadget du kernel Plusieurs comportements possibles pour le système embarqué Accès à une console série via /dev/ACM0 Communication série/Ethernet via /dev/usb0 Stockage d’un système de fichier comme une clé USB 36
  • 37. Accès direct au bus USB Accès direct aux données brutes sans passer par driver Seule possibilité si Linux n’a rien trouvé après énumération Utilisation de la librairie libusb pour accéder au bus Offre des fonctions de bas niveau d’accès au bus USB 37
  • 39. Bus I2 C (1) Bus Inter-Integrated Circuit (I2C) connecte éléments on-board Communication entre périphériques on-board et le CPU Réseau entre éléments proches sur petite surface Comme un CPU master et plusieurs senseurs/actuateurs esclaves Possibilité d’une ligne d’interruption directe avec le CPU Indique qu’un message doit être lu immédiatement par le master Caractéristiques Série, synchrone, des maitres/des esclaves 39
  • 40. Bus I2 C (2) Création d’un réseau avec des nœuds connectés sur bus I2C Chacun étant configuré comme étant un maitre ou un esclave Connexion de sous-systèmes d’une même board entre eux Mémoire de type EEPROM, convertisseurs DAC et ADC... 40
  • 41. Ligne électrique Trois fils utilisés pour un bus I2C SCL fournit un signal d’horloge SDA fournit le bus des données GND pour la masse commune Possibilité d’une ligne d’interruption directe sur le CPU Souvent implémentée comme ligne dédiée reliée à un GPIO 41
  • 42. Connexion Connexion parallèle de plusieurs périphériques I2C Ajout de résistances pull-up, sauf si intégrées dans le contrôleur SCL SDA Nœud 1 Nœud 2 Nœud 3RpRp +5 V 42
  • 43. Bus I2 C dans Linux Périphérique I2C identifié par une adresse sur 7 bits Adresse pas affectée au runtime, mais par designer du board Master utilise adresse pour atteindre un périphérique sur le bus Et indication de si le master veut lire (1) ou écrire (0) Deux modes master et slave, de manière similaire à l’USB Et donc deux types de drivers supportés dans le kernel 43
  • 44. Bus I2 C sur la BBB (1) Trois bus I2C sur la BBB, chacun avec un master dédié Une pas exportée, une dédiée au cape EEPROM et une libre Nom SDA SCL Adresse mémoire i2c0 Pas exporté 0x44E0B000 i2c1 P9.18 ou P9.26 P9.17 ou P9.24 0x4802A000 i2c2 P9.20 ou P9.22 P9.19 ou P9.21 0x4819C000 & ls /sys/bus/i2c/devices/ 0 -0024 0 -0034 0 -0050 0 -0070 2 -0054 2 -0055 2 -0056 2 -0057 i2c -0 i2c -1 i2c -2 & ls -l /sys/bus/i2c/devices/i2c -2 lrwxrwxrwx 1 root root 0 Mar 26 16:29 /sys/bus/i2c/devices/i2c -2 -> ../../../ devices/platform/ocp /4819 c000.i2c/i2c -2 44
  • 45. Bus I2 C sur la BBB (2) Trois bus I2C sur la BBB, chacun avec un master dédié Une pas exportée, une dédiée au cape EEPROM et une libre Nom SDA SCL Adresse mémoire i2c0 Pas exporté 0x44E0B000 i2c1 P9.18 ou P9.26 P9.17 ou P9.24 0x4802A000 i2c2 P9.20 ou P9.22 P9.19 ou P9.21 0x4819C000 & dtc -I dtb -O dts /lib/firmware/BB -I2C2 -00 A0.dtbo | grep exclusive -use exclusive -use = "P9.19" , "P9.20" , "i2c2 "; 45
  • 46. Accès direct au bus I2 C Possibilité d’accès direct au bus depuis le user space Sauf l’éventuelle ligne d’interruption à gérer dans le kernel Trois étapes à suivre pour accéder à un périphérique I2C Créer le bus de périphérique I2 C pour pouvoir y accéder Ouvrir le fichier représentant le bus Définir l’adresse de l’esclave à contacter avec ioctl Lecture et écriture sur le bus avec read et write 46
  • 47. Exemple accéléromètre (1) Libérer puis activer le bus I2C en changeant l’overlay Écrire dans un fichier $ echo BB -I2C2 > /sys/devices/platform/ bone_capemgr / slots ou utiliser config-pin $ config -pin overlay BB -I2C2 47
  • 48. Exemple accéléromètre (2) Connexion de l’accéléromètre sur le bus i2c-2 (P9.19 et P9.20) Retrouver que la connexion est bien faite avec i2cdetect $ i2cdetect -r 2 WARNING! This program can confuse your I2C bus , cause data loss and worse! I will probe file /dev/i2c -2 using read byte commands. I will probe address range 0x03 -0x77. Continue? [Y/n] Y 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- 53 UU UU UU UU -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 48
  • 49. Exemple accéléromètre (3) Interrogation de l’accéléromètre pour récupérer son ID Lire la valeur du registre 0x00 $ i2cget -y 2 0x53 0x00 0xe5 Configuration de l’accéléromètre pour activer le mode mesure Écrire 0x08 dans le registre 0x2D $ i2cset -y 2 0x53 0x2D 0x08 49
  • 50. Exemple C (1) Ouverture du fichier représentant le bus i2c-2 En lecture et en écriture, pour toute la transaction sur le bus 1 # include <stdio.h> 2 # include <stdint.h> 3 # include <stdlib.h> 4 # include <linux/i2c -dev.h> 5 # include <fcntl.h> 6 7 int main () { 8 int file; 9 char *filename = "/dev/i2c -2"; 10 11 if (( file = open(filename , O_RDWR)) < 0) { 12 perror("Failed to open the I2C bus"); 13 exit (1); 14 } 50
  • 51. Exemple C (2) Configuration de l’adresse de l’esclave Juste donner l’adresse 7 bits, valable toute la transaction 1 int addr = 0x53; 2 if (ioctl(file , I2C_SLAVE , addr) < 0) { 3 perror("Failed to acquire access or talk to slave .n"); 4 exit (1); 5 } Écriture de données vers l’esclave sur le bus Valeur du registre dont on veut lire la valeur 1 uint8_t buff [10] = {0}; 2 buff [0] = 0x00; 3 if (write(file , buff , 1) != 1) { 4 perror("Failed to write register address to read .n"); 5 exit (1); 6 } 51
  • 52. Exemple C (3) Lecture de données depuis l’esclave sur le bus Valeur du device ID qui est de 0xe5, soit 229 en décimal 1 if (read(file , buff , 1) != 1) { 2 perror("Failed to read register from I2C bus .n"); 3 exit (1); 4 } 5 printf("Data read: (%u)n", buff [0]); Fermeture du fichier représentant le bus I2C 1 close(file); 2 3 return 0; 4 } 52
  • 54. Bus SPI Bus Serial Peripheral Interface (SPI) similaire à I2C Débits plus grands que I2 C et UART et transferts bidirectionnels Partage d’une clock commune de synchronisation comme I2C Choix par le master d’une fréquence supportée par les esclaves Caractéristiques Série, full-duplex, synchrone et un maitre/des esclaves 54
  • 55. Bus SPI (2) Un ou plusieurs fils de sélection de l’esclave Ces lignes sont typiquement actives lorsqu’elles sont basses Deux fils pour échanger les données dans les deux sens Communication dans les deux sens de manière simultanée Tel un registre glissant, envoi d’un bit par chaque côté Flux de données efficaces pour application multimédia LCDs, vidéos, traitement de signal, télécommunication... 55
  • 56. Ligne électrique Cinq signaux dans le protocole SPI SCLK fournit un signal d’horloge MOSI fournit le bus des données Master-Out/Slave-In MISO fournit le bus des données Master-In/Slave-Out SS pour sélectionner l’esclave GND pour la masse commune Une ligne SS par esclave qu’il est possible de supporter Possibilité de générer le signal SS par une GPIO classique 56
  • 57. Connexion Connexion parallèle de plusieurs périphériques SPI Mais connexions séparées des différentes lignes SS MOSI MISO SCLK SS1 SS2 Maitre Esclave 1 Esclave 2 57
  • 58. Bus SPI dans Linux Bus SPI représenté par le dossier /sys/bus/spi/devices Contient tous les périphériques disponibles sur le système Accès brut au bus SPI similaire à l’I2C Créer le bus de périphérique SPI pour pouvoir y accéder Ouvrir le fichier représentant le bus Lecture et écriture sur le bus avec read et write 58
  • 59. Bus SPI sur la BBB (1) Deux bus SPI sur la BBB, avec deux lignes SS Un réservé pour le HDMI, l’autre libre Nom MISO MOSI SCLK SS0 SS1 spi1 P9.21 P9.18 P9.22 P9.17 Pas disponible spi2 P9.29 P9.30 P9.31 P9.20 ou P9.28 P9.19 ou P9.42 & ls /sys/bus/spi/devices/ spi1 .0 spi1 .1 spi2 .0 spi2 .1 & ls /sys/bus/spi/devices/spi2 .0/ driver modalias of_node power spidev statistics subsystem uevent 59
  • 60. Bus SPI sur la BBB (2) Deux bus SPI sur la BBB, avec deux lignes SS Un réservé pour le HDMI, l’autre libre Nom MISO MOSI SCLK SS0 SS1 spi1 P9.21 P9.18 P9.22 P9.17 Pas disponible spi2 P9.29 P9.30 P9.31 P9.20 ou P9.28 P9.19 ou P9.42 & dtc -I dtb -O dts /lib/firmware/BB -SPIDEV1 -00A0.dtbo | grep exclusive -use exclusive -use = "P9.31" , "P9.29" , "P9.30" , "P9.28" , "spi1 "; 60
  • 62. Bus 1-Wire (1) Bus 1-Wire (W1 ou OW) moins connu, mais important Lent par rapport aux autres, mais un seul fil de données Simplification de la connexion entre CPU et périphérique Identification, authentification, donnée de calibration... Alimentation par un condensateur à recharger (80 pF) Rechargée par le fil de données avant la transmission effective Caractéristiques Half-duplex, asynchrone, un master/des esclaves 62
  • 63. Bus 1-Wire (2) Similaire à I2C mais avec plus longue portée Et avec un débit de données beaucoup plus faible Communication avec petits périphériques peu onéreux Thermomètre digital, instruments météorologiques... Utilisé dans alimentation Dell pour vérifier l’adaptateur Informations de puissance, courant et tension via 3e fil 63
  • 64. Ligne électrique Deux ou trois fils utilisés pour un bus 1-Wire Data pour les données échangées GND pour la masse commune VCC fournit une alimentation (optionnel) VCC optionnel si mécanisme de stockage d’énergie in-built Utilisation de Data pour alimentation une capacité 64
  • 65. Mode parasite Mode d’utilisation avec Data pour l’alimentation Ralentissement de la communication le temps de la charge Il faut pull-up Data suffisamment longtemps Pour charger complètement la capacité interne Mode parasite Data Mode normal VCC Data 65
  • 66. Connexion (1) Un microcontrôleur est le master connecté à des esclaves Numéro de série sur 64 bits (avec type de périphérique et CRC) Trouver esclaves par protocole énumération appelé singulation Diffusion d’un message broadcast particulier Commande de sélection avant de contacter un périphérique Connexion et déconnexion du bus très facile Périphérique stocke sa propre configuration et est de suite prêt 66
  • 67. Connexion (2) Connexion de plusieurs périphériques en parallèle Utilisation d’une résistance pull-up Réseau de périphériques avec un master appelé MicroLAN Data GND Périphérique 1 Périphérique 2 Périphérique 3 Rp 4.7 k VCC 67
  • 68. Bus 1-Wire dans Linux Pas de contrôleur 1-Wire disponible de base sur Linux Solution software adaptée vu la lenteur du bus Software pour émuler le bus 1-Wire Il suffit de choisir une pin GPIO comme Data 68
  • 70. Communication série Échange d’informations entre processeur et périphériques Différents ports et bus en fonction des propriétés désirées Trois principals types de communications utilisés Port série RS-232 Universal Asynchronous Receiver/Transmitter (UART) Serial Peripheral Interface (SPI) 70
  • 71. Mise en réseau Mise en réseau de plusieurs systèmes embarqués Différent bus en fonction de la distance et niveau de réseautage Trois principals types de communications utilisés Inter-Integrated Circuit (I2 C) (niveau board) Controller Area Network (CAN) (niveau système) Ethernet (LAN) 71
  • 72. Comparaison Bus Transmission Sens Synchronisation Débit max RS-232 série duplex asynchrone de 75 bits/s à 115200 bit/s UART série full-duplex asynchrone M/S 3686,4 kbit/s USB série 10 Gbit/s I2C série synchrone Ms/Ss de 100 kbit/s à 5 Mbit/s SPI série full-duplex synchrone M/Ss 10 Mbits/s 1-Wire half-duplex asynchrone M/Ss 16.3 kbit/s 72
  • 74. Crédits Photos des livres depuis Amazon https://www.flickr.com/photos/30003006@N00/2439637326 https://www.flickr.com/photos/17289090@N07/5817880561 https://www.flickr.com/photos/emil_kabanov/6862588971 https://www.flickr.com/photos/hoeken/3042677810 https://www.flickr.com/photos/ncbob/7423723004 https://www.flickr.com/photos/goingslo/4067593977 https://www.flickr.com/photos/phm_sinan/1364979311 74