2020-09-26 15:34:18 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00
2020-08-22 20:02:11 -04:00

LED Face Mask

Yep, it's gonna be awesome!

Configuration

  • Hardware:

    • STM32F429I-DISC1 Board
      • Contains STM32F429ZIT MCU
    • 8 x 8 WS2812B LED Array
  • Software:

    • The WS2812B Datasheet says it uses "NZR" communication for data, which, I have no idea what that is and DuckDuckGo can't find anything on it
    • Using SPI in order to send the data fast enough
      • SPI Setup:
        • Mode: Transmit Only Master
        • Data size of 8 bits
        • Most Significant Bit (MSB) first, as that would be the most straightforward
        • Rate of 2.5 Mbit/sec, as that would allow for 400 nanosecond pulse widths
        • Clock Polarity: Don't Care
        • Clock Phase: Don't Care
        • Will NOT be using the SPI Clock signal, as the WS2812B LEDs do not need it
        • Global Interrupt: Enabled
    • For switching LED designs:
      • Using TIM6 as a "cooldown" to not have it switch the design hundreds of times on a single button-press
        • While in "cooldown" state, LEDs will be off, to signify that the button press has been received and the LED design will be changed
        • TIM6 is using APB1, which the timer clocks are set at 80 MHz
        • "Cooldown" time of 0.5 seconds is desired:
          • 80000000 Hz * 0.5 seconds = 40000000 clock cycles
        • TIM6 Configuration:
          • One Pulse Mode: Enabled
          • Prescaler: 4000
          • Counter Mode: Up
          • Counter Period: 10000
          • Auto-Reload Preload: Enabled
          • Trigger Event Selection: Reset (UG bit from TIMx_EGR)
          • Global Interrupt: Enabled

Resources/Credits

Description
No description provided
Readme 9.8 MiB
Languages
C 96.8%
Makefile 2.6%
Assembly 0.6%