This commit is contained in:
J / Jacob Babich
2022-04-13 01:49:16 -04:00
parent 79de6fab06
commit 816520ed77
9 changed files with 588 additions and 88 deletions

106
src/lib/registers.rs Normal file
View File

@@ -0,0 +1,106 @@
//! Memory addresses of registers
//! Data sheet: https://www.ti.com/lit/ds/spms376e/spms376e.pdf
// TODO: check page 92-94 for more features ("Memory Map" table)!
// TODO: check page 1230 onward for PWM
/// Modeled after page 660 of data sheet (GPIO Register Map)
pub mod gpio {
mod base {
pub const PORT_A: u32 = 0x4000_4000;
pub const PORT_F: u32 = 0x4002_5000;
}
/// Page 671 of data sheet
pub mod afsel {
const OFFSET: u32 = 0x420;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 687 of data sheet
pub mod amsel {
const OFFSET: u32 = 0x52C;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 685 of data sheet
pub mod cr {
const OFFSET: u32 = 0x524;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 662 of data sheet
pub mod data {
const OFFSET: u32 = 0x000;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 682 of data sheet
pub mod den {
const OFFSET: u32 = 0x51C;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 663 of data sheet
pub mod dir {
const OFFSET: u32 = 0x400;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 684 of data sheet
pub mod lock {
const OFFSET: u32 = 0x520;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 688 of data sheet
pub mod pctl {
const OFFSET: u32 = 0x52C;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 679 of data sheet
pub mod pdr {
const OFFSET: u32 = 0x514;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
/// Page 677 of data sheet
pub mod pur {
const OFFSET: u32 = 0x510;
pub const PORT_A: *mut u32 = (super::base::PORT_A + OFFSET) as *mut u32;
pub const PORT_F: *mut u32 = (super::base::PORT_F + OFFSET) as *mut u32;
}
// TODO: examine page 670 for when (if) I do interrupts
}
// TODO: examine page 690 (ADC) for applicability
/// Page 231 of data sheet
pub mod system {
const BASE: u32 = 0x400F_E000;
// TODO: page 340
pub const RCGCGPIO: *mut u32 = (BASE + 0x608) as *mut u32;
}