04/11/2021, 11:55:13
Bonjour a tous,
Je peux aussi faire un petit point sur mes avancés...
Mon projet KnxBoard continue d'avancer... lentement mais sûrement (j'ai pas énormément de temps a y consacrer)...
Pour le moment, pour contourner mon problème d'oscillateur, j'ai mis un oscillateur sur la carte qui me sert a débuger la KnxBoard.
ça me permet d'avancer un max avant le routage de la v2.
Pour le moment, j'ai les ACK qui fonctionnent, ainsi que les réponses a une requête (TX initier par un READ sur le bus).
Il me reste a faire les TX initier par le code de l'application mais surtout, la gestion des collisions.
Voici quelques Photos du projet:
La KnxBoard et ma carte qui me sert a debuguer avec un programmateur STM32 et une sortie UART avec un FDTI.
La carte en fonctionnement :
Maintenant le montage pour faire mes essais hors de mon réseau de ma maison:
1: Une alim KNX
2: Ma première carte basé sur la stack Thelsing avec un programme qui envoie une demande d'adresse de bus toutes les 10 secondes (comme lorsque dans ETS on demande l'adresse des devices en mode programmation) de plus, cette carte m'affiche sur le port série (USB) toutes les trames qui passent sur le bus... retourné par le TpUART
3: Un composant KNX standard (ici un ABB US 12.2) pour comparer les trames, les timings et essayer de produire des collisions...
4: Ma carte KnxBoard V1 en cours de développement (avec 2 rework, fils rouge et vert, pour corriger des erreurs de routage)
Enfin, le résultat actuel:
Trace rouge: le bus KNX
Trace Jaune: le RX du STKNX
Trace Bleu: le TX du STKNX
Explication:
- Trame1: ma carte a base de TpUART demande les adresses des participants en mode programmation (j'ai appuyer sur le prog de l'ABB et de ma carte KnxBoard).
- KnxBoard envoie un ACK ansi que ABB (juste après la trame 1)
- La trame 2, c'est la KnxBoard qui répond, le 3, c'est le ACK de ABB et TPUART
-Puis 4, c'est ABB qui envoie son adresse a sont tour... avec en 5, le Ack de TPUART et KnxBoard...
Bon, dans ce cas, ABB met plus de temps a répondre que ce que la norme prévoit... du coup, pas de collision...
Pour conclure, la partie la plus dure a faire est passé (enfin, reste encore la collision a gérer...)
Je vais pouvoir repasser sur les couches haute (ce qui avance en générale plus vite, car c'est de la programmation plus conventionnel, les couche basse, c'est des programmation de timers, et du debug a l'oscillo...).
Mon code est une reprise de zero depuis les spec en m'inspirant fortement du code de Thelsing, et le tout en C pure. Et pour le moment, tout ça pour 17Ko de section "text" (loin des 128Ko de ma carte knx-debug avec la stack Thelsing en C++ qui pourtant ne gère que le protocole du TpUart bien plus simple)...
J'ai pas encore mis tout le code sur GitHub (c'est prévu, mais je pense le mettre une fois le projet fonctionnel).
Mais si ça intéresse quelqu'un, je peux envoyer le code et le dossier KiCad de la carte V1 (qui demande 3 rework comme on le vois sur la photo + un oscillateur 32MHz externe) ou V2 (Schéma OK, mais pas encore routé).
Pour le moment, la carte fonctionne a 32MHz, la V2 sera je pense a 40MHz mais, en changeant la PLL interne, je peux passer a 80MHz sans changer le hardware, ce qui laisse pas mal de marge pour le projet...
Au niveau consommation, il faudra que je vérifie plus précisément avec un montage complet mais pour le moment a 32MHz sans mise en veille, je suis assez loin des 10mA de la norme...
Je peux aussi faire un petit point sur mes avancés...
Mon projet KnxBoard continue d'avancer... lentement mais sûrement (j'ai pas énormément de temps a y consacrer)...
Pour le moment, pour contourner mon problème d'oscillateur, j'ai mis un oscillateur sur la carte qui me sert a débuger la KnxBoard.
ça me permet d'avancer un max avant le routage de la v2.
Pour le moment, j'ai les ACK qui fonctionnent, ainsi que les réponses a une requête (TX initier par un READ sur le bus).
Il me reste a faire les TX initier par le code de l'application mais surtout, la gestion des collisions.
Voici quelques Photos du projet:
La KnxBoard et ma carte qui me sert a debuguer avec un programmateur STM32 et une sortie UART avec un FDTI.
La carte en fonctionnement :
Maintenant le montage pour faire mes essais hors de mon réseau de ma maison:
1: Une alim KNX
2: Ma première carte basé sur la stack Thelsing avec un programme qui envoie une demande d'adresse de bus toutes les 10 secondes (comme lorsque dans ETS on demande l'adresse des devices en mode programmation) de plus, cette carte m'affiche sur le port série (USB) toutes les trames qui passent sur le bus... retourné par le TpUART
3: Un composant KNX standard (ici un ABB US 12.2) pour comparer les trames, les timings et essayer de produire des collisions...
4: Ma carte KnxBoard V1 en cours de développement (avec 2 rework, fils rouge et vert, pour corriger des erreurs de routage)
Enfin, le résultat actuel:
Trace rouge: le bus KNX
Trace Jaune: le RX du STKNX
Trace Bleu: le TX du STKNX
Explication:
- Trame1: ma carte a base de TpUART demande les adresses des participants en mode programmation (j'ai appuyer sur le prog de l'ABB et de ma carte KnxBoard).
- KnxBoard envoie un ACK ansi que ABB (juste après la trame 1)
- La trame 2, c'est la KnxBoard qui répond, le 3, c'est le ACK de ABB et TPUART
-Puis 4, c'est ABB qui envoie son adresse a sont tour... avec en 5, le Ack de TPUART et KnxBoard...
Bon, dans ce cas, ABB met plus de temps a répondre que ce que la norme prévoit... du coup, pas de collision...
Pour conclure, la partie la plus dure a faire est passé (enfin, reste encore la collision a gérer...)
Je vais pouvoir repasser sur les couches haute (ce qui avance en générale plus vite, car c'est de la programmation plus conventionnel, les couche basse, c'est des programmation de timers, et du debug a l'oscillo...).
Mon code est une reprise de zero depuis les spec en m'inspirant fortement du code de Thelsing, et le tout en C pure. Et pour le moment, tout ça pour 17Ko de section "text" (loin des 128Ko de ma carte knx-debug avec la stack Thelsing en C++ qui pourtant ne gère que le protocole du TpUart bien plus simple)...
J'ai pas encore mis tout le code sur GitHub (c'est prévu, mais je pense le mettre une fois le projet fonctionnel).
Mais si ça intéresse quelqu'un, je peux envoyer le code et le dossier KiCad de la carte V1 (qui demande 3 rework comme on le vois sur la photo + un oscillateur 32MHz externe) ou V2 (Schéma OK, mais pas encore routé).
Pour le moment, la carte fonctionne a 32MHz, la V2 sera je pense a 40MHz mais, en changeant la PLL interne, je peux passer a 80MHz sans changer le hardware, ce qui laisse pas mal de marge pour le projet...
Au niveau consommation, il faudra que je vérifie plus précisément avec un montage complet mais pour le moment a 32MHz sans mise en veille, je suis assez loin des 10mA de la norme...