# Etkileşimli STM32 CAN ve Mesaj Filtreleme

<div class="mlv-demo-links">
  <a class="mlv-demo-link" href="index.html">STM32 Rotasi</a>
  <a class="mlv-demo-link" href="interactive_gpio_lab.html">GPIO Laboratuvari</a>
  <a class="mlv-demo-link" href="interactive_clock_timer_lab.html">Clock ve Timer</a>
  <a class="mlv-demo-link" href="interactive_uart_lab.html">UART ve Terminal</a>
  <a class="mlv-demo-link" href="interactive_pwm_lab.html">PWM Laboratuvari</a>
  <a class="mlv-demo-link" href="interactive_adc_lab.html">ADC ve Sensorler</a>
  <a class="mlv-demo-link" href="interactive_i2c_lab.html">I2C ve Sensorler</a>
  <a class="mlv-demo-link" href="interactive_interrupt_dma_lab.html">Interrupt ve DMA</a>
  <a class="mlv-demo-link" href="interactive_spi_lab.html">SPI ve Cevre Birimleri</a>
  <a class="mlv-demo-link" href="interactive_freertos_lab.html">FreeRTOS ve Gorevler</a>
  <a class="mlv-demo-link" href="interactive_low_power_lab.html">Low Power ve Uyku</a>
  <a class="mlv-demo-link" href="interactive_mutex_priority_lab.html">Mutex ve PI</a>
  <a class="mlv-demo-link" href="interactive_tickless_idle_lab.html">Tickless Idle</a>
  <a class="mlv-demo-link" href="interactive_event_groups_lab.html">Event Groups</a>
  <a class="mlv-demo-link active" href="interactive_can_filter_lab.html">CAN Filtreleme</a>
  <a class="mlv-demo-link" href="interactive_watchdog_fault_lab.html">Watchdog</a>
  <a class="mlv-demo-link" href="interactive_usb_cdc_ring_lab.html">USB CDC</a>
  <a class="mlv-demo-link secondary" href="../_static/demos/stm32-can-filter-lab.html">Tam Ekran Demo</a>
</div>

<div class="mlv-demo-hero">
  <div class="mlv-demo-kicker">STM32 / Ders 14</div>
  <p class="mlv-demo-lead">Bu laboratuvar, `CAN filter` kavramini yalnizca register ayari olarak degil; gereksiz frame'leri daha periferalde kesen, ISR/FIFO yukunu azaltan ve yanlis ayarda ise kritik mesajlari kacirabilen somut bir sistem karari olarak gorunur kilar. Hedef, `accept all`, `ID list` ve `ID mask` secimlerini ayni bus akisi uzerinden sezgisel hale getirmektir.</p>
</div>

<div class="mlv-demo-grid">
  <div class="mlv-demo-panel">
    <strong>Ne Yap</strong>
    <span>Bus profilini, filtre modunu, ID slotlarini, mask genisligini ve uygulama servis araligini degistir; ardindan kabul edilen frame sayisi, FIFO baskisi ve noise yukunu izle.</span>
  </div>
  <div class="mlv-demo-panel">
    <strong>Ne Ogren</strong>
    <span>`accept all`, `ID list`, `ID mask`, `false accept`, `useful miss` ve `FIFO overflow` kavramlarinin neden ayni karar zincirine ait oldugunu gor.</span>
  </div>
  <div class="mlv-demo-panel">
    <strong>Gorev</strong>
    <span>Once tum trafik acikken neden ISR yukunun arttigini gor. Sonra filtreyi daraltip gerekli frame'leri kacirmadan noise'u azaltacak bir ayar kur.</span>
  </div>
</div>

<div class="mlv-demo-note">
CAN filtresi "ne gelirse parser ayiklar" diye gecistirilebilecek bir ayrinti degildir. Filtre fazla gevsek olursa uygulama gereksiz trafik tasir; fazla sert olursa hayati frame'ler daha periferalde kaybolur.
</div>

<iframe
  class="mlv-demo-frame"
  src="../_static/demos/stm32-can-filter-lab.html"
  title="STM32 CAN ve Mesaj Filtreleme"
  loading="lazy"
  frameborder="0"
></iframe>

## Bu Derste Ne Oturmali?

1. `Accept all`, ilk deneme icin kolay gorunebilir ama gercek sistemde ISR ve FIFO yukunu gereksizce buyutebilir.
2. `ID list`, belirli frame'leri tam isabetle almak icin temizdir; ama eksik slot secimi yararli mesajlari disarida birakabilir.
3. `ID mask`, bir mesaj ailesini birlikte almak icin gucludur; fakat mask fazla genisse noise frame'leri de iceri alabilir.
4. Dogru filtre secimi sadece register yazmak degil; uygulamanin hangi frame'lere ihtiyaci oldugunu, parser kapasitesini ve bus gurultusunu birlikte dusunmektir.

```{note}
Bir sonraki dogal laboratuvarlar `USB CDC + ring buffer`, `stream buffer / message buffer`, `reset reason + backup registers` ya da `FDCAN + mailbox` olabilir.
```
