aboutsummaryrefslogtreecommitdiff
path: root/embassy-mspm0
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-mspm0')
-rw-r--r--embassy-mspm0/src/i2c.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/embassy-mspm0/src/i2c.rs b/embassy-mspm0/src/i2c.rs
index d1b260114..7e22bb724 100644
--- a/embassy-mspm0/src/i2c.rs
+++ b/embassy-mspm0/src/i2c.rs
@@ -190,7 +190,7 @@ impl Config {
190 // - SCL_LP is the SCL Low period (fixed at 6) 190 // - SCL_LP is the SCL Low period (fixed at 6)
191 // - SCL_HP is the SCL High period (fixed at 4) 191 // - SCL_HP is the SCL High period (fixed at 4)
192 // - I2C_CLK is functional clock frequency 192 // - I2C_CLK is functional clock frequency
193 return (((self.calculate_clock_source() * self.clock_div.divider()) / (self.bus_speed.hertz() * 10u32)) - 1) 193 return ((self.calculate_clock_source() / (self.bus_speed.hertz() * 10u32)) - 1)
194 .try_into() 194 .try_into()
195 .unwrap(); 195 .unwrap();
196 } 196 }
@@ -200,8 +200,8 @@ impl Config {
200 // Assume that BusClk has default value. 200 // Assume that BusClk has default value.
201 // TODO: calculate BusClk more precisely. 201 // TODO: calculate BusClk more precisely.
202 match self.clock_source { 202 match self.clock_source {
203 ClockSel::MfClk => 4_000_000, 203 ClockSel::MfClk => 4_000_000 / self.clock_div.divider(),
204 ClockSel::BusClk => 24_000_000, 204 ClockSel::BusClk => 24_000_000 / self.clock_div.divider(),
205 } 205 }
206 } 206 }
207 207
@@ -213,8 +213,8 @@ impl Config {
213 // Assume that BusClk has default value. 213 // Assume that BusClk has default value.
214 // TODO: calculate BusClk more precisely. 214 // TODO: calculate BusClk more precisely.
215 match self.clock_source { 215 match self.clock_source {
216 ClockSel::MfClk => 4_000_000, 216 ClockSel::MfClk => 4_000_000 / self.clock_div.divider(),
217 ClockSel::BusClk => 24_000_000, 217 ClockSel::BusClk => 32_000_000 / self.clock_div.divider(),
218 } 218 }
219 } 219 }
220 220
@@ -1144,7 +1144,7 @@ mod tests {
1144 config.clock_div = ClockDiv::DivBy1; 1144 config.clock_div = ClockDiv::DivBy1;
1145 config.bus_speed = BusSpeed::FastMode; 1145 config.bus_speed = BusSpeed::FastMode;
1146 config.clock_source = ClockSel::BusClk; 1146 config.clock_source = ClockSel::BusClk;
1147 assert!(matches!(config.calculate_timer_period(), 7)); 1147 assert_eq!(config.calculate_timer_period(), 7u8);
1148 } 1148 }
1149 1149
1150 #[test] 1150 #[test]
@@ -1153,7 +1153,7 @@ mod tests {
1153 config.clock_div = ClockDiv::DivBy2; 1153 config.clock_div = ClockDiv::DivBy2;
1154 config.bus_speed = BusSpeed::FastMode; 1154 config.bus_speed = BusSpeed::FastMode;
1155 config.clock_source = ClockSel::BusClk; 1155 config.clock_source = ClockSel::BusClk;
1156 assert!(matches!(config.calculate_timer_period(), 3)); 1156 assert_eq!(config.calculate_timer_period(), 3u8);
1157 } 1157 }
1158 1158
1159 #[test] 1159 #[test]
@@ -1162,7 +1162,7 @@ mod tests {
1162 config.clock_div = ClockDiv::DivBy2; 1162 config.clock_div = ClockDiv::DivBy2;
1163 config.bus_speed = BusSpeed::Standard; 1163 config.bus_speed = BusSpeed::Standard;
1164 config.clock_source = ClockSel::BusClk; 1164 config.clock_source = ClockSel::BusClk;
1165 assert!(matches!(config.calculate_timer_period(), 15)); 1165 assert_eq!(config.calculate_timer_period(), 15u8);
1166 } 1166 }
1167 1167
1168 #[test] 1168 #[test]
@@ -1171,7 +1171,7 @@ mod tests {
1171 config.clock_div = ClockDiv::DivBy2; 1171 config.clock_div = ClockDiv::DivBy2;
1172 config.bus_speed = BusSpeed::Custom(100_000); 1172 config.bus_speed = BusSpeed::Custom(100_000);
1173 config.clock_source = ClockSel::BusClk; 1173 config.clock_source = ClockSel::BusClk;
1174 assert!(matches!(config.calculate_timer_period(), 15)); 1174 assert_eq!(config.calculate_timer_period(), 15u8);
1175 } 1175 }
1176 1176
1177 #[test] 1177 #[test]