Skip to content

Commit 828e15b

Browse files
authored
Improvements and fixes in I2C slave (#2982)
1 parent 1236b8b commit 828e15b

File tree

7 files changed

+407
-96
lines changed

7 files changed

+407
-96
lines changed

src/CLR/Core/Hardware/Hardware.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ void CLR_HW_Hardware::ProcessActivity()
158158
eventsCLR |= Event_I2cMaster;
159159
}
160160

161+
if (events & SYSTEM_EVENT_FLAG_I2C_SLAVE)
162+
{
163+
eventsCLR |= Event_I2cSlave;
164+
}
165+
161166
if (events & SYSTEM_EVENT_FLAG_ONEWIRE_MASTER)
162167
{
163168
eventsCLR |= Event_OneWireHost;

src/CLR/Include/nanoCLR_Hardware.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ struct CLR_HW_Hardware
2323
static const CLR_UINT32 c_Default_WakeupEvents =
2424
SYSTEM_EVENT_FLAG_COM_IN | SYSTEM_EVENT_FLAG_COM_OUT | SYSTEM_EVENT_FLAG_STORAGE_IO |
2525
SYSTEM_EVENT_FLAG_SYSTEM_TIMER | SYSTEM_EVENT_FLAG_USB_IN | SYSTEM_EVENT_FLAG_USB_OUT |
26-
SYSTEM_EVENT_FLAG_SPI_MASTER | SYSTEM_EVENT_FLAG_I2C_MASTER | SYSTEM_EVENT_HW_INTERRUPT |
27-
SYSTEM_EVENT_FLAG_SOCKET | SYSTEM_EVENT_FLAG_DEBUGGER_ACTIVITY | SYSTEM_EVENT_FLAG_MESSAGING_ACTIVITY |
28-
SYSTEM_EVENT_FLAG_ONEWIRE_MASTER | SYSTEM_EVENT_FLAG_RADIO | SYSTEM_EVENT_FLAG_WIFI_STATION |
29-
SYSTEM_EVENT_FLAG_BLUETOOTH;
26+
SYSTEM_EVENT_FLAG_SPI_MASTER | SYSTEM_EVENT_FLAG_I2C_MASTER | SYSTEM_EVENT_FLAG_I2C_SLAVE |
27+
SYSTEM_EVENT_HW_INTERRUPT | SYSTEM_EVENT_FLAG_SOCKET | SYSTEM_EVENT_FLAG_DEBUGGER_ACTIVITY |
28+
SYSTEM_EVENT_FLAG_MESSAGING_ACTIVITY | SYSTEM_EVENT_FLAG_ONEWIRE_MASTER | SYSTEM_EVENT_FLAG_RADIO |
29+
SYSTEM_EVENT_FLAG_WIFI_STATION | SYSTEM_EVENT_FLAG_BLUETOOTH;
3030

3131
//--//
3232

src/CLR/Include/nanoCLR_Runtime.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3427,6 +3427,7 @@ typedef enum Events
34273427
Event_Bluetooth = 0x00001000,
34283428
Event_UsbIn = 0x00002000,
34293429
Event_UsbOut = 0x00004000,
3430+
Event_I2cSlave = 0x00010000,
34303431
Event_AppDomain = 0x02000000,
34313432
Event_Socket = 0x20000000,
34323433
Event_IdleCPU = 0x40000000,

src/HAL/Include/nanoHAL_v2.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ typedef enum SLEEP_LEVEL
9090
#define SYSTEM_EVENT_FLAG_SPI_MASTER 0x02000000
9191
#define SYSTEM_EVENT_FLAG_I2C_MASTER 0x04000000
9292
#define SYSTEM_EVENT_HW_INTERRUPT 0x08000000
93+
#define SYSTEM_EVENT_FLAG_I2C_SLAVE 0x10000000
9394
#define SYSTEM_EVENT_FLAG_DEBUGGER_ACTIVITY 0x20000000
9495
#define SYSTEM_EVENT_FLAG_MESSAGING_ACTIVITY 0x40000000
9596
// #define SYSTEM_EVENT_FLAG_UNUSED_0x80000000 0x80000000

targets/ESP32/ESP32/target_system_device_i2c_slave_config.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
// See LICENSE file in the project root for full license information.
44
//
55

6+
// IDF driver requires slave device buffer size to >100 bytes
67
// I2C slave TX buffer size
7-
#define I2C_SLAVE_TX_BUF_LEN 16
8+
#define I2C_SLAVE_TX_BUF_LEN 128
89
// I2C slave RX buffer size
9-
#define I2C_SLAVE_RX_BUF_LEN 16
10+
#define I2C_SLAVE_RX_BUF_LEN 128

0 commit comments

Comments
 (0)