Skip to content

Commit 51ae319

Browse files
This commit solves excess usage of RAM. Enabled user to control
I2C timing algorithm feature using target.json file. Using this user can disable I2C timing algorithm and there by reduce RAM usage. Signed-off-by: Affrin Pinhero <[email protected]>
1 parent ef5ac45 commit 51ae319

File tree

24 files changed

+169
-17
lines changed

24 files changed

+169
-17
lines changed

targets/TARGET_STM/TARGET_STM32F0/i2c_device.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,13 @@ uint32_t i2c_get_timing(I2CName i2c, int hz)
7878
}
7979

8080
else {
81+
/* If MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO assert is triggered.
82+
User needs to enable I2C_TIMING_VALUE_ALGO in target.json for specific target.
83+
Enabling this may impact performance*/
84+
MBED_ASSERT(MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO);
85+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
8186
tim = i2c_compute_timing(pclk, hz);
87+
#endif
8288
}
8389
return tim;
8490
}

targets/TARGET_STM/TARGET_STM32F0/i2c_device.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,13 @@ extern "C" {
4848
#define I2CAPI_I2C1_CLKSRC RCC_I2C1CLKSOURCE_SYSCLK
4949

5050
uint32_t i2c_get_pclk(I2CName i2c);
51-
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
5251
uint32_t i2c_get_timing(I2CName i2c, int hz);
52+
53+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
54+
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
5355
void i2c_compute_presc_scldel_sdadel(uint32_t clock_src_freq, uint32_t I2C_speed);
5456
uint32_t i2c_compute_scll_sclh(uint32_t clock_src_freq, uint32_t I2C_speed);
57+
#endif // MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
5558

5659
#endif // DEVICE_I2C
5760

targets/TARGET_STM/TARGET_STM32F3/i2c_device.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,13 @@ uint32_t i2c_get_timing(I2CName i2c, int hz)
122122
}
123123

124124
else {
125+
/* If MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO assert is triggered.
126+
User needs to enable I2C_TIMING_VALUE_ALGO in target.json for specific target.
127+
Enabling this may impact performance*/
128+
MBED_ASSERT(MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO);
129+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
125130
tim = i2c_compute_timing(pclk, hz);
131+
#endif
126132
}
127133
return tim;
128134
}

targets/TARGET_STM/TARGET_STM32F3/i2c_device.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,13 @@ extern "C" {
6262
#define I2CAPI_I2C3_CLKSRC RCC_I2C3CLKSOURCE_SYSCLK
6363

6464
uint32_t i2c_get_pclk(I2CName i2c);
65-
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
6665
uint32_t i2c_get_timing(I2CName i2c, int hz);
66+
67+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
68+
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
6769
void i2c_compute_presc_scldel_sdadel(uint32_t clock_src_freq, uint32_t I2C_speed);
6870
uint32_t i2c_compute_scll_sclh(uint32_t clock_src_freq, uint32_t I2C_speed);
71+
#endif // MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
6972

7073
#endif // DEVICE_I2C
7174

targets/TARGET_STM/TARGET_STM32F7/i2c_device.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,13 @@ uint32_t i2c_get_timing(I2CName i2c, int hz)
133133
break;
134134
}
135135
} else {
136+
/* If MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO assert is triggered.
137+
User needs to enable I2C_TIMING_VALUE_ALGO in target.json for specific target.
138+
Enabling this may impact performance*/
139+
MBED_ASSERT(MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO);
140+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
136141
tim = i2c_compute_timing(pclk, hz);
142+
#endif
137143
}
138144
return tim;
139145
}

targets/TARGET_STM/TARGET_STM32F7/i2c_device.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,13 @@ extern "C" {
5757
#define I2CAPI_I2C4_CLKSRC RCC_I2C4CLKSOURCE_PCLK1
5858

5959
uint32_t i2c_get_pclk(I2CName i2c);
60-
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
6160
uint32_t i2c_get_timing(I2CName i2c, int hz);
61+
62+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
63+
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
6264
void i2c_compute_presc_scldel_sdadel(uint32_t clock_src_freq, uint32_t I2C_speed);
6365
uint32_t i2c_compute_scll_sclh(uint32_t clock_src_freq, uint32_t I2C_speed);
66+
#endif // MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
6467

6568
#endif // DEVICE_I2C
6669

targets/TARGET_STM/TARGET_STM32G0/i2c_device.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,13 @@ uint32_t i2c_get_timing(I2CName i2c, int hz)
7878
break;
7979
}
8080
} else {
81+
/* If MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO assert is triggered.
82+
User needs to enable I2C_TIMING_VALUE_ALGO in target.json for specific target.
83+
Enabling this may impact performance*/
84+
MBED_ASSERT(MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO);
85+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
8186
tim = i2c_compute_timing(pclk, hz);
87+
#endif
8288
}
8389
return tim;
8490
}

targets/TARGET_STM/TARGET_STM32G0/i2c_device.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,13 @@ extern "C" {
4747
#define I2CAPI_I2C2_CLKSRC RCC_I2C2CLKSOURCE_SYSCLK
4848

4949
uint32_t i2c_get_pclk(I2CName i2c);
50-
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
5150
uint32_t i2c_get_timing(I2CName i2c, int hz);
51+
52+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
53+
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
5254
void i2c_compute_presc_scldel_sdadel(uint32_t clock_src_freq, uint32_t I2C_speed);
5355
uint32_t i2c_compute_scll_sclh(uint32_t clock_src_freq, uint32_t I2C_speed);
56+
#endif // MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
5457

5558
#endif // DEVICE_I2C
5659

targets/TARGET_STM/TARGET_STM32G4/i2c_device.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,13 @@ uint32_t i2c_get_timing(I2CName i2c, int hz)
133133
break;
134134
}
135135
} else {
136+
/* If MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO assert is triggered.
137+
User needs to enable I2C_TIMING_VALUE_ALGO in target.json for specific target.
138+
Enabling this may impact performance*/
139+
MBED_ASSERT(MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO);
140+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
136141
tim = i2c_compute_timing(pclk, hz);
142+
#endif
137143
}
138144
return tim;
139145
}

targets/TARGET_STM/TARGET_STM32G4/i2c_device.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@ extern "C" {
4343
#define I2CAPI_I2C4_CLKSRC RCC_I2C4CLKSOURCE_SYSCLK
4444

4545
uint32_t i2c_get_pclk(I2CName i2c);
46-
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
4746
uint32_t i2c_get_timing(I2CName i2c, int hz);
47+
48+
#if MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
49+
uint32_t i2c_compute_timing(uint32_t clock_src_freq, uint32_t i2c_freq);
4850
void i2c_compute_presc_scldel_sdadel(uint32_t clock_src_freq, uint32_t I2C_speed);
4951
uint32_t i2c_compute_scll_sclh(uint32_t clock_src_freq, uint32_t I2C_speed);
50-
52+
#endif // MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO
5153
#endif // DEVICE_I2C
5254

5355
#ifdef __cplusplus

0 commit comments

Comments
 (0)