Merge remote-tracking branch 'origin/abescat-patch-1'

This commit is contained in:
Oskar Orvik 2026-05-14 16:44:32 +02:00
commit 7f2a47bbf3
2 changed files with 912 additions and 138 deletions

View file

@ -0,0 +1,764 @@
<!DOCTYPE html>
<html lang="fr-FR" data-theme="forgejo-auto">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PIR_MadMax/PCB/CompatibiliteL4F4.pdf sur main - taban/PIR_MadMax - GitEtud</title>
<link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiR2l0RXR1ZCIsInNob3J0X25hbWUiOiJHaXRFdHVkIiwic3RhcnRfdXJsIjoiaHR0cHM6Ly9naXQuZXR1ZC5pbnNhLXRvdWxvdXNlLmZyLyIsImljb25zIjpbeyJzcmMiOiJodHRwczovL2dpdC5ldHVkLmluc2EtdG91bG91c2UuZnIvYXNzZXRzL2ltZy9sb2dvLnBuZyIsInR5cGUiOiJpbWFnZS9wbmciLCJzaXplcyI6IjUxMng1MTIifSx7InNyYyI6Imh0dHBzOi8vZ2l0LmV0dWQuaW5zYS10b3Vsb3VzZS5mci9hc3NldHMvaW1nL2xvZ28uc3ZnIiwidHlwZSI6ImltYWdlL3N2Zyt4bWwiLCJzaXplcyI6IjUxMng1MTIifV19">
<meta name="author" content="taban">
<meta name="description" content="PIR_MadMax - PIR (Projet Info Recherche) 4AE-SE INSA Toulouse MadMax">
<meta name="keywords" content="git,forge,forgejo">
<meta name="referrer" content="no-referrer">
<link rel="alternate" type="application/atom+xml" title="" href="/taban/PIR_MadMax.atom">
<link rel="alternate" type="application/rss+xml" title="" href="/taban/PIR_MadMax.rss">
<link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml">
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
<script>
window.addEventListener('error', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
window.addEventListener('unhandledrejection', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
window.config = {
appUrl: 'https:\/\/git.etud.insa-toulouse.fr\/',
appSubUrl: '',
assetVersionEncoded: encodeURIComponent('9.0.0~gitea-1.22.0'),
assetUrlPrefix: '\/assets',
runModeIsProd: true ,
customEmojis: {"codeberg":":codeberg:","forgejo":":forgejo:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"},
csrfToken: 'V5ZXeb80nzt_K-vBuAhT7I2i_rk6MTc3ODc2ODkyNDY1ODkzMzI4MQ',
pageData: {},
notificationSettings: {"EventSourceUpdateTime":10000,"MaxTimeout":60000,"MinTimeout":10000,"TimeoutStep":10000},
enableTimeTracking: true ,
mermaidMaxSourceCharacters: 5000 ,
i18n: {
copy_success: "Copié !",
copy_error: "Échec de la copie",
error_occurred: "Une erreur sest produite",
network_error: "Erreur réseau",
remove_label_str: "Supprimer lélément « %s »",
modal_confirm: "Confirmer",
modal_cancel: "Annuler",
more_items: "Plus d'éléments",
},
};
window.config.pageData = window.config.pageData || {};
</script>
<script src="/assets/js/webcomponents.js?v=9.0.0~gitea-1.22.0"></script>
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
<meta property="og:title" content="PIR_MadMax/PCB/CompatibiliteL4F4.pdf sur main">
<meta property="og:url" content="https://git.etud.insa-toulouse.fr//taban/PIR_MadMax/src/branch/main/PCB/CompatibiliteL4F4.pdf">
<meta property="og:type" content="object">
<meta property="og:image" content="https://git.etud.insa-toulouse.fr/avatars/4a5dbc25f5978c360521c4cfaaa883a18673e79ba7ca980555145a1a93b88bfe">
<meta property="og:site_name" content="GitEtud">
<link rel="stylesheet" href="/assets/css/index.css?v=9.0.0~gitea-1.22.0">
<link rel="stylesheet" href="/assets/css/theme-forgejo-auto.css?v=9.0.0~gitea-1.22.0">
</head>
<body hx-headers='{"x-csrf-token": "V5ZXeb80nzt_K-vBuAhT7I2i_rk6MTc3ODc2ODkyNDY1ODkzMzI4MQ"}' hx-swap="outerHTML" hx-ext="morph" hx-push-url="false">
<div class="full height">
<noscript>Ce site Web nécessite JavaScript.</noscript>
<nav id="navbar" aria-label="Barre de navigation">
<div class="navbar-left ui secondary menu">
<a class="item" id="navbar-logo" href="/" aria-label="Tableau de bord">
<img width="30" height="30" src="/assets/gitea-sm.png" alt="Logo" aria-hidden="true">
</a>
<div class="ui secondary menu item navbar-mobile-right only-mobile">
<a id="mobile-notifications-icon" class="item tw-w-auto tw-p-2" href="/notifications" data-tooltip-content="Notifications" aria-label="Notifications">
<div class="tw-relative">
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
<span class="notification_count tw-hidden">0</span>
</div>
</a>
<button class="item tw-w-auto ui icon mini button tw-p-2 tw-m-0" id="navbar-expand-toggle" aria-label="Menu va-et-vient"><svg viewBox="0 0 16 16" class="svg octicon-three-bars" aria-hidden="true" width="16" height="16"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75m0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75M1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5"/></svg></button>
</div>
<a class="item" href="/issues">Tickets</a>
<a class="item" href="/pulls">Demandes d'ajout</a>
<a class="item" href="/milestones">Jalons</a>
<a class="item" href="/explore/repos">Explorateur</a>
</div>
<div class="navbar-right ui secondary menu">
<a class="active-stopwatch-trigger item tw-mx-0 tw-hidden" href="" title="Suivi du temps actif">
<div class="tw-relative">
<svg viewBox="0 0 16 16" class="svg octicon-stopwatch" aria-hidden="true" width="16" height="16"><path d="M5.75.75A.75.75 0 0 1 6.5 0h3a.75.75 0 0 1 0 1.5h-.75v1l-.001.041a6.7 6.7 0 0 1 3.464 1.435l.007-.006.75-.75a.749.749 0 0 1 1.275.326.75.75 0 0 1-.215.734l-.75.75-.006.007a6.75 6.75 0 1 1-10.548 0L2.72 5.03l-.75-.75a.75.75 0 0 1 .018-1.042.75.75 0 0 1 1.042-.018l.75.75.007.006A6.7 6.7 0 0 1 7.25 2.541V1.5H6.5a.75.75 0 0 1-.75-.75M8 14.5a5.25 5.25 0 1 0-.001-10.501A5.25 5.25 0 0 0 8 14.5m.389-6.7 1.33-1.33a.75.75 0 1 1 1.061 1.06L9.45 8.861A1.503 1.503 0 0 1 8 10.75a1.499 1.499 0 1 1 .389-2.95"/></svg>
<span class="header-stopwatch-dot"></span>
</div>
<span class="only-mobile tw-ml-2">Suivi du temps actif</span>
</a>
<div class="active-stopwatch-popup item tippy-target tw-p-2">
<div class="tw-flex tw-items-center">
<a class="stopwatch-link tw-flex tw-items-center" href="">
<svg viewBox="0 0 16 16" class="tw-mr-2 svg octicon-issue-opened" aria-hidden="true" width="16" height="16"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0"/></svg>
<span class="stopwatch-issue">#</span>
<span class="ui primary label stopwatch-time tw-my-0 tw-mx-4" data-seconds="">
</span>
</a>
<form class="stopwatch-commit" method="post" action="/times/stopwatch/toggle">
<input type="hidden" name="_csrf" value="V5ZXeb80nzt_K-vBuAhT7I2i_rk6MTc3ODc2ODkyNDY1ODkzMzI4MQ">
<button
type="submit"
class="ui button mini compact basic icon"
data-tooltip-content="Arrêter le chronomètre"
><svg viewBox="0 0 16 16" class="svg octicon-square-fill" aria-hidden="true" width="16" height="16"><path d="M5.75 4h4.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 10.25 12h-4.5A1.75 1.75 0 0 1 4 10.25v-4.5C4 4.784 4.784 4 5.75 4"/></svg></button>
</form>
<form class="stopwatch-cancel" method="post" action="/times/stopwatch/cancel">
<input type="hidden" name="_csrf" value="V5ZXeb80nzt_K-vBuAhT7I2i_rk6MTc3ODc2ODkyNDY1ODkzMzI4MQ">
<button
type="submit"
class="ui button mini compact basic icon"
data-tooltip-content="Abandonner le minuteur"
><svg viewBox="0 0 16 16" class="svg octicon-trash" aria-hidden="true" width="16" height="16"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75M4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.75 1.75 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15M6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25"/></svg></button>
</form>
</div>
</div>
<a class="item not-mobile tw-mx-0" href="/notifications" data-tooltip-content="Notifications" aria-label="Notifications">
<div class="tw-relative">
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
<span class="notification_count tw-hidden">0</span>
</div>
</a>
<div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="Créer…">
<span class="text">
<svg viewBox="0 0 16 16" class="svg octicon-plus" aria-hidden="true" width="16" height="16"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2"/></svg>
<span class="not-mobile"><svg viewBox="0 0 16 16" class="svg octicon-triangle-down" aria-hidden="true" width="16" height="16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg></span>
<span class="only-mobile">Créer…</span>
</span>
<div class="menu">
<a class="item" href="/repo/create">
<svg viewBox="0 0 16 16" class="svg octicon-plus" aria-hidden="true" width="16" height="16"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2"/></svg> Nouveau dépôt
</a>
<a class="item" href="/repo/migrate">
<svg viewBox="0 0 16 16" class="svg octicon-repo-push" aria-hidden="true" width="16" height="16"><path d="M1 2.5A2.5 2.5 0 0 1 3.5 0h8.75a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0V1.5h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 3.5 9h3.25a.75.75 0 0 1 0 1.5H3.5a1 1 0 0 0 0 2h5.75a.75.75 0 0 1 0 1.5H3.5A2.5 2.5 0 0 1 1 11.5Zm13.23 7.79zl-1.224-1.224v6.184a.75.75 0 0 1-1.5 0V9.066L10.28 10.29a.75.75 0 0 1-1.06-1.061l2.505-2.504a.75.75 0 0 1 1.06 0L15.29 9.23a.75.75 0 0 1-.018 1.042.75.75 0 0 1-1.042.018"/></svg> Nouvelle migration
</a>
</div>
</div>
<div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="Profil et réglages…">
<span class="text tw-flex tw-items-center">
<img loading="lazy" class="ui avatar tw-align-middle tw-mr-1" src="/avatar/17d9c3a181425ea19512346b4af53571?size=48" title="Karima Attar" width="24" height="24"/>
<span class="only-mobile tw-ml-2">kattar</span>
<span class="not-mobile"><svg viewBox="0 0 16 16" class="svg octicon-triangle-down" aria-hidden="true" width="16" height="16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg></span>
</span>
<div class="menu user-menu">
<div class="ui header">
Connecté en tant que <strong>kattar</strong>
</div>
<div class="divider"></div>
<a class="item" href="/kattar">
<svg viewBox="0 0 16 16" class="svg octicon-person" aria-hidden="true" width="16" height="16"><path d="M10.561 8.073a6 6 0 0 1 3.432 5.142.75.75 0 1 1-1.498.07 4.5 4.5 0 0 0-8.99 0 .75.75 0 0 1-1.498-.07 6 6 0 0 1 3.431-5.142 3.999 3.999 0 1 1 5.123 0M10.5 5a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0"/></svg>
Profil
</a>
<a class="item" href="/kattar?tab=stars">
<svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg>
Favoris
</a>
<a class="item" href="/notifications/subscriptions">
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
Abonnements
</a>
<a class="item" href="/user/settings">
<svg viewBox="0 0 16 16" class="svg octicon-tools" aria-hidden="true" width="16" height="16"><path d="M5.433 2.304A4.49 4.49 0 0 0 3.5 6c0 1.598.832 3.002 2.09 3.802.518.328.929.923.902 1.64v.008l-.164 3.337a.75.75 0 1 1-1.498-.073l.163-3.33c.002-.085-.05-.216-.207-.316A6 6 0 0 1 2 6a6 6 0 0 1 2.567-4.92 1.48 1.48 0 0 1 1.673-.04c.462.296.76.827.76 1.423v2.82c0 .082.041.16.11.206l.75.51a.25.25 0 0 0 .28 0l.75-.51A.25.25 0 0 0 9 5.282V2.463c0-.596.298-1.127.76-1.423a1.48 1.48 0 0 1 1.673.04A6 6 0 0 1 14 6a6 6 0 0 1-2.786 5.068c-.157.1-.209.23-.207.315l.163 3.33a.752.752 0 0 1-1.094.714.75.75 0 0 1-.404-.64l-.164-3.345c-.027-.717.384-1.312.902-1.64A4.5 4.5 0 0 0 12.5 6a4.49 4.49 0 0 0-1.933-3.696c-.024.017-.067.067-.067.16v2.818a1.75 1.75 0 0 1-.767 1.448l-.75.51a1.75 1.75 0 0 1-1.966 0l-.75-.51A1.75 1.75 0 0 1 5.5 5.282V2.463c0-.092-.043-.142-.067-.159"/></svg>
Configuration
</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/">
<svg viewBox="0 0 16 16" class="svg octicon-question" aria-hidden="true" width="16" height="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13M6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.76 2.76 0 0 1 1.637.525c.503.377.863.965.863 1.725 0 .448-.115.83-.329 1.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6 6 0 0 0-.26.16 1 1 0 0 0-.276.245.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661q.154-.1.313-.195l.007-.004c.1-.061.182-.11.258-.161a1 1 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.61.61 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1 1 0 0 0-.34.398M9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></svg>
Aide
</a>
<div class="divider"></div>
<a class="item link-action" href data-url="/user/logout">
<svg viewBox="0 0 16 16" class="svg octicon-sign-out" aria-hidden="true" width="16" height="16"><path d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25Zm10.44 4.5-1.97-1.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734l1.97-1.97H6.75a.75.75 0 0 1 0-1.5Z"/></svg>
Déconnexion
</a>
</div>
</div>
</div>
</nav>
<div role="main" aria-label="PIR_MadMax/PCB/CompatibiliteL4F4.pdf sur main" class="page-content repository file list ">
<div class="secondary-nav">
<div class="ui container">
<div class="repo-header">
<div class="flex-item tw-items-center">
<div class="flex-item-leading">
<svg viewBox="0 0 16 16" class="svg octicon-repo" aria-hidden="true" width="24" height="24"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.5 2.5 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.25.25 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>
</div>
<div class="flex-item-main">
<div class="flex-item-title gt-font-18">
<a class="muted gt-font-normal" href="/taban">taban</a>/<a class="muted" href="/taban/PIR_MadMax">PIR_MadMax</a>
</div>
</div>
<div class="flex-item-trailing">
</div>
</div>
<div class="repo-buttons button-row">
<a class="ui compact small basic button" href="/taban/PIR_MadMax.rss" data-tooltip-content="Flux RSS">
<svg viewBox="0 0 16 16" class="svg octicon-rss" aria-hidden="true" width="16" height="16"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
</a>
<form hx-boost="true" hx-target="this" method="post" action="/taban/PIR_MadMax/action/watch">
<div class="ui labeled button" >
<button type="submit" class="ui compact small basic button">
<svg viewBox="0 0 16 16" class="svg octicon-eye" aria-hidden="true" width="16" height="16"><path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14s-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2M1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5s2.825-.742 3.955-1.715c1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5s-2.825.742-3.955 1.715c-1.124.967-1.954 2.096-2.366 2.717M8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10"/></svg><span class="text not-mobile">Suivre</span>
</button>
<a hx-boost="false" class="ui basic label" href="/taban/PIR_MadMax/watchers">
2
</a>
</div>
</form>
<form hx-boost="true" hx-target="this" method="post" action="/taban/PIR_MadMax/action/star">
<div class="ui labeled button" >
<button type="submit" class="ui compact small basic button">
<svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg><span class="text not-mobile">Ajouter aux favoris</span>
</button>
<a hx-boost="false" class="ui basic label" href="/taban/PIR_MadMax/stars">
4
</a>
</div>
</form>
<div class="ui labeled button
"
>
<a class="ui compact small basic button"
href="/taban/PIR_MadMax/fork"
>
<svg viewBox="0 0 16 16" class="svg octicon-repo-forked" aria-hidden="true" width="16" height="16"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0M5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0m6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5m-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0"/></svg><span class="text not-mobile">Bifurcation</span>
</a>
<div class="ui small modal" id="fork-repo-modal">
<div class="header">
Vous avez déjà forké PIR_MadMax
</div>
<div class="content tw-text-left">
<div class="ui list">
</div>
<div class="divider"></div>
<a href="/taban/PIR_MadMax/fork">Créer une bifurcation vers un autre compte</a>
</div>
</div>
<a class="ui basic label" href="/taban/PIR_MadMax/forks">
0
</a>
</div>
</div>
</div>
</div>
<overflow-menu class="ui container secondary pointing tabular top attached borderless menu tw-pt-0 tw-my-0">
<div class="overflow-menu-items">
<a class="active item" href="/taban/PIR_MadMax">
<svg viewBox="0 0 16 16" class="svg octicon-code" aria-hidden="true" width="16" height="16"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215m-6.56 0a.75.75 0 0 1 1.042.018.75.75 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"/></svg> Code
</a>
<a class="item" href="/taban/PIR_MadMax/issues">
<svg viewBox="0 0 16 16" class="svg octicon-issue-opened" aria-hidden="true" width="16" height="16"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0"/></svg> Tickets
<span class="ui small label">4</span>
</a>
<a class="item" href="/taban/PIR_MadMax/pulls">
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" aria-hidden="true" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25m5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354M3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0"/></svg> Demandes d'ajout
</a>
<a href="/taban/PIR_MadMax/projects" class="item">
<svg viewBox="0 0 16 16" class="svg octicon-project" aria-hidden="true" width="16" height="16"><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0M1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25M11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75m-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3"/></svg> Projets
</a>
<a class="item" href="/taban/PIR_MadMax/releases">
<svg viewBox="0 0 16 16" class="svg octicon-tag" aria-hidden="true" width="16" height="16"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.75 1.75 0 0 1 1 7.775m1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></svg> Publications
</a>
<a href="/taban/PIR_MadMax/packages" class="item">
<svg viewBox="0 0 16 16" class="svg octicon-package" aria-hidden="true" width="16" height="16"><path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0M7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.25.25 0 0 0-.25 0M2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"/></svg> Paquets
</a>
<a class="item" href="/taban/PIR_MadMax/wiki">
<svg viewBox="0 0 16 16" class="svg octicon-book" aria-hidden="true" width="16" height="16"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.74 3.74 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574M8.755 4.75l-.004 7.322a3.75 3.75 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25"/></svg> Wiki
</a>
<a class="item" href="/taban/PIR_MadMax/activity">
<svg viewBox="0 0 16 16" class="svg octicon-pulse" aria-hidden="true" width="16" height="16"><path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.75.75 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.75.75 0 0 1 6 2"/></svg> Activité
</a>
<a class="item" href="/taban/PIR_MadMax/actions">
<svg viewBox="0 0 16 16" class="svg octicon-play" aria-hidden="true" width="16" height="16"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0m4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215"/></svg> Actions
</a>
</div>
</overflow-menu>
<div class="ui tabs divider"></div>
</div>
<div class="ui container ">
<div id="flash-message" hx-swap-oob="true"></div>
<div class="repo-button-row">
<div class="tw-flex tw-items-center tw-gap-y-2">
<script type="module">
const data = {
'textReleaseCompare': "Comparer",
'textCreateTag': "Créer l'étiquette %s",
'textCreateBranch': "Créer la branche %s",
'textCreateBranchFrom': "de \"%s\"",
'textBranches': "Branches",
'textTags': "Étiquettes",
'textDefaultBranchLabel': "défaut",
'mode': 'branches',
'showBranchesInDropdown': true ,
'searchFieldPlaceholder': 'Filtrer une branche ou une étiquette...',
'branchForm': null ,
'disableCreateBranch': false ,
'setAction': null ,
'submitForm': null ,
'viewType': "branch",
'refName': "main",
'commitIdShort': "493e127183",
'tagName': "",
'branchName': "main",
'noTag': null ,
'defaultSelectedRefName': "main",
'repoDefaultBranch': "main",
'enableFeed': true ,
'rssURLPrefix': '\/taban\/PIR_MadMax/rss/branch/',
'branchURLPrefix': '\/taban\/PIR_MadMax/src/branch/',
'branchURLSuffix': '/PCB\/CompatibiliteL4F4.pdf',
'tagURLPrefix': '\/taban\/PIR_MadMax/src/tag/',
'tagURLSuffix': '/PCB\/CompatibiliteL4F4.pdf',
'repoLink': "/taban/PIR_MadMax",
'treePath': "PCB/CompatibiliteL4F4.pdf",
'branchNameSubURL': "branch/main",
'noResults': "Aucun résultat trouvé.",
};
window.config.pageData.branchDropdownDataList = window.config.pageData.branchDropdownDataList || [];
window.config.pageData.branchDropdownDataList.push(data);
</script>
<div class="js-branch-tag-selector tw-mr-1">
<div class="ui dropdown custom">
<button class="branch-dropdown-button gt-ellipsis ui basic small compact button tw-flex tw-m-2">
<span class="text tw-flex tw-items-center tw-mr-1 gt-ellipsis">
<svg viewBox="0 0 16 16" class="svg octicon-git-branch" aria-hidden="true" width="16" height="16"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.5 2.5 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25m-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0m8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5M4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5"/></svg>
<strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">main</strong>
</span>
<svg viewBox="0 0 16 16" class="dropdown icon svg octicon-triangle-down" aria-hidden="true" width="14" height="14"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg>
</button>
</div>
</div>
<a id="new-pull-request" role="button" class="ui compact basic button" href="/taban/PIR_MadMax/compare/main...main"
data-tooltip-content="Nouvelle demande dajout">
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" aria-hidden="true" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25m5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354M3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0"/></svg>
</a>
<span class="breadcrumb repo-path tw-ml-1">
<a class="section" href="/taban/PIR_MadMax/src/branch/main" title="PIR_MadMax">PIR_MadMax</a><span class="breadcrumb-divider">/</span><span class="section"><a href="/taban/PIR_MadMax/src/branch/main/PCB" title="PCB">PCB</a></span><span class="breadcrumb-divider">/</span><span class="active section" title="CompatibiliteL4F4.pdf">CompatibiliteL4F4.pdf</span></span>
</div>
<div class="tw-flex tw-items-center">
</div>
</div>
<div class="tab-size-4 non-diff-file-content">
<div id="repo-file-commit-box" class="ui segment list-header tw-mb-4 tw-flex tw-justify-between">
<div class="latest-commit">
<img loading="lazy" class="ui avatar tw-align-middle tw-mr-2" src="/avatar/2c0f78f319bc7d5082e4361e019ea9ef?size=48" title="Hugo Abescat" width="24" height="24"/>
<a class="muted author-wrapper" title="abescat" href="/abescat"><strong>abescat</strong></a>
<a rel="nofollow" class="ui sha label " href="/taban/PIR_MadMax/commit/86584c62fedc11adf44cb3008f4e653337072af9">
<span class="shortsha">86584c62fe</span>
</a>
<span class="grey commit-summary" title="Tableau récapitulatif broches L4/F4"><span class="message-wrapper"><a href="/taban/PIR_MadMax/commit/86584c62fedc11adf44cb3008f4e653337072af9" class="default-link muted">Tableau récapitulatif broches L4/F4</a></span>
</span>
</div>
<div class="text grey age">
<relative-time prefix="" tense="past" datetime="2026-03-10T18:10:38+01:00" data-tooltip-content data-tooltip-interactive="true">2026-03-10 18:10:38 +01:00</relative-time>
</div>
</div>
<h4 class="file-header ui top attached header tw-flex tw-items-center tw-justify-between tw-flex-wrap">
<div class="file-header-left tw-flex tw-items-center tw-py-2 tw-pr-4">
<div class="file-info tw-font-mono">
<div class="file-info-entry">
116 Kio
</div>
</div>
</div>
<div class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap">
<div class="ui buttons tw-mr-1">
<a class="ui mini basic button" href="/taban/PIR_MadMax/raw/branch/main/PCB/CompatibiliteL4F4.pdf">Brut</a>
<a class="ui mini basic button" href="/taban/PIR_MadMax/src/commit/493e127183ffc6f187faff99afc3653b9ad7669f/PCB/CompatibiliteL4F4.pdf">Lien permanent</a>
<a class="ui mini basic button" href="/taban/PIR_MadMax/commits/branch/main/PCB/CompatibiliteL4F4.pdf">Historique</a>
</div>
<a download href="/taban/PIR_MadMax/raw/branch/main/PCB/CompatibiliteL4F4.pdf"><span class="btn-octicon" data-tooltip-content="Télécharger le fichier"><svg viewBox="0 0 16 16" class="svg octicon-download" aria-hidden="true" width="16" height="16"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"/><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06z"/></svg></span></a>
<a href="#" id="copy-content" class="btn-octicon disabled" data-tooltip-content="Ce type de fichier ne peut pas être copié"><svg viewBox="0 0 16 16" class="svg octicon-copy" aria-hidden="true" width="14" height="14"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg></a>
<a class="btn-octicon" href="/taban/PIR_MadMax/rss/branch/main/PCB/CompatibiliteL4F4.pdf" data-tooltip-content="Flux RSS">
<svg viewBox="0 0 16 16" class="svg octicon-rss" aria-hidden="true" width="14" height="14"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
</a>
<span class="btn-octicon disabled" data-tooltip-content="Les fichiers binaires ne peuvent pas être édités dans l&#39;interface web."><svg viewBox="0 0 16 16" class="svg octicon-pencil" aria-hidden="true" width="16" height="16"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.25.25 0 0 0-.064.108l-.558 1.953 1.953-.558a.25.25 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"/></svg></span>
<a href="/taban/PIR_MadMax/_delete/main/PCB/CompatibiliteL4F4.pdf"><span class="btn-octicon btn-octicon-danger" data-tooltip-content="Supprimer le fichier"><svg viewBox="0 0 16 16" class="svg octicon-trash" aria-hidden="true" width="16" height="16"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75M4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.75 1.75 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15M6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25"/></svg></span></a>
</div>
</h4>
<div class="ui bottom attached table unstackable segment">
<div class="file-view">
<div class="view-raw">
<div class="pdf-content is-loading" data-src="/taban/PIR_MadMax/raw/branch/main/PCB/CompatibiliteL4F4.pdf" data-fallback-button-text="Voir le fichier"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="page-footer" role="group" aria-label="Pied de page">
<div class="left-links" role="contentinfo" aria-label="À propos du logiciel">
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org">Propulsé par Forgejo</a>
</div>
<div class="right-links" role="group" aria-label="Liens">
<div class="ui dropdown upward language">
<span class="flex-text-inline"><svg viewBox="0 0 16 16" class="svg octicon-globe" aria-hidden="true" width="14" height="14"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M5.78 8.75a9.64 9.64 0 0 0 1.363 4.177q.383.64.857 1.215c.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a10 10 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.51 6.51 0 0 0 4.666 5.5q-.184-.271-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948m-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948q.18-.295.353-.552a6.51 6.51 0 0 0-4.666 5.5m10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948q-.18.296-.353.552a6.51 6.51 0 0 0 4.666-5.5Zm2.733-1.5a6.51 6.51 0 0 0-4.666-5.5q.184.272.353.552c.714 1.192 1.436 2.874 1.58 4.948Z"/></svg> Français</span>
<div class="menu language-menu">
<a lang="id-ID" data-url="/?lang=id-ID" class="item ">Bahasa Indonesia</a>
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
<a lang="en-US" data-url="/?lang=en-US" class="item ">English</a>
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">Español</a>
<a lang="eo" data-url="/?lang=eo" class="item ">Esperanto</a>
<a lang="fil" data-url="/?lang=fil" class="item ">Filipino</a>
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item active selected">Français</a>
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">Italiano</a>
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">Latviešu</a>
<a lang="hu-HU" data-url="/?lang=hu-HU" class="item ">Magyar nyelv</a>
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">Polski</a>
<a lang="pt-PT" data-url="/?lang=pt-PT" class="item ">Português de Portugal</a>
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">Português do Brasil</a>
<a lang="sl" data-url="/?lang=sl" class="item ">Slovenščina</a>
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">Suomi</a>
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">Svenska</a>
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">Čeština</a>
<a lang="el-GR" data-url="/?lang=el-GR" class="item ">Ελληνικά</a>
<a lang="bg" data-url="/?lang=bg" class="item ">Български</a>
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">Русский</a>
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
<a lang="fa-IR" data-url="/?lang=fa-IR" class="item ">فارسی</a>
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item ">한국어</a>
</div>
</div>
<a href="/assets/licenses.txt">Licences</a>
</div>
</footer>
<script src="/assets/js/index.js?v=9.0.0~gitea-1.22.0" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script>
</body>
</html>

View file

@ -179,7 +179,8 @@ carries higher hardware costs (sensors, processing power).
FOC provides faster response times and better load disturbance rejection \cite{jomsa-nga_torque_2024}. FOC provides faster response times and better load disturbance rejection \cite{jomsa-nga_torque_2024}.
\section{Research gap}
\section{Research Gap}
The literature presented in the previous sections shows that significant work has been carried out on BLDC The literature presented in the previous sections shows that significant work has been carried out on BLDC
motor control strategies, especially for torque ripple reduction, efficiency improvement, and dynamic performance motor control strategies, especially for torque ripple reduction, efficiency improvement, and dynamic performance
@ -240,143 +241,152 @@ assistance based on system dynamics.
\section{STM32-Based Field-Oriented Control Motor Drive} \section{STM32-Based Field-Oriented Control Motor Drive}
\label{sec:foc} \label{sec:foc}
This section presents the design and implementation of a high-performance This section presents the design and implementation of a high-performance
motor controller based on Field-Oriented Control (FOC). motor controller based on Field-Oriented Control (FOC).
\subsection{Choice of FOC Over Trapezoidal Commutation} \subsection{Choice of FOC Over Trapezoidal Commutation}
Table~\ref{tab:foc_vs_trap} summarizes the key differences between the Table~\ref{tab:foc_vs_trap} summarizes the key differences between the
two commutation strategies, based on the literature reviewed in two commutation strategies, based on the literature reviewed in
Section~\ref{sec:relatedwork}. Section~\ref{sec:related}.
\begin{table}[htbp] \begin{table}[htbp]
\caption{Comparison between FOC and trapezoidal (six-step) commutation} \caption{Comparison between FOC and trapezoidal (six-step) commutation}
\label{tab:foc_vs_trap} \label{tab:foc_vs_trap}
\centering \centering
\begin{tabular}{lcc} \begin{tabular}{lcc}
\toprule \toprule
\textbf{Criterion} & \textbf{FOC} & \textbf{Six-Step} \\ \textbf{Criterion} & \textbf{FOC} & \textbf{Six-Step} \\
\midrule \midrule
Torque ripple (at 500 rpm) & \SI{18.4}{\percent} & \SI{35.7}{\percent} \\ Torque ripple (at 500 rpm) & \SI{18.4}{\percent} & \SI{35.7}{\percent} \\
Low-load efficiency & High & Moderate \\ Low-load efficiency & High & Moderate \\
High-speed switching loss & Higher & Lower \\ High-speed switching loss & Higher & Lower \\
Position sensor requirement & Encoder (high resolution) & Hall sensors \\ Position sensor requirement & Encoder (high resolution) & Hall sensors \\
Implementation complexity & High & Low \\ Implementation complexity & High & Low \\
Hardware cost & Higher & Lower \\ Hardware cost & Higher & Lower \\
Dynamic response & Fast & Standard \\ Dynamic response & Fast & Standard \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}
\end{table} \end{table}
For our cargo bike application, rider comfort and smooth torque delivery For our cargo bike application, rider comfort and smooth torque delivery
are priorities. FOC was therefore selected for the high-performance are priorities. FOC was therefore selected for the high-performance
controller, while a separate low-tech six-step board (Section~\ref{sec:sixstep}) controller, while a separate low-tech six-step board (Section~\ref{sec:sixstep})
was developed for repairability. was developed for repairability.
\subsection{Base Design: Cheap FOCer-2 Project} \subsection{Base Design: Cheap FOCer-2 Project}
The starting point was the open-source \textit{Cheap FOCer-2} project, The starting point was the open-source \textit{Cheap FOCer-2} project,
which provides a complete KiCad design for a VESC-compatible board based which provides a complete KiCad design for a VESC-compatible board based
on an STM32F405 microcontroller. This design includes: on an STM32F405 microcontroller. This design includes:
\begin{itemize} \begin{itemize}
\item A three-phase MOSFET full-bridge power stage. \item A three-phase MOSFET full-bridge power stage.
\item Gate drivers with built-in dead-time insertion. \item Gate drivers with built-in dead-time insertion.
\item Shunt resistors for phase current sensing. \item Shunt resistors for phase current sensing.
\item USB and CAN interfaces. \item USB and CAN interfaces.
\item An expansion header for encoder or Hall sensors. \item An expansion header for encoder or Hall sensors.
\end{itemize} \end{itemize}
The existing KiCad schematic and layout were used as the baseline for The existing KiCad schematic and layout were used as the baseline for
our adaptations. our adaptations.
\subsection{Integration of the Rocacher FOC Tile} \subsection{Integration of the Rocacher FOC Tile}
Mr. Rocacher provided the Kicad schematic of a ready-to-use FOC tile based on an STM32L476 Mr. Rocacher provided the Kicad schematic of a ready-to-use FOC tile based on an STM32L476
microcontroller. microcontroller.
The initial idea was to make this tile \textit{pluggable} into our The initial idea was to make this tile \textit{pluggable} into our
carrier board, similar to an Arduino shield. This would allow: carrier board, similar to an Arduino shield. This would allow :
\begin{itemize} \begin{itemize}
\item Easy replacement of the computing core without re-soldering. \item Easy replacement of the computing core without re-soldering.
\item Modular upgrades of the microcontroller. \item Modular upgrades of the microcontroller.
\item Simplified repair and maintenance. \item Simplified repair and maintenance.
\end{itemize} \end{itemize}
However, the Cheap FOCer-2 project was not designed for such modularity. However, the Cheap FOCer-2 project was not designed for such modularity.
Its routing is dense and highly optimized for a single, non-removable Its routing is dense and highly optimized for a single, non-removable
F405 chip. Adapting it to accept an L476 tile while preserving all F405 chip. Adapting it to accept an L476 tile while preserving all
critical functions (PWM, current sensing, USB communication) proved critical functions (PWM, current sensing, USB communication) proved
challenging. challenging.
\subsection{Pin Compatibility Verification: L476 vs F405} \subsection{Pin Compatibility Verification: L476 vs F405}
Before modifying the PCB, a thorough pin compatibility check was Before starting the PCB modifications, a pin compatibility study was carried out between the STM32L476
performed between the STM32L476 and the STM32F405 used on the Rocacher tile and the STM32F405 originally used in the Cheap FOCer-2 design. The objective
(original Cheap FOCer-2 design). The following aspects were examined: was to verify that the main functions required by the VESC firmware could still be used after replacing
\begin{itemize} the original microcontroller.
\item Physical pinout in LQFP64 package.
\item Alternate functions for PWM timers.
\item USB DP/DM pins (PA11/PA12).
\item Analog inputs for current sensing.
\item UART for BLE communication.
\end{itemize}
Three pin conflicts were identified and resolved as follows. The verification mainly focused on:
\begin{itemize}
\item Physical pinout compatibility in the LQFP64 package,
\item PWM timer for Alternate functions,
\item USB DP/DM pins (PA11/PA12),
\item Analog inputs for current sensing,
\item UART communication for BLE integration.
\end{itemize}
First, the SPI\_MISO function on PA6 for the STM32F405 conflicts with a During this analysis, three main pin conflicts were identified.
DAC output on the same pin for the STM32L476 tile. Since this pin is
used for current sensing via SPI in the original Cheap FOCer-2 design,
the SPI communication was remapped to PA5 on the L476, which provides a
compatible alternate function.
Second, the gate driver enable signal (EN\_GATE) was originally assigned The first conflict concerned the SPI\_MISO signal on pin PA6. In the original STM32F405 design, this pin is
to PB5 on the F405. This pin is not accessible on the L476 used for SPI communication related to current sensing. On the STM32L476 tile, the same pin is associated with
tile. The signal was therefore moved to PC5, which is available and a DAC output, creating a functional conflict. To solve this issue, the SPI communication line was remapped
can be configured as a standard GPIO output. to PA5 on the L476, which offers a compatible alternate function.
Third, Hall sensor C was originally connected to PC8 (TIM8) on the F405. The second issue concerned the EN\_GATE signal. In the original design, this signal was connected to PB5 on
This pin is not available on the L476 tile. The Hall sensor input was the STM32F405. However, this pin is not accessible on the L476 tile. The signal was therefore moved to PC5,
therefore reassigned to PB3, configured as TIM2\_CH2, which provides configured as a standard GPIO output.
the necessary input capture functionality for Hall signal decoding.
All other critical functions (PWM timers, complementary PWM, enable Finally, Hall sensor C was originally connected to PC8 (TIM8) on the STM32F405. Since this pin is not available
signals, encoder inputs, UART, USB, and CAN) remain fully compatible on the tile connector, the Hall sensor input was reassigned to PB3 using the TIM2\_CH2 alternate function,
between the two microcontrollers. The ADC channel differences between which preserves the input capture capability required for Hall sensor decoding.
the F405 (ADC123/ADC12) and the L476 (ADC3) must still be handled in
firmware, as noted previously.
\subsection{Schematic Design and KiCad Implementation} All other important functions remained compatible between the two microcontrollers, including PWM generation,
complementary PWM outputs, encoder inputs, UART, USB, and CAN communication. Some differences between the ADC
peripherals of the STM32F405 and STM32L476 still remain and will require firmware adaptations in future work.
The original Cheap FOCer-2 schematic was modified in KiCad to replace the \subsection{Schematic Design and KiCad Implementation}
integrated F405 with connectors for the L476 tile. The main modifications
included:
\begin{itemize}
\item Removal of the F405 and its associated passive components.
\item Addition of two 20-pin headers to receive the Rocacher tile.
\item Re-routing of PWM, ADC, and USB signals to the headers.
\end{itemize}
The schematic passed Electrical Rule Check (ERC) with no errors. The original Cheap FOCer-2 schematic was modified in KiCad in order to replace the integrated STM32F405
microcontroller with connectors for the Rocacher STM32L476 tile. The objective was to make the control part more
modular and easier to replace without modifying the power stage of the board.
\subsection{Routing Challenges and Current Status} The main modifications performed on the schematic were:
\begin{itemize}
\item Removal of the STM32F405 and its associated passive components.
\item Addition of two 20-pin headers for the L476 tile connection.
\item Re-routing of PWM, ADC, USB, and communication signals toward the headers.
\end{itemize}
The PCB layout was then started. The original Cheap FOCer-2 routing is Special attention was given to the routing of critical control signals, especially the PWM outputs used for
very dense. Inserting connectors for the removable tile while maintaining signal integrity proved motor commutation and the analog signals used for current sensing.
difficult.
The main issues encountered were: After the modifications, the schematic was verified using the KiCad Electrical Rule Check (ERC). No electrical
\begin{itemize} errors were detected during this verification step, which validated the consistency of the schematic before
\item Some footprints for the tile connectors did not appear correctly starting the PCB routing phase.
in the layout after schematic import.
\item Routing of high-current paths (battery, motor phases) around the
connectors required additional vias, increasing resistance.
\item Decoupling capacitors had to be repositioned, raising concerns
about switching noise.
\end{itemize}
Currently, the schematic is validated, and the layout is under \subsection{Routing Challenges and Current Status}
development. Once routing is completed, the board will be manufactured
and tested with the VESC firmware adapted to the L476 tile. After validating the schematic, the PCB routing phase was started in KiCad. The original Cheap FOCer-2 board
uses a very compact layout with dense routing around the STM32F405 microcontroller and the power stage.
Integrating connectors for a removable STM32L476 tile introduced several additional routing constraints.
One of the main difficulties was maintaining proper signal routing while keeping enough space for the tile
connectors and preserving the integrity of the control signals. Particular attention had to be given to the PWM
signals, current sensing traces, and power connections.
Several issues were encountered during the routing process:
\begin{itemize}
\item Some connector footprints associated with the tile did not appear correctly after importing the schematic
into the PCB layout.
\item The routing of high-current paths, especially the battery and motor phase connections, become more complex
due to the additional connectors and required extra vias.
\item Some Decoupling capacitors had to be repositioned, which could potentially affect switching noise and power
supply stability.
\end{itemize}
At the current stage of the project, the schematic has been validated and the PCB layout is still under development.
Once the routing is completed, the board will be manufactured and tested using the VESC firmware adapted for the
STM32L476 tile.
% ************************************** SOFTWARE AND CONNECTIVITY ***************************************************** % ************************************** SOFTWARE AND CONNECTIVITY *****************************************************