{"id":26138001,"url":"https://github.com/zenitheesc/drivers","last_synced_at":"2025-10-29T02:32:01.628Z","repository":{"id":39592267,"uuid":"358939749","full_name":"zenitheesc/Drivers","owner":"zenitheesc","description":"Centralized repository for the low level drivers developed by Zenith Aerospace","archived":false,"fork":false,"pushed_at":"2025-03-07T23:04:07.000Z","size":899,"stargazers_count":11,"open_issues_count":9,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-13T23:55:41.000Z","etag":null,"topics":["arduino","bmp280","c","canbus","driver","flash","ina219","ina3221","microcontroller","mpu6050","mpx5700","stm32","sx1276","ublox-gps-driver"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zenitheesc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-04-17T17:20:49.000Z","updated_at":"2025-03-07T23:04:11.000Z","dependencies_parsed_at":"2025-03-07T23:20:49.342Z","dependency_job_id":"41f8d58e-b25c-4566-8578-b29cad95b6df","html_url":"https://github.com/zenitheesc/Drivers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"zenitheesc/new-zenith-template","purl":"pkg:github/zenitheesc/Drivers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2FDrivers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2FDrivers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2FDrivers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2FDrivers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zenitheesc","download_url":"https://codeload.github.com/zenitheesc/Drivers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2FDrivers/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267058495,"owners_count":24029033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","bmp280","c","canbus","driver","flash","ina219","ina3221","microcontroller","mpu6050","mpx5700","stm32","sx1276","ublox-gps-driver"],"created_at":"2025-03-11T01:44:31.641Z","updated_at":"2025-10-29T02:32:01.506Z","avatar_url":"https://github.com/zenitheesc.png","language":"C","readme":"\u003ch1 align=\"center\" style=\"color:white; background-color:black\"\u003eDrivers\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003eCentralized repository for the low level drivers developed by Zenith Aerospace\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"http://zenith.eesc.usp.br/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Zenith-Embarcados-black?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://eesc.usp.br/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Linked%20to-EESC--USP-black?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/zenitheesc/Drivers?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/zenitheesc/Drivers?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/commits/main\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/commit-activity/m/zenitheesc/Drivers?style=for-the-badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/graphs/contributors\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/zenitheesc/Drivers?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/commits/main\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/zenitheesc/Drivers?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues-raw/zenitheesc/Drivers?style=for-the-badge\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zenitheesc/Drivers/pulls\"\u003e\n    \u003cimg src = \"https://img.shields.io/github/issues-pr-raw/zenitheesc/Drivers?style=for-the-badge\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#objective\"\u003eObjective\u003c/a\u003e •\n    \u003ca href=\"#how-to-use-a-driver\"\u003eHow to use a Driver\u003c/a\u003e •\n    \u003ca href=\"#environment\"\u003eEnvironment\u003c/a\u003e •\n    \u003ca href=\"#adding-a-driver\"\u003eAdding a Driver\u003c/a\u003e\n\u003c/p\u003e\n\n## Objective\n\nStore and manage developed drivers.\n\n## How to use a Driver\nEach driver is organized in its own folder, where you'll find the `.c/.h` pair. Just add the files to your project, for example in a STM32CubeIDE project add the `.c` file to the `Core/Src` folder and the `.h` to the `Core/Inc`. However all drivers use the `platform` \"framework\", so you also need to copy the whole `platform` folder to your project as well, in STM32CubeIDE add it to the `Core/Inc` folder. All drivers should have an example of how to use it. \n\n### Platform\nThe platform framework is a set of macros and header-only libraries that \ndrivers use instead of platform specific functions. For example, an I2C transaction in a STM32 project calls the ST HAL library, that means that the driver (as it is) can only be used in STM32 microcontrollers. The job of the platform is to detect in which microcontroller it is being compiled to and then choose the appropriate library, so that a driver developed to the platform can be used in other microcontrollers/processors.\n\n#### How it works?\nFirst the `platform.h` file sets up the common interface to the driver, common `structs` and function signatures. Then a bunch of preprocessor directives try to guess what type of project this is and include the correct platform implementation (header-only library) in the `arch` folder.\n\nFYI, if platform can't find an implementation it defaults to a PC debug mode, where an implementation that just prints to stdout is used.\n\n#### Where are platform archives?\nTo find platform archives, go to the [`Platform_Lib`](https://github.com/zenitheesc/Platform-Lib/tree/main) repository. Then go to the platform folder with library archives, such as `platform.h`, and another to the arch folder.\n\n## Environment\n\nRealistically, we mostly use the STM32CubeIDE as most of the projects we do are based on that platform. But with the platform framework you should just need a C compiler.\n\n## Adding a Driver\nGuidelines for drivers:\n - You should use C unless otherwise necessary\n   - Why: to maximize compatibility (yes there are still uCs that can only use C)\n - You should add some documentation with an example\n   - Why: Most users just want to copy and paste correct code\n - You should use platform functions to access hardware resources, unless necessary\n   - Why: maximize compatibility, however platform doesn't cover everything so ,for now, you can add a driver that is platform specific.  \n\nSteps in a list:\n 1. Clone this repository\n 2. Create a folder with the Driver name\n 3. Add the `.c` and `.h` \n 4. Add a `README.md` file to the Driver folder \n    1. On the README add the Author, Date, and purpose of the library\n    2. Add Documentation: Parameters and purpose of each function\n    3. Add a Notes Section for any extra information of the IC\n 5. (Optional) Add a folder called `Docs`\n    1. Add any External Documentation including Datasheets, Application Notes, and Register Maps\n 6. If there is a GitHub Issue for the Driver add a message or close it.\n\n---\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"http://zenith.eesc.usp.br\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Check%20out-Zenith's Oficial Website-black?style=for-the-badge\" /\u003e\n    \u003c/a\u003e \n    \u003ca href=\"https://www.facebook.com/zenitheesc\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Like%20us%20on-facebook-blue?style=for-the-badge\"/\u003e\n    \u003c/a\u003e \n    \u003ca href=\"https://www.instagram.com/zenith_eesc/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Follow%20us%20on-Instagram-red?style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n\n\u003c/p\u003e\n\u003cp align = \"center\"\u003e\n\u003ca href=\"zenith.eesc@gmail.com\"\u003ezenith.eesc@gmail.com\u003c/a\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenitheesc%2Fdrivers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenitheesc%2Fdrivers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenitheesc%2Fdrivers/lists"}