EZI2C Slave

Doc. No. 001-89660 Rev*A

Cypress

PDF preview unavailable. Download the PDF instead.

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