|
|
(52 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| ==[[Raspberry Pi]]== | | = Jim's Projects = |
| ==[[Linux Device Drivers]]== | | __NOTOC__ |
| ==[[Amazon Web Service - AWS]]== | | <br> |
| ==[[MediaWiki]]== | | ===[[Getting Started with I2C]]=== |
| ==[[Network Attached Storage - NAS]]== | | ===[[Getting Started with CH32V003]]=== |
| ==[[Install VNC Server - TightVNC]]== | | ===[[Getting Started with ESP-IDF]]=== |
| ==[[Install LXDE Desktop with TightVNC]]== | | <br> |
| ==[[Build Custom Loadable Kernel Module (LKM) for Raspberry Pi]]== | | ==Current Projects== |
| ==[[Bukkit Minecraft Server]]== | | ===[[Getting Started with STM32]]=== |
| ==[[Google AIY Project]]== | | ===[[STM32 - Using DMA for Serial Receive]]=== |
| ==[[Plex Media Server]]== | | ===[[STM32 - LittleFS Flash File System Interfacing]]=== |
| =<strong>Embedded Projects</strong>= | | ===[[STM32 - Timers - Measuring Time]]=== |
| ==[[NUCLEO-G071RB]]== | | ===[[STM32 - DFU Methods]]=== |
| ==[[NUCLEO-F103RB]]== | | ===[[STM32 - How To]]=== |
| ==[[STM32L0538-DISCO]]== | | ===[[STM32 - WIZnet W5500]]=== |
| ==[[STM32F103C8 (Blue Pill)]]== | | ===[[TM1637 Displays]]=== |
| ==[[STM32G031J6]]== | | ===[[1.3" Color LCD Display "shield" for Raspberry Pi Pico]]=== |
| ==[[LittleFS Flash File System]]== | | ===[[MicroPython on Raspberry Pi Pico]]=== |
| I recently learned about a compact embedded Flash File System known as SpiFFS. While researching SpiFFS, I soon learned of another compact embedded Flash File System, '''LittleFS'''. LittleFS is even more compact and has additional security in that it creates and maintains a CRC for each file, and verifies the CRC each time the file is read.
| | ===[[MicroPython on STM32F407G-DISC1]]=== |
| * Compact
| | ===[[LittleFS Flash File System]]=== |
| * Power-loss resilience
| | ===[[NUCLEO-C031C6]]=== |
| * Dynamic wear leveling
| | ===[[NUCLEO-F103RB]]=== |
| * Bounded RAM/ROM
| | ===[[NUCLEO-F411RE]]=== |
| * Maintains revision count and CRC (security features)
| | ===[[NUCLEO-F446RE]]=== |
| | ===[[NUCLEO-G071RB]]=== |
| | ===[[NUCLEO-F767ZI]]=== |
| | ===[[STM32L152-DISCO]]=== |
| | ===[[Command Line Interface]]=== |
| | ===[[Using Wireshark]]=== |
| | ===[[ESP8266 AT Commands]]=== |
| | ===[[MediaWiki]]=== |
| | ===[[MySQL]]=== |
| | ===[[DS3231 RTC Module]]=== |
|
| |
|
| Let's put this file system onto a STM32 board (I'm using a NUCLEO-F103RB), and check it out.
| | ===[[Logger]]=== |
| Cloned '''littleFS''' to my local machine.
| | <br> |
| Using Winbond W25Q128FVSG SPI Flash module from Ebay: https://www.ebay.com/itm/264290947181
| |
| If the link doesn't work, just search Ebay for "W25Q128 Module". I bought two for $8.26 (free shipping).
| |
| Downloaded the PDF for the W25Q128FVSG : https://www.winbond.com/resource-files/w25q128fv%20rev.m%2005132016%20kms.pdf
| |
|
| |
|
| The W25Q128FVSG uses 1.65V to 1.95V for operation.
| | ==Previous Projects== |
| The NUCLEO-F103RB powers the STM32F103RB with 3.3V. (The chip is capable of running with 2.0V to 3.6V.)
| | ===[[Raspberry Pi]]=== |
| | ===[[Linux Device Drivers]]=== |
| | ===[[Amazon Web Service - AWS]]=== |
| | ===[[Network Attached Storage - NAS]]=== |
| | ===[[Install VNC Server - TightVNC]]=== |
| | ===[[Install LXDE Desktop with TightVNC]]=== |
| | ===[[Build Custom Loadable Kernel Module (LKM) for Raspberry Pi]]=== |
| | ===[[Google AIY Project]]=== |
| | ===[[Plex Media Server]]=== |
| | ==<strong>Embedded Projects</strong>== |
| | ===[[ST7735S 80x160 0.96" SPI LCD Display Module]]=== |
| | ===[[SSD1306_128x64 I2C OLED Display]]=== |
| | ===[[SSD1306_128x64 SPI OLED Display]]=== |
| | ===[[STM32L0538-DISCO]]=== |
| | ===[[STM32F103C8 (Blue Pill)]]=== |
| | ===[[STM32G031J6]]=== |
| | ===[[Arduino Projects]]=== |
|
| |
|
| Seems we have our first problem....
| | ===[[1602 LCD using I2C Adapter]]=== |
| Need some more components to build an interface circuit
| | ==The Old Website== |
| 3.3V to 1.8V linear power supply, Microchip MIC5504-1.8YM5-TR, or Mouser 998-MIC5504-1.8YM5TR
| | http://www.merkles.com/original_index.html<br> |
| Quad level shifter, 3.3V to 1.8V, SN74LV4T125
| | <br> |
| | | '''Questions? Suggestions? Contact me: jim@merkles.com''' |
| | |
| | |
| | |
| | |
| | |
| | |
| Reference Information:
| |
| https://uimeter.com/2018-04-12-Try-LittleFS-on-STM32-and-SPI-Flash/
| |
| https://github.com/ARMmbed/littlefs
| |
| https://github.com/ARMmbed/littlefs/blob/master/README.md
| |
| | |
| = Arduio Projects = | |
| == I2C == | |
| Using I2C with Arduino
| |
| * History
| |
| * Usage - Applications
| |
| * Electrical Interface
| |
| '''Open Collector (Open Drain)''' - Use of a pull-up resistor to establish a logical high.
| |
| * All SCL "clock" signals are connected together
| |
| * All SDA "data" signals are connected together
| |
| | |
| '''Signaling rules:'''
| |
| * Inactive bus - no communication: Both SCL and SDA are high
| |
| * For normal data flow, the SCL must be low when the SDA signal changes.
| |
| * Start Condition: With SCL high, the SDA signal is pulled low. This condition
| |
| wakes all the I2C devices on the bus, alerting them to begin watching for their address.
| |
| * Stop Condition: With the SCL high, the SDA signal is raised from low to high.
| |
| This condition signals all the devices on the bus that communication is complete with the
| |
| current device, and the bus should return to an idle state.
| |
| | |
| * Any of the devices connected to this bus has the ability to pull its associated I2C bus signal low.
| |
| The pull-up resistor will pull the signals to a high state when none of the I2C devices are pullin
| |
| the signal low. When both the "SCL" and "SDA" signal are both at stable high level, the bus is
| |
| considered "inactive" or available (usually following a Stop condition).
| |
| | |
| * Supporting Information
| |
| Texas Instruments, Understanding the I2C Bus, http://www.ti.com/lit/an/slva704/slva704.pdf<br>
| |
| History of the I2C Bus, http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/general-introduction/history-of-the-i2c-bus.html<br>
| |
| Arduino I2C Scanner, https://playground.arduino.cc/Main/I2cScanner/<br>
| |
| | |
| == Blinky ==
| |
| Blinky is often the first program used to begin learning the Arduio environment and to test the development board to verify a program can be written, compiled, downloaded, and executed. Blinky is available in the Arduio menu under {{Highlight |File->Examples->01.Basics->Blink}}.<br>
| |
| <strong>Key APIs (functions)</strong><br>
| |
| * pinMode(LED_BUILTIN, OUTPUT);
| |
| * digitalWrite(LED_BUILTIN, HIGH);
| |
| * delay(1000);<br>
| |
| | |
| == ASCIITable ==
| |
| ASCIITable is rather boring, but provides an example of how to use the Arduino's serial port to send messages to the console window (or to any serial terminal program.) Since the Arduino platform doesn't provide a debugger, it's often required to add serial print statements into your program to see how the program is progressing, and to see what the values of certain variables might be. ASCIITable is available in the Arduio menu under {{Highlight |File->Examples->04.Communication->ASCIITable}}.<br>
| |
| <strong>Key APIs (functions)</strong><br>
| |
| * Serial.begin(9600); // Use 9600 for the serial port data rate (9600 and 115200 are very common values) Be sure to tell your Arduio console window the data rate (baud) you selected here.
| |
| * Serial.print("Fred"); // Display the text, "Fred"
| |
| * Serial.println("Some text to display"); // Display the text, "Some text to display", and begin a new line below it
| |
| * Serial.write(thisByte); // Display the ASCII representation of the byte, "thisByte"<br>
| |
| <br><br>
| |
| | |
| | |
| [[File:Picture.jpg|left|thumb]]
| |
| [[File:IMG 20180418 224933.jpg|left|thumb]]
| |
| | |
| Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
| |
| | |
| == Getting started ==
| |
| * [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
| |
| * [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
| |
| * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]
| |
| * [//www.mediawiki.org/wiki/Localisation#Translation_resources Localise MediaWiki for your language]
| |