add USB CDC support, and implement self-check diagnostic

This commit is contained in:
2026-08-13 22:23:15 +02:00
parent 58b3a97d73
commit c64d145a1a
5 changed files with 233 additions and 88 deletions
Generated
+61 -53
View File
@@ -46,8 +46,8 @@ dependencies = [
"ch32-metapac 0.0.6",
"embassy-executor",
"embassy-futures",
"embassy-sync 0.7.2",
"embassy-time 0.4.0",
"embassy-sync",
"embassy-time",
"embassy-usb",
"embedded-hal 1.0.0",
"heapless",
@@ -57,6 +57,7 @@ dependencies = [
"panic-halt",
"qingke",
"qingke-rt",
"static_cell",
"thiserror",
]
@@ -75,23 +76,24 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "ch32-hal"
version = "0.1.0"
source = "git+https://github.com/ju6ge/ch32-hal?branch=feature%2Fi2c-slave-api#9b1df89f5e8de21c7daad0f22fa7186dcfcbecdf"
source = "git+https://github.com/ju6ge/ch32-hal?branch=feature%2Fi2c-slave-api#dd285961d7c4604caf1f9cf3c306d4b0929e36c6"
dependencies = [
"bitmaps",
"ch32-metapac 0.1.0",
"critical-section",
"embassy-futures",
"embassy-hal-internal",
"embassy-sync 0.7.2",
"embassy-time 0.5.0",
"embassy-sync",
"embassy-time",
"embassy-time-driver",
"embassy-time-queue-utils",
"embassy-usb-driver 0.2.0",
"embassy-usb-driver",
"embedded-can",
"embedded-hal 0.2.7",
"embedded-hal 1.0.0",
"embedded-hal-async",
"embedded-hal-nb",
"embedded-storage",
"futures",
"nb 1.1.0",
"proc-macro2",
@@ -115,9 +117,9 @@ dependencies = [
[[package]]
name = "ch32-metapac"
version = "0.1.0"
source = "git+https://github.com/ch32-rs/ch32-metapac?rev=b1cbc7a98e43af3fd3170821654784e2c01cb26b#b1cbc7a98e43af3fd3170821654784e2c01cb26b"
source = "git+https://github.com/ch32-rs/ch32-metapac?rev=7cd6fb70d07de3a987c63d0d8f5547bb8261e403#7cd6fb70d07de3a987c63d0d8f5547bb8261e403"
dependencies = [
"riscv 0.11.1",
"riscv 0.12.1",
"vcell",
]
@@ -238,21 +240,7 @@ checksum = "b7b2739fbcf6cd206ae08779c7d709087b16577d255f2ea4a45bc4bbbf305b3f"
dependencies = [
"embassy-futures",
"embassy-net-driver",
"embassy-sync 0.7.2",
]
[[package]]
name = "embassy-sync"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d2c8cdff05a7a51ba0087489ea44b0b1d97a296ca6b1d6d1a33ea7423d34049"
dependencies = [
"cfg-if",
"critical-section",
"embedded-io-async",
"futures-sink",
"futures-util",
"heapless",
"embassy-sync",
]
[[package]]
@@ -269,22 +257,6 @@ dependencies = [
"heapless",
]
[[package]]
name = "embassy-time"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f820157f198ada183ad62e0a66f554c610cdcd1a9f27d4b316358103ced7a1f8"
dependencies = [
"cfg-if",
"critical-section",
"document-features",
"embassy-time-driver",
"embedded-hal 0.2.7",
"embedded-hal 1.0.0",
"embedded-hal-async",
"futures-util",
]
[[package]]
name = "embassy-time"
version = "0.5.0"
@@ -295,6 +267,7 @@ dependencies = [
"critical-section",
"document-features",
"embassy-time-driver",
"embassy-time-queue-utils",
"embedded-hal 0.2.7",
"embedded-hal 1.0.0",
"embedded-hal-async",
@@ -322,28 +295,20 @@ dependencies = [
[[package]]
name = "embassy-usb"
version = "0.3.0"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d0b882133fa684b9d4652351cd7aac5afe8a2c2bf4a7da59f442ff61087cda2"
checksum = "dc4462e48b19a4f401a11901bdd981aab80c6a826608016a0bdc73cbbab31954"
dependencies = [
"embassy-futures",
"embassy-net-driver-channel",
"embassy-sync 0.6.2",
"embassy-usb-driver 0.1.1",
"embassy-sync",
"embassy-usb-driver",
"embedded-io-async",
"heapless",
"ssmarshal",
"usbd-hid",
]
[[package]]
name = "embassy-usb-driver"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "340c5ce591ef58c6449e43f51d2c53efe1bf0bb6a40cbf80afa0d259c7d52c76"
dependencies = [
"embedded-io-async",
]
[[package]]
name = "embassy-usb-driver"
version = "0.2.0"
@@ -412,6 +377,12 @@ dependencies = [
"embedded-io",
]
[[package]]
name = "embedded-storage"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032"
[[package]]
name = "encode_unicode"
version = "0.3.6"
@@ -522,6 +493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
dependencies = [
"hash32",
"portable-atomic",
"stable_deref_trait",
]
@@ -630,6 +602,9 @@ name = "portable-atomic"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
dependencies = [
"critical-section",
]
[[package]]
name = "proc-macro-error"
@@ -723,6 +698,19 @@ dependencies = [
"embedded-hal 1.0.0",
]
[[package]]
name = "riscv"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ea8ff73d3720bdd0a97925f0bf79ad2744b6da8ff36be3840c48ac81191d7a7"
dependencies = [
"critical-section",
"embedded-hal 1.0.0",
"paste",
"riscv-macros 0.1.0",
"riscv-pac",
]
[[package]]
name = "riscv"
version = "0.15.0"
@@ -732,10 +720,21 @@ dependencies = [
"critical-section",
"embedded-hal 1.0.0",
"paste",
"riscv-macros",
"riscv-macros 0.3.0",
"riscv-pac",
]
[[package]]
name = "riscv-macros"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f265be5d634272320a7de94cea15c22a3bfdd4eb42eb43edc528415f066a1f25"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
]
[[package]]
name = "riscv-macros"
version = "0.3.0"
@@ -804,6 +803,15 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "static_cell"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0530892bb4fa575ee0da4b86f86c667132a94b74bb72160f58ee5a4afec74c23"
dependencies = [
"portable-atomic",
]
[[package]]
name = "strsim"
version = "0.11.1"