Hello everyone,
I'm experiencing some issues when using I2C with the F28379D as a slave device.
- I have set the I2C slave address of the F28379D to
0x50
, but on the master side, the detected address is0x00
. If I try to force a write operation to0x50
, the transmission fails. - When writing to address
0x00
from the master, there is a data delay issue on the F28379D slave side. For example:- The first transmitted value is
10
, but the slave does not update. - The second transmitted value is
11
, but the slave only updates to the first value (10). - The third transmitted value is
12
, but the slave updates to11
, and so on.
- The first transmitted value is
I have tested the same setup with other slave devices, and these issues did not occur.
I would appreciate any help in troubleshooting this problem. Thank you!
For reference, I am using the example code i2c_ex5_master_slave_interrupt.c
as my slave-side implementation. Here is the code:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <i2cLib_FIFO_master_slave_interrupt.h>
#include "device.h"
#include "driverlib.h"
#include "board.h"
#define I2CA_ADDRESS 0x30
#define I2CB_ADDRESS 0x50
//
// Globals
//
uint16_t status = 0;
uint16_t status_intoisr = 0;
uint16_t status_interrupt = 0;
uint16_t slave = 0;
uint16_t slavefifo = 0;
uint16_t rData_size = 0;
uint16_t fifoDepth = 0;
uint16_t tempData[MAX_BUFFER_SIZE];