diff options
| author | i509VCB <[email protected]> | 2025-07-21 20:29:34 -0500 |
|---|---|---|
| committer | i509VCB <[email protected]> | 2025-07-22 11:25:45 -0500 |
| commit | 1d46f55bddf402c33143959e1ad26af59bb15855 (patch) | |
| tree | 2239a545303c4df4cfc1d9ff4aec7069e006babe /embassy-nxp | |
| parent | 908e016524e1802b736664d84ca2da6ea908444d (diff) | |
nxp: Add mimxrt1062 support
The examples in this case are designed for the IMXRT1060-EVK. The same chip is used in the Teensy 4.0/1, but that will probably get its own set of examples due to some differences such as the FCB.
Diffstat (limited to 'embassy-nxp')
| -rw-r--r-- | embassy-nxp/Cargo.toml | 5 | ||||
| -rw-r--r-- | embassy-nxp/build.rs | 10 | ||||
| -rw-r--r-- | embassy-nxp/src/chips/mimxrt1062.rs | 282 | ||||
| -rw-r--r-- | embassy-nxp/src/gpio/rt1xxx.rs | 62 | ||||
| -rw-r--r-- | embassy-nxp/src/lib.rs | 1 |
5 files changed, 348 insertions, 12 deletions
diff --git a/embassy-nxp/Cargo.toml b/embassy-nxp/Cargo.toml index 625906183..293791d34 100644 --- a/embassy-nxp/Cargo.toml +++ b/embassy-nxp/Cargo.toml | |||
| @@ -17,13 +17,13 @@ embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-util | |||
| 17 | 17 | ||
| 18 | ## Chip dependencies | 18 | ## Chip dependencies |
| 19 | lpc55-pac = { version = "0.5.0", optional = true } | 19 | lpc55-pac = { version = "0.5.0", optional = true } |
| 20 | nxp-pac = { version = "0.1.0", optional = true, git = "https://github.com/i509VCB/nxp-pac", rev = "1e010dbe75ab0e14dd908e4646391403414c8a8e" } | 20 | nxp-pac = { version = "0.1.0", optional = true, git = "https://github.com/i509VCB/nxp-pac", rev = "be4dd0936c20d5897364a381b1d95a99514c1e7e" } |
| 21 | 21 | ||
| 22 | imxrt-rt = { version = "0.1.7", optional = true, features = ["device"] } | 22 | imxrt-rt = { version = "0.1.7", optional = true, features = ["device"] } |
| 23 | 23 | ||
| 24 | [build-dependencies] | 24 | [build-dependencies] |
| 25 | cfg_aliases = "0.2.1" | 25 | cfg_aliases = "0.2.1" |
| 26 | nxp-pac = { version = "0.1.0", git = "https://github.com/i509VCB/nxp-pac", rev = "1e010dbe75ab0e14dd908e4646391403414c8a8e", features = ["metadata"], optional = true } | 26 | nxp-pac = { version = "0.1.0", git = "https://github.com/i509VCB/nxp-pac", rev = "be4dd0936c20d5897364a381b1d95a99514c1e7e", features = ["metadata"], optional = true } |
| 27 | proc-macro2 = "1.0.95" | 27 | proc-macro2 = "1.0.95" |
| 28 | quote = "1.0.15" | 28 | quote = "1.0.15" |
| 29 | 29 | ||
| @@ -58,3 +58,4 @@ _time_driver = ["dep:embassy-time-driver", "dep:embassy-time-queue-utils"] | |||
| 58 | #! ### Chip selection features | 58 | #! ### Chip selection features |
| 59 | lpc55 = ["dep:lpc55-pac"] | 59 | lpc55 = ["dep:lpc55-pac"] |
| 60 | mimxrt1011 = ["nxp-pac/mimxrt1011", "_rt1xxx", "dep:imxrt-rt"] | 60 | mimxrt1011 = ["nxp-pac/mimxrt1011", "_rt1xxx", "dep:imxrt-rt"] |
| 61 | mimxrt1062 = ["nxp-pac/mimxrt1062", "_rt1xxx", "dep:imxrt-rt"] | ||
diff --git a/embassy-nxp/build.rs b/embassy-nxp/build.rs index 6c10d0e69..f3c062c87 100644 --- a/embassy-nxp/build.rs +++ b/embassy-nxp/build.rs | |||
| @@ -32,10 +32,12 @@ fn main() { | |||
| 32 | .to_ascii_lowercase(); | 32 | .to_ascii_lowercase(); |
| 33 | 33 | ||
| 34 | cfg_aliases! { | 34 | cfg_aliases! { |
| 35 | rt1xxx: { feature = "mimxrt1011" }, | 35 | rt1xxx: { any(feature = "mimxrt1011", feature = "mimxrt1062") }, |
| 36 | gpio1: { feature = "mimxrt1011" }, | 36 | gpio1: { any(feature = "mimxrt1011", feature = "mimxrt1062") }, |
| 37 | gpio2: { feature = "mimxrt1011" }, | 37 | gpio2: { any(feature = "mimxrt1011", feature = "mimxrt1062") }, |
| 38 | gpio5: { feature = "mimxrt1011" }, | 38 | gpio3: { feature = "mimxrt1062" }, |
| 39 | gpio4: { feature = "mimxrt1062" }, | ||
| 40 | gpio5: { any(feature = "mimxrt1011", feature = "mimxrt1062") }, | ||
| 39 | } | 41 | } |
| 40 | 42 | ||
| 41 | eprintln!("chip: {chip_name}"); | 43 | eprintln!("chip: {chip_name}"); |
diff --git a/embassy-nxp/src/chips/mimxrt1062.rs b/embassy-nxp/src/chips/mimxrt1062.rs new file mode 100644 index 000000000..ef153bd66 --- /dev/null +++ b/embassy-nxp/src/chips/mimxrt1062.rs | |||
| @@ -0,0 +1,282 @@ | |||
| 1 | // This must be imported so that __preinit is defined. | ||
| 2 | use imxrt_rt as _; | ||
| 3 | pub use nxp_pac as pac; | ||
| 4 | |||
| 5 | embassy_hal_internal::peripherals! { | ||
| 6 | // External pins. These are not only GPIOs, they are multi-purpose pins and can be used by other | ||
| 7 | // peripheral types (e.g. I2C). | ||
| 8 | GPIO_AD_B0_00, | ||
| 9 | GPIO_AD_B0_01, | ||
| 10 | GPIO_AD_B0_02, | ||
| 11 | GPIO_AD_B0_03, | ||
| 12 | GPIO_AD_B0_04, | ||
| 13 | GPIO_AD_B0_05, | ||
| 14 | GPIO_AD_B0_06, | ||
| 15 | GPIO_AD_B0_07, | ||
| 16 | GPIO_AD_B0_08, | ||
| 17 | GPIO_AD_B0_09, | ||
| 18 | GPIO_AD_B0_10, | ||
| 19 | GPIO_AD_B0_11, | ||
| 20 | GPIO_AD_B0_12, | ||
| 21 | GPIO_AD_B0_13, | ||
| 22 | GPIO_AD_B0_14, | ||
| 23 | GPIO_AD_B0_15, | ||
| 24 | GPIO_AD_B1_00, | ||
| 25 | GPIO_AD_B1_01, | ||
| 26 | GPIO_AD_B1_02, | ||
| 27 | GPIO_AD_B1_03, | ||
| 28 | GPIO_AD_B1_04, | ||
| 29 | GPIO_AD_B1_05, | ||
| 30 | GPIO_AD_B1_06, | ||
| 31 | GPIO_AD_B1_07, | ||
| 32 | GPIO_AD_B1_08, | ||
| 33 | GPIO_AD_B1_09, | ||
| 34 | GPIO_AD_B1_10, | ||
| 35 | GPIO_AD_B1_11, | ||
| 36 | GPIO_AD_B1_12, | ||
| 37 | GPIO_AD_B1_13, | ||
| 38 | GPIO_AD_B1_14, | ||
| 39 | GPIO_AD_B1_15, | ||
| 40 | GPIO_B0_00, | ||
| 41 | GPIO_B0_01, | ||
| 42 | GPIO_B0_02, | ||
| 43 | GPIO_B0_03, | ||
| 44 | GPIO_B0_04, | ||
| 45 | GPIO_B0_05, | ||
| 46 | GPIO_B0_06, | ||
| 47 | GPIO_B0_07, | ||
| 48 | GPIO_B0_08, | ||
| 49 | GPIO_B0_09, | ||
| 50 | GPIO_B0_10, | ||
| 51 | GPIO_B0_11, | ||
| 52 | GPIO_B0_12, | ||
| 53 | GPIO_B0_13, | ||
| 54 | GPIO_B0_14, | ||
| 55 | GPIO_B0_15, | ||
| 56 | GPIO_B1_00, | ||
| 57 | GPIO_B1_01, | ||
| 58 | GPIO_B1_02, | ||
| 59 | GPIO_B1_03, | ||
| 60 | GPIO_B1_04, | ||
| 61 | GPIO_B1_05, | ||
| 62 | GPIO_B1_06, | ||
| 63 | GPIO_B1_07, | ||
| 64 | GPIO_B1_08, | ||
| 65 | GPIO_B1_09, | ||
| 66 | GPIO_B1_10, | ||
| 67 | GPIO_B1_11, | ||
| 68 | GPIO_B1_12, | ||
| 69 | GPIO_B1_13, | ||
| 70 | GPIO_B1_14, | ||
| 71 | GPIO_B1_15, | ||
| 72 | GPIO_EMC_00, | ||
| 73 | GPIO_EMC_01, | ||
| 74 | GPIO_EMC_02, | ||
| 75 | GPIO_EMC_03, | ||
| 76 | GPIO_EMC_04, | ||
| 77 | GPIO_EMC_05, | ||
| 78 | GPIO_EMC_06, | ||
| 79 | GPIO_EMC_07, | ||
| 80 | GPIO_EMC_08, | ||
| 81 | GPIO_EMC_09, | ||
| 82 | GPIO_EMC_10, | ||
| 83 | GPIO_EMC_11, | ||
| 84 | GPIO_EMC_12, | ||
| 85 | GPIO_EMC_13, | ||
| 86 | GPIO_EMC_14, | ||
| 87 | GPIO_EMC_15, | ||
| 88 | GPIO_EMC_16, | ||
| 89 | GPIO_EMC_17, | ||
| 90 | GPIO_EMC_18, | ||
| 91 | GPIO_EMC_19, | ||
| 92 | GPIO_EMC_20, | ||
| 93 | GPIO_EMC_21, | ||
| 94 | GPIO_EMC_22, | ||
| 95 | GPIO_EMC_23, | ||
| 96 | GPIO_EMC_24, | ||
| 97 | GPIO_EMC_25, | ||
| 98 | GPIO_EMC_26, | ||
| 99 | GPIO_EMC_27, | ||
| 100 | GPIO_EMC_28, | ||
| 101 | GPIO_EMC_29, | ||
| 102 | GPIO_EMC_30, | ||
| 103 | GPIO_EMC_31, | ||
| 104 | GPIO_EMC_32, | ||
| 105 | GPIO_EMC_33, | ||
| 106 | GPIO_EMC_34, | ||
| 107 | GPIO_EMC_35, | ||
| 108 | GPIO_EMC_36, | ||
| 109 | GPIO_EMC_37, | ||
| 110 | GPIO_EMC_38, | ||
| 111 | GPIO_EMC_39, | ||
| 112 | GPIO_EMC_40, | ||
| 113 | GPIO_EMC_41, | ||
| 114 | GPIO_SD_B0_00, | ||
| 115 | GPIO_SD_B0_01, | ||
| 116 | GPIO_SD_B0_02, | ||
| 117 | GPIO_SD_B0_03, | ||
| 118 | GPIO_SD_B0_04, | ||
| 119 | GPIO_SD_B0_05, | ||
| 120 | GPIO_SD_B1_00, | ||
| 121 | GPIO_SD_B1_01, | ||
| 122 | GPIO_SD_B1_02, | ||
| 123 | GPIO_SD_B1_03, | ||
| 124 | GPIO_SD_B1_04, | ||
| 125 | GPIO_SD_B1_05, | ||
| 126 | GPIO_SD_B1_06, | ||
| 127 | GPIO_SD_B1_07, | ||
| 128 | GPIO_SD_B1_08, | ||
| 129 | GPIO_SD_B1_09, | ||
| 130 | GPIO_SD_B1_10, | ||
| 131 | GPIO_SD_B1_11, | ||
| 132 | WAKEUP, | ||
| 133 | PMIC_ON_REQ, | ||
| 134 | PMIC_STBY_REQ, | ||
| 135 | } | ||
| 136 | |||
| 137 | impl_gpio! { | ||
| 138 | // GPIO Bank 1 | ||
| 139 | GPIO_AD_B0_00(Gpio1, 0); | ||
| 140 | GPIO_AD_B0_01(Gpio1, 1); | ||
| 141 | GPIO_AD_B0_02(Gpio1, 2); | ||
| 142 | GPIO_AD_B0_03(Gpio1, 3); | ||
| 143 | GPIO_AD_B0_04(Gpio1, 4); | ||
| 144 | GPIO_AD_B0_05(Gpio1, 5); | ||
| 145 | GPIO_AD_B0_06(Gpio1, 6); | ||
| 146 | GPIO_AD_B0_07(Gpio1, 7); | ||
| 147 | GPIO_AD_B0_08(Gpio1, 8); | ||
| 148 | GPIO_AD_B0_09(Gpio1, 9); | ||
| 149 | GPIO_AD_B0_10(Gpio1, 10); | ||
| 150 | GPIO_AD_B0_11(Gpio1, 11); | ||
| 151 | GPIO_AD_B0_12(Gpio1, 12); | ||
| 152 | GPIO_AD_B0_13(Gpio1, 13); | ||
| 153 | GPIO_AD_B0_14(Gpio1, 14); | ||
| 154 | GPIO_AD_B0_15(Gpio1, 15); | ||
| 155 | GPIO_AD_B1_00(Gpio1, 16); | ||
| 156 | GPIO_AD_B1_01(Gpio1, 17); | ||
| 157 | GPIO_AD_B1_02(Gpio1, 18); | ||
| 158 | GPIO_AD_B1_03(Gpio1, 19); | ||
| 159 | GPIO_AD_B1_04(Gpio1, 20); | ||
| 160 | GPIO_AD_B1_05(Gpio1, 21); | ||
| 161 | GPIO_AD_B1_06(Gpio1, 22); | ||
| 162 | GPIO_AD_B1_07(Gpio1, 23); | ||
| 163 | GPIO_AD_B1_08(Gpio1, 24); | ||
| 164 | GPIO_AD_B1_09(Gpio1, 25); | ||
| 165 | GPIO_AD_B1_10(Gpio1, 26); | ||
| 166 | GPIO_AD_B1_11(Gpio1, 27); | ||
| 167 | GPIO_AD_B1_12(Gpio1, 28); | ||
| 168 | GPIO_AD_B1_13(Gpio1, 29); | ||
| 169 | GPIO_AD_B1_14(Gpio1, 30); | ||
| 170 | GPIO_AD_B1_15(Gpio1, 31); | ||
| 171 | |||
| 172 | // GPIO Bank 2 | ||
| 173 | GPIO_B0_00(Gpio2, 0); | ||
| 174 | GPIO_B0_01(Gpio2, 1); | ||
| 175 | GPIO_B0_02(Gpio2, 2); | ||
| 176 | GPIO_B0_03(Gpio2, 3); | ||
| 177 | GPIO_B0_04(Gpio2, 4); | ||
| 178 | GPIO_B0_05(Gpio2, 5); | ||
| 179 | GPIO_B0_06(Gpio2, 6); | ||
| 180 | GPIO_B0_07(Gpio2, 7); | ||
| 181 | GPIO_B0_08(Gpio2, 8); | ||
| 182 | GPIO_B0_09(Gpio2, 9); | ||
| 183 | GPIO_B0_10(Gpio2, 10); | ||
| 184 | GPIO_B0_11(Gpio2, 11); | ||
| 185 | GPIO_B0_12(Gpio2, 12); | ||
| 186 | GPIO_B0_13(Gpio2, 13); | ||
| 187 | GPIO_B0_14(Gpio2, 14); | ||
| 188 | GPIO_B0_15(Gpio2, 15); | ||
| 189 | GPIO_B1_00(Gpio2, 16); | ||
| 190 | GPIO_B1_01(Gpio2, 17); | ||
| 191 | GPIO_B1_02(Gpio2, 18); | ||
| 192 | GPIO_B1_03(Gpio2, 19); | ||
| 193 | GPIO_B1_04(Gpio2, 20); | ||
| 194 | GPIO_B1_05(Gpio2, 21); | ||
| 195 | GPIO_B1_06(Gpio2, 22); | ||
| 196 | GPIO_B1_07(Gpio2, 23); | ||
| 197 | GPIO_B1_08(Gpio2, 24); | ||
| 198 | GPIO_B1_09(Gpio2, 25); | ||
| 199 | GPIO_B1_10(Gpio2, 26); | ||
| 200 | GPIO_B1_11(Gpio2, 27); | ||
| 201 | GPIO_B1_12(Gpio2, 28); | ||
| 202 | GPIO_B1_13(Gpio2, 29); | ||
| 203 | GPIO_B1_14(Gpio2, 30); | ||
| 204 | GPIO_B1_15(Gpio2, 31); | ||
| 205 | |||
| 206 | // GPIO Bank 4 (EMC is 4, then 3) | ||
| 207 | GPIO_EMC_00(Gpio4, 0); | ||
| 208 | GPIO_EMC_01(Gpio4, 1); | ||
| 209 | GPIO_EMC_02(Gpio4, 2); | ||
| 210 | GPIO_EMC_03(Gpio4, 3); | ||
| 211 | GPIO_EMC_04(Gpio4, 4); | ||
| 212 | GPIO_EMC_05(Gpio4, 5); | ||
| 213 | GPIO_EMC_06(Gpio4, 6); | ||
| 214 | GPIO_EMC_07(Gpio4, 7); | ||
| 215 | GPIO_EMC_08(Gpio4, 8); | ||
| 216 | GPIO_EMC_09(Gpio4, 9); | ||
| 217 | GPIO_EMC_10(Gpio4, 10); | ||
| 218 | GPIO_EMC_11(Gpio4, 11); | ||
| 219 | GPIO_EMC_12(Gpio4, 12); | ||
| 220 | GPIO_EMC_13(Gpio4, 13); | ||
| 221 | GPIO_EMC_14(Gpio4, 14); | ||
| 222 | GPIO_EMC_15(Gpio4, 15); | ||
| 223 | GPIO_EMC_16(Gpio4, 16); | ||
| 224 | GPIO_EMC_17(Gpio4, 17); | ||
| 225 | GPIO_EMC_18(Gpio4, 18); | ||
| 226 | GPIO_EMC_19(Gpio4, 19); | ||
| 227 | GPIO_EMC_20(Gpio4, 20); | ||
| 228 | GPIO_EMC_21(Gpio4, 21); | ||
| 229 | GPIO_EMC_22(Gpio4, 22); | ||
| 230 | GPIO_EMC_23(Gpio4, 23); | ||
| 231 | GPIO_EMC_24(Gpio4, 24); | ||
| 232 | GPIO_EMC_25(Gpio4, 25); | ||
| 233 | GPIO_EMC_26(Gpio4, 26); | ||
| 234 | GPIO_EMC_27(Gpio4, 27); | ||
| 235 | GPIO_EMC_28(Gpio4, 28); | ||
| 236 | GPIO_EMC_29(Gpio4, 29); | ||
| 237 | GPIO_EMC_30(Gpio4, 30); | ||
| 238 | GPIO_EMC_31(Gpio4, 31); | ||
| 239 | |||
| 240 | // GPIO Bank 3 | ||
| 241 | GPIO_EMC_32(Gpio3, 18); | ||
| 242 | GPIO_EMC_33(Gpio3, 19); | ||
| 243 | GPIO_EMC_34(Gpio3, 20); | ||
| 244 | GPIO_EMC_35(Gpio3, 21); | ||
| 245 | GPIO_EMC_36(Gpio3, 22); | ||
| 246 | GPIO_EMC_37(Gpio3, 23); | ||
| 247 | GPIO_EMC_38(Gpio3, 24); | ||
| 248 | GPIO_EMC_39(Gpio3, 25); | ||
| 249 | GPIO_EMC_40(Gpio3, 26); | ||
| 250 | GPIO_EMC_41(Gpio3, 27); | ||
| 251 | GPIO_SD_B0_00(Gpio3, 12); | ||
| 252 | GPIO_SD_B0_01(Gpio3, 13); | ||
| 253 | GPIO_SD_B0_02(Gpio3, 14); | ||
| 254 | GPIO_SD_B0_03(Gpio3, 15); | ||
| 255 | GPIO_SD_B0_04(Gpio3, 16); | ||
| 256 | GPIO_SD_B0_05(Gpio3, 17); | ||
| 257 | GPIO_SD_B1_00(Gpio3, 0); | ||
| 258 | GPIO_SD_B1_01(Gpio3, 1); | ||
| 259 | GPIO_SD_B1_02(Gpio3, 2); | ||
| 260 | GPIO_SD_B1_03(Gpio3, 3); | ||
| 261 | GPIO_SD_B1_04(Gpio3, 4); | ||
| 262 | GPIO_SD_B1_05(Gpio3, 5); | ||
| 263 | GPIO_SD_B1_06(Gpio3, 6); | ||
| 264 | GPIO_SD_B1_07(Gpio3, 7); | ||
| 265 | GPIO_SD_B1_08(Gpio3, 8); | ||
| 266 | GPIO_SD_B1_09(Gpio3, 9); | ||
| 267 | GPIO_SD_B1_10(Gpio3, 10); | ||
| 268 | GPIO_SD_B1_11(Gpio3, 11); | ||
| 269 | |||
| 270 | WAKEUP(Gpio5, 0); | ||
| 271 | PMIC_ON_REQ(Gpio5, 1); | ||
| 272 | PMIC_STBY_REQ(Gpio5, 2); | ||
| 273 | } | ||
| 274 | |||
| 275 | pub(crate) mod _generated { | ||
| 276 | #![allow(dead_code)] | ||
| 277 | #![allow(unused_imports)] | ||
| 278 | #![allow(non_snake_case)] | ||
| 279 | #![allow(missing_docs)] | ||
| 280 | |||
| 281 | include!(concat!(env!("OUT_DIR"), "/_generated.rs")); | ||
| 282 | } | ||
diff --git a/embassy-nxp/src/gpio/rt1xxx.rs b/embassy-nxp/src/gpio/rt1xxx.rs index 9c58e8a7d..1d60a0d51 100644 --- a/embassy-nxp/src/gpio/rt1xxx.rs +++ b/embassy-nxp/src/gpio/rt1xxx.rs | |||
| @@ -12,11 +12,11 @@ use nxp_pac::iomuxc::vals::Pus; | |||
| 12 | 12 | ||
| 13 | use crate::chip::{mux_address, pad_address}; | 13 | use crate::chip::{mux_address, pad_address}; |
| 14 | use crate::pac::common::{Reg, RW}; | 14 | use crate::pac::common::{Reg, RW}; |
| 15 | use crate::pac::gpio::Gpio; | ||
| 15 | #[cfg(feature = "rt")] | 16 | #[cfg(feature = "rt")] |
| 16 | use crate::pac::interrupt; | 17 | use crate::pac::interrupt; |
| 17 | use crate::pac::iomuxc::regs::{Ctl, MuxCtl}; | 18 | use crate::pac::iomuxc::regs::{Ctl, MuxCtl}; |
| 18 | #[cfg(gpio5)] | 19 | use crate::pac::{self}; |
| 19 | use crate::pac::{self, gpio::Gpio}; | ||
| 20 | 20 | ||
| 21 | /// The GPIO pin level for pins set on "Digital" mode. | 21 | /// The GPIO pin level for pins set on "Digital" mode. |
| 22 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] | 22 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] |
| @@ -110,6 +110,14 @@ pub enum Bank { | |||
| 110 | #[cfg(gpio2)] | 110 | #[cfg(gpio2)] |
| 111 | Gpio2, | 111 | Gpio2, |
| 112 | 112 | ||
| 113 | /// Bank 3 | ||
| 114 | #[cfg(gpio3)] | ||
| 115 | Gpio3, | ||
| 116 | |||
| 117 | /// Bank 4 | ||
| 118 | #[cfg(gpio4)] | ||
| 119 | Gpio4, | ||
| 120 | |||
| 113 | /// Bank 5 | 121 | /// Bank 5 |
| 114 | #[cfg(gpio5)] | 122 | #[cfg(gpio5)] |
| 115 | Gpio5, | 123 | Gpio5, |
| @@ -642,6 +650,10 @@ const GPIO_MUX_MODE: u8 = 0b101; | |||
| 642 | static GPIO1_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; | 650 | static GPIO1_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; |
| 643 | #[cfg(gpio2)] | 651 | #[cfg(gpio2)] |
| 644 | static GPIO2_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; | 652 | static GPIO2_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; |
| 653 | #[cfg(gpio3)] | ||
| 654 | static GPIO3_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; | ||
| 655 | #[cfg(gpio4)] | ||
| 656 | static GPIO4_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; | ||
| 645 | #[cfg(gpio5)] | 657 | #[cfg(gpio5)] |
| 646 | static GPIO5_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; | 658 | static GPIO5_WAKERS: [AtomicWaker; 32] = [const { AtomicWaker::new() }; 32]; |
| 647 | 659 | ||
| @@ -658,6 +670,10 @@ pub(crate) trait SealedPin: Sized { | |||
| 658 | Bank::Gpio1 => pac::GPIO1, | 670 | Bank::Gpio1 => pac::GPIO1, |
| 659 | #[cfg(gpio2)] | 671 | #[cfg(gpio2)] |
| 660 | Bank::Gpio2 => pac::GPIO2, | 672 | Bank::Gpio2 => pac::GPIO2, |
| 673 | #[cfg(gpio3)] | ||
| 674 | Bank::Gpio3 => pac::GPIO3, | ||
| 675 | #[cfg(gpio4)] | ||
| 676 | Bank::Gpio4 => pac::GPIO4, | ||
| 661 | #[cfg(gpio5)] | 677 | #[cfg(gpio5)] |
| 662 | Bank::Gpio5 => pac::GPIO5, | 678 | Bank::Gpio5 => pac::GPIO5, |
| 663 | } | 679 | } |
| @@ -687,6 +703,10 @@ pub(crate) trait SealedPin: Sized { | |||
| 687 | Bank::Gpio1 => &GPIO1_WAKERS[self.pin_number() as usize], | 703 | Bank::Gpio1 => &GPIO1_WAKERS[self.pin_number() as usize], |
| 688 | #[cfg(gpio2)] | 704 | #[cfg(gpio2)] |
| 689 | Bank::Gpio2 => &GPIO2_WAKERS[self.pin_number() as usize], | 705 | Bank::Gpio2 => &GPIO2_WAKERS[self.pin_number() as usize], |
| 706 | #[cfg(gpio3)] | ||
| 707 | Bank::Gpio3 => &GPIO3_WAKERS[self.pin_number() as usize], | ||
| 708 | #[cfg(gpio4)] | ||
| 709 | Bank::Gpio4 => &GPIO4_WAKERS[self.pin_number() as usize], | ||
| 690 | #[cfg(gpio5)] | 710 | #[cfg(gpio5)] |
| 691 | Bank::Gpio5 => &GPIO5_WAKERS[self.pin_number() as usize], | 711 | Bank::Gpio5 => &GPIO5_WAKERS[self.pin_number() as usize], |
| 692 | } | 712 | } |
| @@ -870,25 +890,55 @@ fn irq_handler(block: Gpio, wakers: &[AtomicWaker; 32], high_bits: bool) { | |||
| 870 | } | 890 | } |
| 871 | } | 891 | } |
| 872 | 892 | ||
| 873 | #[cfg(all(feature = "mimxrt1011", feature = "rt"))] | 893 | #[cfg(all(any(feature = "mimxrt1011", feature = "mimxrt1062"), feature = "rt"))] |
| 874 | #[interrupt] | 894 | #[interrupt] |
| 875 | fn GPIO1_COMBINED_0_15() { | 895 | fn GPIO1_COMBINED_0_15() { |
| 876 | irq_handler(pac::GPIO1, &GPIO1_WAKERS, false); | 896 | irq_handler(pac::GPIO1, &GPIO1_WAKERS, false); |
| 877 | } | 897 | } |
| 878 | 898 | ||
| 879 | #[cfg(all(feature = "mimxrt1011", feature = "rt"))] | 899 | #[cfg(all(any(feature = "mimxrt1011", feature = "mimxrt1062"), feature = "rt"))] |
| 880 | #[interrupt] | 900 | #[interrupt] |
| 881 | fn GPIO1_COMBINED_16_31() { | 901 | fn GPIO1_COMBINED_16_31() { |
| 882 | irq_handler(pac::GPIO1, &GPIO1_WAKERS, true); | 902 | irq_handler(pac::GPIO1, &GPIO1_WAKERS, true); |
| 883 | } | 903 | } |
| 884 | 904 | ||
| 885 | #[cfg(all(feature = "mimxrt1011", feature = "rt"))] | 905 | #[cfg(all(any(feature = "mimxrt1011", feature = "mimxrt1062"), feature = "rt"))] |
| 886 | #[interrupt] | 906 | #[interrupt] |
| 887 | fn GPIO2_COMBINED_0_15() { | 907 | fn GPIO2_COMBINED_0_15() { |
| 888 | irq_handler(pac::GPIO2, &GPIO2_WAKERS, false); | 908 | irq_handler(pac::GPIO2, &GPIO2_WAKERS, false); |
| 889 | } | 909 | } |
| 890 | 910 | ||
| 891 | #[cfg(all(feature = "mimxrt1011", feature = "rt"))] | 911 | #[cfg(all(feature = "mimxrt1062", feature = "rt"))] |
| 912 | #[interrupt] | ||
| 913 | fn GPIO2_COMBINED_16_31() { | ||
| 914 | irq_handler(pac::GPIO2, &GPIO2_WAKERS, true); | ||
| 915 | } | ||
| 916 | |||
| 917 | #[cfg(all(feature = "mimxrt1062", feature = "rt"))] | ||
| 918 | #[interrupt] | ||
| 919 | fn GPIO3_COMBINED_0_15() { | ||
| 920 | irq_handler(pac::GPIO3, &GPIO3_WAKERS, false); | ||
| 921 | } | ||
| 922 | |||
| 923 | #[cfg(all(feature = "mimxrt1062", feature = "rt"))] | ||
| 924 | #[interrupt] | ||
| 925 | fn GPIO3_COMBINED_16_31() { | ||
| 926 | irq_handler(pac::GPIO3, &GPIO3_WAKERS, true); | ||
| 927 | } | ||
| 928 | |||
| 929 | #[cfg(all(feature = "mimxrt1062", feature = "rt"))] | ||
| 930 | #[interrupt] | ||
| 931 | fn GPIO4_COMBINED_0_15() { | ||
| 932 | irq_handler(pac::GPIO4, &GPIO4_WAKERS, false); | ||
| 933 | } | ||
| 934 | |||
| 935 | #[cfg(all(feature = "mimxrt1062", feature = "rt"))] | ||
| 936 | #[interrupt] | ||
| 937 | fn GPIO4_COMBINED_16_31() { | ||
| 938 | irq_handler(pac::GPIO4, &GPIO4_WAKERS, true); | ||
| 939 | } | ||
| 940 | |||
| 941 | #[cfg(all(any(feature = "mimxrt1011", feature = "mimxrt1062"), feature = "rt"))] | ||
| 892 | #[interrupt] | 942 | #[interrupt] |
| 893 | fn GPIO5_COMBINED_0_15() { | 943 | fn GPIO5_COMBINED_0_15() { |
| 894 | irq_handler(pac::GPIO5, &GPIO5_WAKERS, false); | 944 | irq_handler(pac::GPIO5, &GPIO5_WAKERS, false); |
diff --git a/embassy-nxp/src/lib.rs b/embassy-nxp/src/lib.rs index a715770c4..5e77fc0db 100644 --- a/embassy-nxp/src/lib.rs +++ b/embassy-nxp/src/lib.rs | |||
| @@ -14,6 +14,7 @@ mod time_driver; | |||
| 14 | // This mod MUST go last, so that it sees all the `impl_foo!` macros | 14 | // This mod MUST go last, so that it sees all the `impl_foo!` macros |
| 15 | #[cfg_attr(feature = "lpc55", path = "chips/lpc55.rs")] | 15 | #[cfg_attr(feature = "lpc55", path = "chips/lpc55.rs")] |
| 16 | #[cfg_attr(feature = "mimxrt1011", path = "chips/mimxrt1011.rs")] | 16 | #[cfg_attr(feature = "mimxrt1011", path = "chips/mimxrt1011.rs")] |
| 17 | #[cfg_attr(feature = "mimxrt1062", path = "chips/mimxrt1062.rs")] | ||
| 17 | mod chip; | 18 | mod chip; |
| 18 | 19 | ||
| 19 | #[cfg(feature = "unstable-pac")] | 20 | #[cfg(feature = "unstable-pac")] |
