
Biblioteca para placas basadas en WCH CH56x con controladores probados USB3/USB2/HSPI/SerDes, registro e interrupciones diferidas
Esta biblioteca fue desarrollada junto con Hydradancer, un nuevo backend para la librería de emulación USB Facedancer basado en el chip WCH569.
Se necesitaban controladores confiables para este proyecto y muchas características faltaban en los ejemplos de WCH o no habían sido probadas.
Esta biblioteca proporciona controladores USB3, USB2, HSPI y SerDes que han sido probados mediante las pruebas de integridad/benchmark en tests/. Se basa en wch-ch56x-bsp, pero su objetivo es ofrecer una biblioteca de nivel superior. Como Hydradancer utilizaba varios periféricos al mismo tiempo (USB3/HSPI, USB2/HSPI), se implementó una cola de interrupciones para evitar perder interrupciones al usar hspi_scheduled, junto con un pool de memoria estática. Si bien las pruebas en este repositorio son lo suficientemente simples como para realizar el procesamiento dentro de los manejadores de interrupción, Hydradancer perdía interrupciones y fue necesario diferir las interrupciones al modo de usuario.
En un proyecto basado en CMake, simplemente usa add_subdirectory(path_to_wch-ch56x-lib) y enlaza al target wch-ch56x-lib. Actualmente, wch-ch56x-lib es un target INTERFACE, lo que significa que los archivos fuente/encabezado se compilarán con tu target, no de forma independiente.
Opciones disponibles
Para construir y flashear el firmware, consulta el tutorial de compilación.
Allí también se puede encontrar más información sobre las opciones de compilación.
Este proyecto utiliza una o dos placas HydraUSB3, basadas en el MCU RISCV WCH569.
wch-ch56x-lib/
| ├─ tests/ # firmwares de prueba para probar varias partes de la biblioteca
| ├─ src/
| | ├─wch-ch56x-lib # los archivos fuente/encabezado de la librería
| ├─ tools/
| ├─ docs/ # documentación adicional
Se puede encontrar más información sobre las diferentes pruebas y cómo usarlas en docs/Testing.md
Si encuentras errores o deseas sugerir nuevas funciones, revisa los problemas existentes y crea un nuevo issue si es necesario.
Para contribuir con código, se recomienda revisar los issues existentes e informar a los demás contribuyentes que estás trabajando en algo comentando en el issue. De esta forma no perderás tiempo trabajando en una función que no era necesaria o que ya estaba en desarrollo.
Después de eso, por favor crea un pull-request y enlaza el issue relacionado.
Tu código debe seguir las pautas del estilo de codificación.