Skip to content

Commit 224cf4c

Browse files
committed
Envie: Fix I2C clock speed
1 parent 4b19ee0 commit 224cf4c

File tree

6 files changed

+22
-8
lines changed

6 files changed

+22
-8
lines changed

cores/arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/i2c_device.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ extern "C" {
4848
#define I2CAPI_I2C3_CLKSRC RCC_I2C3CLKSOURCE_D2PCLK1
4949
#define I2CAPI_I2C4_CLKSRC RCC_I2C4CLKSOURCE_D3PCLK1
5050

51+
#if (APB1CLK)
52+
#define APB1CLK_MULTIPLIER (APB1CLK / 54000000)
53+
#else
54+
#define APB1CLK_MULTIPLIER (1)
55+
#endif
56+
5157
/* Provide the suitable timing depending on requested frequencie */
5258
static inline uint32_t get_i2c_timing(int hz)
5359
{
@@ -64,13 +70,13 @@ static inline uint32_t get_i2c_timing(int hz)
6470
*/
6571
switch (hz) {
6672
case 100000:
67-
tim = 0x10916998; // Standard mode with Rise time = 120ns, Fall time = 120ns
73+
tim = 0x10916998 * APB1CLK_MULTIPLIER; // Standard mode with Rise time = 120ns, Fall time = 120ns
6874
break;
6975
case 400000:
70-
tim = 0x00B11B54; // Fast Mode with Rise time = 120ns, Fall time = 120ns
76+
tim = 0x00B11B54 * APB1CLK_MULTIPLIER; // Fast Mode with Rise time = 120ns, Fall time = 120ns
7177
break;
7278
case 1000000:
73-
tim = 0x0090091B; // Fast Mode Plus with Rise time = 120ns, Fall time = 10ns
79+
tim = 0x0090091B * APB1CLK_MULTIPLIER; // Fast Mode Plus with Rise time = 120ns, Fall time = 10ns
7480
break;
7581
default:
7682
break;

variants/ENVIE_M4/pins_arduino.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,15 @@ static const uint8_t SCK = PIN_SPI_SCK;
8383
uint8_t getUniqueSerialNumber(uint8_t* name);
8484
void _ontouch1200bps_();
8585

86-
#define WIRE_HOWMANY 1
86+
#define WIRE_HOWMANY 2
8787

8888
#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA))
8989
#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL))
9090

9191
#define I2C_SDA_INTERNAL (PB_7)
9292
#define I2C_SCL_INTERNAL (PB_6)
93+
#define I2C_SDA1 I2C_SDA_INTERNAL
94+
#define I2C_SCL1 I2C_SCL_INTERNAL
9395

9496
#define SPI_HOWMANY 1
9597

variants/ENVIE_M7/defines.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
-DFEATURE_LWIP=1
4848
-D__FPU_PRESENT=1
4949
-D__MBED__=1
50-
-DMBED_BUILD_TIMESTAMP=1579537936.2465086
50+
-DMBED_BUILD_TIMESTAMP=1580125001.1319444
5151
-D__MBED_CMSIS_RTOS_CM
5252
-DMBED_TICKLESS
5353
-DSTM32H747xx

variants/ENVIE_M7/libs/libmbed.a

185 KB
Binary file not shown.

variants/ENVIE_M7/mbed_config.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#define __MBED_CONFIG_DATA__
2323

2424
// Configuration parameters
25+
#define APB1CLK 112500000 // set by target:ENVIE
2526
#define ATT_NUM_SIMUL_NTF 1 // set by library:cordio
2627
#define ATT_NUM_SIMUL_WRITE_CMD 1 // set by library:cordio
2728
#define BLE_FEATURE_EXTENDED_ADVERTISING 1 // set by library:ble
@@ -38,7 +39,7 @@
3839
#define BLE_ROLE_CENTRAL 1 // set by library:ble
3940
#define BLE_ROLE_OBSERVER 1 // set by library:ble
4041
#define BLE_ROLE_PERIPHERAL 1 // set by library:ble
41-
#define CLOCK_SOURCE USE_PLL_HSE_XTAL // set by target:ENVIE
42+
#define CLOCK_SOURCE USE_PLL_HSE_EXTC // set by target:ENVIE
4243
#define DM_CONN_MAX 3 // set by library:cordio
4344
#define DM_NUM_ADV_SETS 3 // set by library:cordio
4445
#define DM_NUM_PHYS 3 // set by library:cordio

variants/ENVIE_M7/pins_arduino.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,11 @@ static const uint8_t SCK = PIN_SPI_SCK;
5858
#define PIN_WIRE_SDA (11u)
5959
#define PIN_WIRE_SCL (12u)
6060

61-
#define SERIAL_HOWMANY 1
61+
#define SERIAL_HOWMANY 2
6262
#define SERIAL1_TX (digitalPinToPinName(PIN_SERIAL_TX))
6363
#define SERIAL1_RX (digitalPinToPinName(PIN_SERIAL_RX))
64+
#define SERIAL2_TX (PA_0)
65+
#define SERIAL2_RX (PI_9)
6466

6567
#define SERIAL_CDC 1
6668
#define HAS_UNIQUE_ISERIAL_DESCRIPTOR
@@ -74,13 +76,16 @@ uint8_t getUniqueSerialNumber(uint8_t* name);
7476
void _ontouch1200bps_();
7577

7678

77-
#define WIRE_HOWMANY 1
79+
#define WIRE_HOWMANY 2
7880

7981
#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA))
8082
#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL))
8183

8284
#define I2C_SDA_INTERNAL (PB_7)
8385
#define I2C_SCL_INTERNAL (PB_6)
86+
#define I2C_SDA1 I2C_SDA_INTERNAL
87+
#define I2C_SCL1 I2C_SCL_INTERNAL
88+
8489

8590
#define SPI_HOWMANY 1
8691

0 commit comments

Comments
 (0)