Giter VIP home page Giter VIP logo

stm32_xpd's Introduction

Peripheral Drivers for STM32 series MCUs

This project aims to provide an efficient peripheral library for the STM32 series microcontrollers with the potential ability to replace STM32 HAL drivers. The following features are the key to achieving this goal: a straightforward common API with high level of hardware abstraction and code portability, and a comprehensible and lightweight driver code.

Project overview

The XPD drivers provide a hardware abstraction layer for the MCU peripherals, leaving the user to simply provide configuration sets, I/O data and callbacks to its API for complex device operations.

The XPD is currently under development, therefore only a subset of modules and devices are supported. A certain MCU is supported if its device descriptor header can be found within CMSIS/Device/ST/STM32..xx/Include. For the list of supported peripheral modules please check the corresponding XPD library.

The project redefines all peripheral layout structures to include bit field definitions, and also introduces bit-band alias peripheral structures, therefore the CMSIS library contents are incompatible with the official release. The XPD library is heavily built on these attributes, therefore it must be used with the CMSIS of the same revision.

Documentation

The project is well structured and doxygen documented, therefore offering easy understandability and navigation. The XPD Wiki offers a Beginner's Guide as well as detailed explanation of each peripheral module driver and the unique concepts applied in the library.

Feedback

The CMSIS device descriptors are result of a custom code generator with some manual touchups, therefore certain bit fields might have allocated incorrectly. Generally only the XPD supported peripherals' fields can be relied upon. Furthermore, part of the XPD API itself is not thoroughly tested. If you find any bugs, have any questions or constructive ideas, or would like to request support of a currently missing device, don't be afraid to contact the author or open an issue.

stm32_xpd's People

Contributors

benedekkupper avatar dognotdog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stm32_xpd's Issues

STM32F1 USB-CDC OUT

Dear IntergatedCircuits,

(I have pressed enter by mistake, that was the cause of initial empty issue...)

I put your code on an STM32F103C8T6 board together with USBDevice in Eclipse + HAL project.

Host can enumerate USB device and my keyboard interface work well - I can send keystrokes to host and receive Num Lock / Caps Lock status change signals, so it works well.

If I mount a USB-CDC interface, it also accessible by host and I can send data from device to host without problems.
However, I can not send messages from host to device.

The vcp_if interface is the same what I used together with my STM32F407VET6 microcontroller where both transmit / receive side work well.

So, with STM32F1, USB enumeration and endpoint configuration looks okay at host side, but by the time I try to send data from host to device, I can not see any interrupt happen on device.

STM32F4 family use xpd_usb_otg of XPD library and STM32F103 use xpd_usb from there, so USB low level behaviour differs, but otherwise the higher level interfaces I try to use are the same.

Could you please suggest what may I test on STM32F1 side?

Thank you your help in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.