{"id":22844697,"url":"https://github.com/trembel/aem10900","last_synced_at":"2025-08-11T02:31:18.668Z","repository":{"id":264673505,"uuid":"894072377","full_name":"trembel/aem10900","owner":"trembel","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-25T17:52:47.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-25T18:12:01.599Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trembel.png","metadata":{"files":{"readme":"README.org","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}},"created_at":"2024-11-25T17:45:59.000Z","updated_at":"2024-11-25T17:50:26.000Z","dependencies_parsed_at":"2024-11-25T18:12:06.056Z","dependency_job_id":"c18c8db9-3bc8-4f7d-9e7e-d13b669f1e9e","html_url":"https://github.com/trembel/aem10900","commit_stats":null,"previous_names":["trembel/aem10900"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trembel%2Faem10900","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trembel%2Faem10900/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trembel%2Faem10900/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trembel%2Faem10900/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trembel","download_url":"https://codeload.github.com/trembel/aem10900/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229483052,"owners_count":18080072,"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","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":[],"created_at":"2024-12-13T03:00:54.433Z","updated_at":"2024-12-13T03:01:34.025Z","avatar_url":"https://github.com/trembel.png","language":"C","readme":"#+TITLE: AEM10900 Driver\n#+AUTHOR: Silvano Cortesi\n#+DATE: 18.11.2024\n#+LICENSE: LGPL-3.0\n\nThis repository contains driver for the AEM10900 energy harvester.\n\n#+begin_quote\nThe AEM10900 is a fully integrated and compact battery charger circuit that extracts DC power from a solar cell to store energy in a rechargeable battery. This compact and ultra- efficient battery charger allows to extend battery lifetime and eliminates the primary energy storage in a large range of wireless application, such as wearable and medical applications and Smart sensors. Thanks to its Maximum Power Point Tracking and its ultra-low power boost converter, the AEM10900 harvests the maximum available input power from a source to charge a storage element, such as a Li-ion battery. The boost converter operates with input voltages in a range from 115 mV to 1.5 V. With its unique cold-start circuit, it can start operating with an input voltage as low as 250 mV and an input power of only 5 μW. The output voltages are in a range of 2.8 V to 4.8 V. -- [[https://e-peas.com/product/aem10900-solar-battery-charger/][e-peas]]\n#+end_quote\n\nThe repository is build on top of the datasheet [[https://e-peas.com/wp-content/uploads/datasheets/ds-aem10900-v1-5.pdf][DS-AEM10900-v1.5]] and contains:\n\n** The [[file:aem10900.yaml][YAML]] specification of the driver, as used by Reginald to create the struct fields\n*** YAML Transpile Instruction\nThe yaml file can be automatically parsed using [[https://github.com/schilkp/reginald][Reginald]], based on branch ~schilkp/rust~, commit ~dc4ff0d~.\n\n**** Rust version\nThe rust version is built (from within [[file:rust/src/][rust/src/]]) using:\n#+begin_src sh\nreginald gen -i ../../aem10900.yaml -o registers.rs rs-structs --enum-derive \"Debug\" --struct-derive \"Debug\" --enum-derive \"PartialEq\" --struct-derive \"PartialEq\"\n#+end_src\n\n**** C version\nThe C version is built (from within [[file:c/][c/]]) using:\n#+begin_src sh\nreginald gen -i ../aem10900.yaml -o aem10900_reg.h c-funcpack\n#+end_src\n\n**** Markdown Datasheet\nThe [[file:aem10900_reg.md][markdown datasheet]] is build (from within [[file:README.org][/]]) by using:\n#+begin_src sh\nreginald gen -i ./aem10900.yaml -o aem10900.md md-datasheet\n#+end_src\n\n** Rust driver\nThe rust driver consists of [[file:rust/src/lib.rs][lib.rs]], [[file:rust/src/device.rs][device.rs]], [[file:rust/src/config.rs][config.rs]], [[file:rust/src/error.rs][error.rs]] and [[file:rust/src/registers.rs][registers.rs]]. ~registers.rs~ is the only auto-created file using reginald, and contains the register structs as well as pack/unpack functions.\n\n** C driver\nThe C driver consists of [[file:c/aem10900.c][aem10900.c]], [[file:c/aem10900.h][aem10900.h]] and [[file:c/aem10900_reg.h][aem10900_reg.h]]. ~aem10900_reg.h~ is the only auto-created file using reginald, and contains the register structs as well as pack/unpack functions.\n\n** Example projects for C and Rust\nThe example projects make automatically use of the drivers described above, and can be used as a reference for the implementation. The following pinout holds:\n\n| Peripheral | Functionality                         |\n|------------+---------------------------------------|\n| I2C1       | I2C peripheral used for communication |\n| PB8        | SCL pin used together with I2C1       |\n| PB7        | SDA pin used together with I2C1       |\n| GPDMA1_CH0 | DMA channel for TX on I2C1            |\n| GPDMA1_CH1 | DMA channel for RX on I2C1            |\n","funding_links":[],"categories":["Driver crates"],"sub_categories":["Other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrembel%2Faem10900","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrembel%2Faem10900","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrembel%2Faem10900/lists"}