
EZI2C Slave
Doc. No. 001-89660 Rev*A
Cypress
CyEZI2C Slave V 1.90 ZH 001-89660 0A V PSoC®CreatorTM
EZI2C
1.90
NXP® I2C I2C EEPROM SDA SCL I2C 50/100/400/1000 kbps API /
EZI2CI2CNXP I2CI2C [ 1 ] I2C EZI2C1000 kbps EZI2C I2C ISR EZI2C_Start() API
1 I2C NXP I2C I/O VOL/IOLI/O I2C I/O "" I/O
· 198 Champion Court · San JoseCA 95134-1709 · 408-943-2600
001-89660 *A
January 15, 2015
EZI2C
PSoC®CreatorTM
EZI2C
I2C I2C EZI2C I2C I2C EZI2C_SetBuffer1() EZI2C_SetBuffer2()
/
EZI2C
sda -- /
SDA I2C
SCL -- /
SCL I2C NAK/ACK
EZI2C EZI2C EZI2C SIO
2/22
001-89660 *A
PSoC®CreatorTM
Component Parameters
EZI2C Configure
EZI2C
EZI2C
Data rate
I2C 1000 kbps 50100400 1000 kbps
Number of addresses
I2C Enable wakeup from Sleep Mode
Primary slave address
I2C 8 "0x" 7 /
Secondary slave address
I2C 9 "0x" Number of addresses 2
001-89660 *A
3/22
EZI2C
PSoC®CreatorTM
7 /
Sub-address Size
8 16 8 0 255 16 I2C 65,536
Pin connections
SDA SCL Enable wakeup from Sleep mode Number of addresses I2C AnyI2C0 I2C1 Any Any I/OGPIO
Enable wakeup from Sleep Mode SDA
SCL Any
Enable wakeup from Sleep Mode
I2C0P12[4]P12[5] I2C1P12[0]P12[1] I2C
Enable wakeup from Sleep Mode
I2C SDA SCL SIO I2C0 I2C1 Enable wakeup from Sleep mode PSoC 3 PSoC 5LP
4/22
001-89660 *A
PSoC®CreatorTM
EZI2C
API
API
PSoC Creator "EZI2C_1" "EZI2C"
EZI2C_Start() EZI2C_Stop() EZI2C_EnableInt() EZI2C_DisableInt() EZI2C_SetAddress1() EZI2C_GetAddress1() EZI2C_SetBuffer1() EZI2C_GetActivity() EZI2C_Sleep() EZI2C_Wakeup() EZI2C_Init() EZI2C_Enable() EZI2C_SaveConfig() EZI2C_RestoreConfig()
I2C I2C I2C EZI2C_Stop() API I2C I2C I2C I2CI2C I2CI2C I2C EZI2C I2C
001-89660 *A
5/22
EZI2C
PSoC®CreatorTM
void EZI2C_Start(void)
EZI2C_Start()initVarEZI2C_Init() EZI2C_Enable()I2C
EZI2C_Start()EZI2C_Enable()EZI2C_Enable()EZI2C_EnableInt() I2C
void EZI2C_Stop(void)
I2CI2C
void EZI2C_EnableInt(void)
I2CEZI2C_Start() API
void EZI2C_DisableInt(void)
I2CStop()
I2CI2CI2C
6/22
001-89660 *A
PSoC®CreatorTM
EZI2C
void EZI2C_SetAddress1(uint8 address)
I2C0127
address01277/
uint8 EZI2C_GetAddress1(void)
I2C
SetAddress1I2CI2C
void EZI2C_SetBuffer1(uint16 bufSizeuint16 rwBoundryvolatile uint8 * dataPtr)
I2C
bufSize
rwBoundry rwBoundry
dataPtr
EZI2C_Start()
001-89660 *A
7/22
EZI2C
PSoC®CreatorTM
uint8 EZI2C_GetActivity(void)
I2C
I2C Stop"BUSY"
I2C
EZI2C_STATUS_READ1
EZI2C_STATUS_WRITE1
EZI2C_STATUS_READ2
EZI2C_STATUS_WRITE2
EZI2C_STATUS_BUSY
""
EZI2C_STATUS_ERR
I2C
void EZI2C_Sleep(void)
Enable wakeup from Sleep Mode APIEZI2C_Sleep() APIEZI2C_Stop() EZI2C_SaveConfig()
CyPmSleep()CyPmHibernate()EZI2C_Sleep() "PSoC Creator"
8/22
001-89660 *A
PSoC®CreatorTM
EZI2C
void EZI2C_Wakeup(void)
EZI2C_Sleep() API EZI2C_Wakeup() _RestoreConfig()EZI2C_Sleep() EZI2C_Wakeup()
EZI2C_SaveConfig()EZI2C_Sleep()
void EZI2C_Init(void)
Configure EZI2C_Init() EZI2C_Start()API
:
Configure
void EZI2C_Enable(void)
EZI2C_Enable()EZI2C_Start() API EZI2C_EnableInt()I2C
void EZI2C_SaveConfig(void)
"Configure"APIEZI2C_Sleep()
001-89660 *A
9/22
EZI2C
PSoC®CreatorTM
void EZI2C_RestoreConfig(void)
EZI2C_Sleep()
EZI2C_Sleep()EZI2C_SaveConfig()
API
I2C
EZI2C_SetAddress2() EZI2C_GetAddress2() EZI2C_SetBuffer2()
I2C I2C I2C
void EZI2C_SetAddress2(uint8 address)
I2C0127 I2C
address01277/
uint8 EZI2C_GetAddress2(void)
I2CI2C
SetAddress2I2CI2C
10/22
001-89660 *A
PSoC®CreatorTM
EZI2C
void EZI2C_SetBuffer2(uint16 bufSize, uint16 rwBoundry, volatile uint8 * dataPtr)
I2C I2CI2C
bufSizeI2C
rwBoundry I2C / rwBoundry
dataPtrI2C
EZI2C_Start()
EZI2C_initVar
EZI2C_dataPtrS1 EZI2C_rwOffsetS1 EZI2C_rwIndexS1 EZI2C_wrProtectS1 EZI2C_bufSizeS1 EZI2C_dataPtrS2 EZI2C_rwOffsetS2 EZI2C_rwIndexS2 EZI2C_wrProtectS2 EZI2C_bufSizeS2 EZI2C_curState EZI2C_curStatus
EZI2C0EZI2C_Start()1 EZI2C_Start() EZI2C_Start()0 EZI2C_Init()EZI2C_Enable()EZI2C I2C I2C I2C I2C I2C
001-89660 *A
11/22
EZI2C
PSoC®CreatorTM
Find Example ProjectPSoC Creator "Start Page" File Filter Options
PSoC Creator ""
MISRA
MISRA-C:2004
-- PSoC Creator --
"MISRA " MISRA EZI2C
[2]
17.4 R
19.7 A
MISRA
API
API API
2 /
12/22
001-89660 *A
PSoC®CreatorTM
EZI2C
Release Size
PSoC 3Keil_PK51
SRAM
1265
21
1751
37
PSoC 5LPGCC
SRAM
1412
25
1644
43
I2C I2C RAMEEPROM EEPROM RAM
I2C ISR I2C
I2C I2C EEPROMEZI2C I2C I2C I2C
1
#define BUFFER_SIZE #define BUFFER_RW_AREA_SIZE
(0x0Au) (0x04u)
uint8 ezi2cBuffer[BUFFER_SIZE];
EZI2C_SetBuffer1(BUFFER_SIZE, BUFFER_RW_AREA_SIZE, ezi2cBuffer);
001-89660 *A
13/22
EZI2C
1. I2C EZI2C
RAM
0x00FF
Access type
Read Only Read/Write
Exposed Buffer
ezi2cBuffer[9] ezi2cBuffer[8] ezi2cBuffer[7] ezi2cBuffer[6] ezi2cBuffer[5] ezi2cBuffer[4] ezi2cBuffer[3] ezi2cBuffer[2] ezi2cBuffer[1] ezi2cBuffer[0]
0x0016 0x000D
PSoC®CreatorTM
0x0000
/
EZI2C_SetBuffer1(BUFFER_SIZE, BUFFER_SIZE, ezi2cBuffer);
EZI2C I2C
Cortex-M3 "packed"
struct {
uint8 status; uint8 data0; uint32 data1; } __attribute__ ((packed)) ezi2cBuffer;
SCB_EzI2CSetBuffer1(sizeof(ezi2cBuffer),
sizeof(ezi2cBuffer),(uint8
*)
&ezi2cBuffer);
14/22
001-89660 *A
PSoC®CreatorTM
EZI2C
CY_GET_REGXX()/CY_SET_REGXX()XX 16/24/32 ""
I2C
uint16 ezi2cVariable1; CY_SET_REG16(&ezi2cVariable1, 0xABCD); EZI2C_SetBuffer1(2u, 2u, (uint8 *) (&ezi2cVariable1));
EZI2C I2C Sub-address size 8 256 16 65536 8 Sub_Address_Size
2. 8 16
MSB
LSB
OFFSET DATA PTR
MSB
LSB MSB
LSB
OFFSET DATA PTR
= 16
/
001-89660 *A
15/22
EZI2C
PSoC®CreatorTM
3. x I2C
S SLAVE ADDR R/W A DATA PTR A
DATA[n]
A DATA[n+1] A DATA[n+x] A P
A = SDA LOW A = SDA HIGH S = START P = STOP
4 4
I2C EZI2C_SetBuffer1() EZI2C_SetBuffer2() RAM RAM
4 8
4.
S
SLAVE ADDR R/W A
DATA PTR
AP
5 8
5. I2C x
S
SLAVE ADDR R/W A
DATA[n]
A
DATA[n+1]
A
DATA[x]
AP
EZI2C API EZI2C_Start()
Philips I2C I2C
16/22
001-89660 *A
PSoC®CreatorTM
EZI2C
2 LSBMSB LSB MSB
EZI2C_GetActivity()
I2C SCL
CyPmSaveClocks() CyPmRestoreClocks() I2C
EZI2C_Sleep() EZI2C EZI2C EZI2C EZI2C_Wakeup() EZI2C EZI2C SCL EZI2C_Wakeup()
Enable wake up from Sleep mode
/* Prepares EZI2C to wake up from Sleep mode */ EZI2C_Sleep();
/* Switches to the Sleep mode */ CyPmSaveClocks(); CyPmSleep(PM_SLEEP_TIME_NONE, PM_SLEEP_SRC_I2C); CyPmRestoreClocks();
/* Prepares EZI2C to work in Active mode */ EZI2C_Wakeup();
001-89660 *A
17/22
EZI2C
PSoC®CreatorTM
6 I2C RP 3 mA VOLmax = 0.4V 5 V 1.5 k RP 150 pF 5 V 6 k Philips www.philips.com I2C
6. I2C
+VDD
Rp
Rp
SDA SCL
1
2
I2C Philips I2C Philips I2C I2C
I2C
18/22
001-89660 *A
PSoC®CreatorTM
EZI2C
40 °C TA 85 °C TJ 100 °C 1.71 V 5.5 V
IDD
100 kbps 400 kbps
250 A
260 A
30
A
1
Mbps
ID
197653 v1.90
Stop() APII2C
Stop() API
I2C
EZI2C.c Stop()
64 -- c:\Program Files (x86)\Cypress\PSoC Creator\3.1\PSoC
Creator\psoc\content\CyComponentLibrary\CyComponentLibrary.cylib\EZI2C_v1_90\API\
32 -- c:\Program Files\Cypress\PSoC Creator\3.1\PSoC
Creator\psoc\content\CyComponentLibrary\CyComponentLibrary.cylib\EZI2C_v1_90\API\ Stop()
1. i
uint8 i;
001-89660 *A
19/22
EZI2C
PSoC®CreatorTM
2.
/* Reset fixed-function block */ `$INSTANCE_NAME`_CFG_REG &= ((uint8) ~`$INSTANCE_NAME`_CFG_EN_SLAVE); `$INSTANCE_NAME`_CFG_REG |= `$INSTANCE_NAME`_CFG_EN_SLAVE;
i = 255u; do {
`$INSTANCE_NAME`_ADDR_REG = `$INSTANCE_NAME`_backup.adr; i--;
} while ((`$INSTANCE_NAME`_ADDR_REG != `$INSTANCE_NAME`_backup.adr) &&
(i != 0u));
1.90.b 1.90.a 1.90
1.80
1.70.a 1.70
/
ID 197653
API
"MISRA"
EZI2C_bufSizeS1 EZI2C_wrProtectS1 8256 EZI2C_bufSizeS2 EZI2C_wrProtectS2 uint8uint16
EZI2C_SlaveSetSleepMode() EZI2C_SlaveSetWakeMode()
EZI2C_Sleep() EZI2C_Wakeup()
""
MISRA
MISRA
NXP I2C
I2C PSoC 5 LPI2C
NAK
5
PSoC 5LP
20/22
001-89660 *A
PSoC®CreatorTM
EZI2C
1.61
1.60.b 1.60.a
1.60
/
Enable wakeup from Sleep Mode
PSoC 3EZI2C_Stop() EZI2C_Stop()
I2C89I2C I2C
".cyre" APIAPI PSoC 3
"Enable wakeup from Sleep mode" Enable wakeup from Sleep
"Number of mode
addresses" Number of addresses
""
I2C
235
PSoC
EZI2C_Stop() EZI2C_Start() - EZI2C_Stop() EZI2C_Start()EZI2C_Sleep() EZI2C_Enable() EZI2C_Init() EZI2C_Wakeup() EZI2C_RestoreConfig()I2C
"I2C Bus Speed:"I2C I2CI2C/EZI2C "Data Rate" """ "
" I2C " ""
"" ""
"EZ I2C" "EZI2C"
ISR
001-89660 *A
21/22
EZI2C
PSoC®CreatorTM
1.50.a 1.50
1.20.a 1.20
/
1 Mbps I2C1 Mbps
Keil
KeilPSoC 3
Sleep/Wakeup/ Init/Enable/API
XML
PSoC Creator
PSoC 3
PSoC 3 ES2
EZI2C I2C 4
Microsoft Windows 7
Windows 7
"0x"
/
Configure
©2015
PSoC®PSoC Creator Programmable System-on-Chip
/ /
22/22
001-89660 *A
Microsoft Office Word 2007 Microsoft Office Word 2007