CE95314 PSoC 3, PSoC 4, and PSoC 5LP EZI2C.pdf

CE95314 - PSoC® 3, PSoC 4, and PSoC 5LP
EZI2C
Objective
2
These code examples demonstrate the usage of the EZI2C slave and I C master Components in PSoC 3, PSoC 4, and PSoC
5LP.
Overview
2
2
These code examples show how two I C Components – EZI2C slave and I C master – communicate with each other.
Normally, these Components would be on separate devices, but for this example project, they are on the same PSoC chip. An
off-chip connection is made between them.
There are two examples:

For PSoC 3 and PSoC 5LP, running on a kit with two buttons and a character LCD, such as the Cypress CY8CKIT-030
and CY8CKIT-050 kits.

For PSoC 4200, running on the Cypress CY8CKIT-042 kit, which has one button and an RGB LED.
Each I2C Component maintains its own data buffer. Note that an EZI2C buffer can be defined such that only the first N bytes
are writeable by the master and the remaining bytes are read-only. This functionality is demonstrated in this example.
Requirements
Tool: PSoC Creator 3.3 CP1.
Programming Language: C (DP8051 Keil 9.51, ARM GCC 4.7.3, and ARM MDK compilers)
Associated Parts: All PSoC 3, PSoC 4200, and PSoC 5LP parts
Related Hardware: CY8CKIT-030, CY8CKIT-050, CY8CKIT-042, CY8CKIT-001
www.cypress.com
Document No. 001-95314 Rev.*A
1
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Design
Figure 1 shows the code example design for PSoC 3 and PSoC 5LP, and Figure 2 shows the example design for PSoC 4200.
Figure 1. EZI2C Code Example for PSoC 3 and PSoC 5LP
Figure 2. EZI2C Code Example for PSoC 4200 on the CY8CKIT-042
www.cypress.com
Document No. 001-95314 Rev.*A
2
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Both code examples feature the following:



2
2
An I C master communicating with an EZI2C slave over an off-chip I C bus connection

For the PSoC 3 and PSoC 5LP design, the EZI2C uses one of the fixed I C blocks, and the master is configured in the
universal digital blocks (UDBs)

For PSoC 4200, both Components use a PSoC 4 serial communication block (SCB), in I C or EZI2C mode
2
2
Button press detect subsystem

The input Pin Component (labeled ‘SW’) is configured for Resistive Pull Up. The button shorts the pin to ground,
resulting in a logic ‘0’ when the button is pressed and a logic ‘1’ when it is released.


The CPU reads the button through a Status Register Component, which is connected to a Debouncer output
The Debouncer has a negative edge detect function, and the Status Register is configured for Sticky mode. This
causes the CPU to read a ‘1’ when a button is pressed, and a ‘0’ at all other times.
2
A display Component (Character LCD or Pins driving LEDs) to show that the I C Components are communicating.
Code Design
2
In both code examples, the main loop first executes the EZI2C slave side code, followed by the I C master code:
for(;;)
{
/* Do slave side tasks, with the EZI2C Component */
. . .
/* Do master side tasks, with the I2C Master Component */
. . .
}
The master and slave side each maintain their own data buffers. With EZI2C, the first N bytes of the buffer can be written by
the master; the remaining bytes are read-only. The master side buffer includes an additional byte ‘writeOffset’ to indicate the
location in the write area to start writing. All buffers are packed to ensure reading and writing the correct bytes.
PSoC 3 and PSoC 5LP Design
The PSoC 3 and PSoC 5LP example uses two buttons, which are available on the CY8CKIT-030, CY8CKIT-050, and
CY8CKIT-001. Button presses do the following:


If the button SW2 (on kit CY8CKIT-030 and CY8CKIT-050) is pressed, the EZI2C side updates its data buffer.
2
If the button SW3 is pressed, the I C master side does the following:



Reads the EZI2C buffer to its data buffer
Updates the write portion of its data buffer
Writes the write portion of its data buffer to the EZI2C
The Character LCD Component displays the contents of both data buffers.
PSoC 4200 Design
The PSoC 4200 example uses the single button, SW2, on the CY8CKIT-042 kit. The master and slave sides do the following:

The EZI2C side runs a code-based counter; the reload value is in its data buffer. Each time the counter rolls over, a
control byte for the LEDs is updated.

The I C master side does the following:

2


Reads the EZI2C buffer to its data buffer

Updates the LEDs based on the control byte in its buffer
If SW2 is pressed:
- Updates the counter reload value in the write portion of its data buffer
- Writes the write portion of its data buffer to the EZI2C
The LEDs change color continually; pressing the button changes the update rate.
www.cypress.com
Document No. 001-95314 Rev.*A
3
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Design Considerations

Off-chip connections between the I C master and slave pins form an I C bus. External I C bus pull-up resistors may need
to be installed, depending on the kit that is used as well as the Pin Component configuration.

These code examples can be modified to:

2


2
2
Run on other kits, such as the CY8CKIT-049 or the CY8CKIT-001.
Communicate between two or more kits.
The PSoC Creator installation includes a program called Bridge Control Panel (BCP). BCP enables communications
between your PC and PSoC target devices, over I2C. You can use this link to control the PSoC and read and display data
from the PSoC. For more information, click the Help menu item in the BCP window.
Hardware Setup
For basic kit board setup, see the corresponding Kit Guide.
2
To form the off-chip I C bus, connect the master and slave SCL and SDA pins on the kit board:

For the PSoC 3 and PSoC 5LP example, connect P12[0] to P12[2], and P12[1] to P12[3]. This applies to all supported
kits.


2
To avoid having to add external I C bus pull-up resistors, configure the Pin Components as Resistive Pull Up instead
2
of the default Open Drain, Drives Low. This technique does not meet formal I C specifications but does work in most
cases. PSoC Creator emits warnings at project build time; the warnings can be ignored.
For the PSoC 4200 example, using the CY8CKIT-042:



Connect P0[4] to P4[0], by wiring kit connector J4 pin 1 to J3 pin 10.
Connect P0[5] to P4[1], by wiring kit connector J4 pin 2 to J3 pin 9.
2
Note that on the CY8CKIT-042 board, P4[0] and P4[1] have I C bus pull-up resistors installed.
Software Setup
No special software setup is required. All supported compilers can be used with any optimization.
At the PSoC Creator project’s default CPU clock speed (48 MHz for PSoC 3 and PSoC 5LP, 24 MHz for PSoC 4200), the CPU
has enough cycles to support the examples.
Components
Table 1 and Table 2 list the PSoC Creator Components used in each of the examples, as well as the hardware resources used
by each Component.
Table 1. List of PSoC Creator Components for PSoC 3 and PSoC 5LP Example
Component
www.cypress.com
Placement
EZI2C Slave
PSoC 3 or PSoC 5LP fixed I2C block, 1 interrupt
I2C Master (UDB)
~2 UDBs, 1 interrupt, 1 clock divider
Debouncer, 2 inputs
UDB (10 macrocells)
Clock
1 clock divider
Status Register, 2 input
UDB (1 status register)
Character LCD
7 pins
Pin
4 pins for the two I2C Components,
2 pins for the buttons, 7 pins for the Character LCD
Document No. 001-95314 Rev.*A
4
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Table 2. List of PSoC Creator Components for PSoC 4200 Example
Component
Placement
EZI2C Slave (SCB mode)
PSoC 4200 SCB, 2 pins, 1 interrupt, 1 clock divider
I2C (SCB mode)
PSoC 4200 SCB, 2 pins, 1 interrupt, 1 clock divider
Debouncer, 1 input
UDB (5 macrocells)
Clock
1 clock divider
Status Register, 1 input
UDB (1 status register)
Control Register, 3 outputs
UDB (1 control register)
Pin
4 pins for the two I2C Components,
1 pin for the button, 3 pins for the RGB LED
Parameter Settings
Table 3 and Table 4 list the parameter settings for each of the PSoC Creator Components used in each of the examples. Only
the parameters that vary from the default values are listed.
Table 3. List of PSoC Creator Component Parameter Settings for PSoC 3 and PSoC 5LP Example
Component
Non-default Parameter Settings
EZI2C Slave
None
I2C Master (UDB)
UDB Clock Source = Internal Clock
Debouncer, 2 inputs
Signal width (bits) = 2, only Negative edge is checked
Clock
Frequency = 50 Hz
Status Register, 2 input
Inputs = 2, Display as bus is checked, Mode = Sticky for all bits
Character LCD
None
Pin
I2C Component pins: Drive mode = Resistive Pull Up
Button pins: Number of Pins = 2, Drive mode = Resistive Pull Up
Table 4. List of PSoC Creator Component Parameter Settings for PSoC 4200 Example
Component
www.cypress.com
Non-default Parameter Settings
EZI2C Slave (SCB mode)
None
I2C (SCB mode)
Mode = Master
Debouncer, 1 input
Only Negative edge is checked
Clock
Frequency = 50 Hz
Status Register, 1 input
Inputs = 1, Mode = Sticky for all bits
Control Register, 3 outputs
Outputs = 3
Pin
Button pin: Drive mode = Resistive Pull Up
Document No. 001-95314 Rev.*A
5
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Design-Wide Resources
Figure 3 and Figure 4 show the pin assignments for each of the examples. No other design-wide resources need to be
changed from their default setting.
Figure 3. Pin Assignments for PSoC 3 and PSoC 5LP Example
Figure 4. Pin Assignments for PSoC 4200 Example
Operation
After building and installing the code example in the appropriate kit, test the code example by doing the following:
For the PSoC 3 and PSoC 5LP example:


Reset the PSoC. For example, press SW1 on the CY8CKIT-030 or CY8CKIT-050. Observe the character LCD.


2
Confirm that the bottom row is blank, indicating that the I C master has not yet read the EZI2C buffer.
Press the button SW2 (on the CY8CKIT-030 or CY8CKIT-050).


Confirm that the top row displays “EZ: 00 00 00 00”. That is, the EZI2C buffer is all zeros.
Confirm that the bytes in the EZI2C buffer are incremented, by different values, on each button press.
Press the button SW3 (on the CY8CKIT-030 or CY8CKIT-050).

Confirm that the bottom row displays “MST: ” followed by the contents of the EZI2C buffer. Confirm also that the first
2
two bytes are decremented by different values. That is, the I C master has read the EZI2C buffer and decremented the
read/write bytes of its buffer.
www.cypress.com
Document No. 001-95314 Rev.*A
6
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C

Confirm that the top row displays the first two bytes in the EZI2C buffer as the same as those in the master buffer. This
indicates a successful write of the EZI2C data by the master.
For the PSoC 4200 example:


Reset the PSoC by pressing the button SW1 on the CY8CKIT-042.

Press the button SW2 on the CY8CKIT-042. Confirm that the RGB LEDs change color at a different rate. This indicates a
successful write of the EZI2C data by the master. The EZI2C data has a counter reload value that controls the rate of
change of the LED color.
Confirm that the RGB LED changes color at a high rate. This indicates a successful read of the EZI2C data by the master.
The EZI2C data has LED control bits that are continually changed by the EZI2C side code.
Upgrade Information
N/A
Related Documents
Table 5 lists all relevant application notes, code examples, knowledge base articles, device datasheets, and Component
datasheets.
Table 5. Related Documents
Application Notes
AN60317
PSoC 3 and PSoC 5LP I2C Bootloader
Shows how to build an I2C-based bootloader for PSoC 3 and PSoC 5LP
AN86526
PSoC 4 I2C Bootloader
Shows how to build an I2C-based bootloader for PSoC 4 family devices
AN50987
Getting Started with I2C in PSoC 1
Discusses the I2C protocol, and how PSoC 1 devices handle I2C
communications
AN74875
Designing with Cypress Serial I2C nvSRAM
Provides design guidelines and example circuits for the Cypress I2C
nvSRAM device
Code Examples
DelSig_I2CM
Provides an 8-channel multiplexed Delta Sigma ADC with sequencing logic. The analog inputs to the ADC
are converted to digital sequentially and then made available through an I 2C Master interface.
DelSig_I2CS
Provides an 8-channel multiplexed Delta Sigma ADC with sequencing logic. The analog inputs to the ADC
are converted to digital sequentially and then made available through an I2C Slave interface.
I2C_LCD_Example
Demonstrates the functionality of the I2C LCD Component
SCB_EzI2cCommSlave
Demonstrates the basic operation of the EZI2C Slave (SCB mode) Component
SCB_I2cCommMaster
Demonstrates the basic operation of the I2C Master (SCB mode) Component
SCB_I2cCommSlave
Demonstrates the basic operation of the I2C Slave (SCB mode) Component
Knowledge Base Articles
I2C pins in PSoC 3 and PSoC 5
Per PSoC 3 and PSoC 5 pinouts in the datasheet, there are only two sets of I2C
pins. Are these the only pins which can be used for I2C or is there a way to use
some other pins for I2C?
Assigning I2C SDA and SCL pins to any GPIO in
PSoC 3 and PSoC 5LP
When I try to route the I2C SCL and SDA pins to any GPIO, I get the following
error: IO "I2C_SCL(0)" cannot be placed into "PX[x]" because the pin does not
support the features required by the IO. (App=cydsfit) What is the reason for this
error and how can this be fixed?
Wiring a bus to I2C in PSoC Creator
How can I connect my I2C Component to a digital pin through a bus?
Multiple Slave Addresses with EZI2C
Can I have three slave address using an EZI2C Slave Component?
EZI2C does not work with address greater than
63
Why does the EZI2C User Module not work when the I2C address is greater than
63?
MiniProg3 connections for bootloading over I2C
How should I connect the MiniProg3 to a DVK board, to bootload over I2C?
www.cypress.com
Document No. 001-95314 Rev.*A
7
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
BootLdrI2C - In Master mode
Is it possible to configure the I2C bootloader in Master mode and read the firmware
from an external source?
Choosing an I2C slave in PSoC1
Under what application needs should we use I2CHW slave and under what needs
should we use EzI2Cs slave?
Dynamic I2C Pin Selection in PSoC 1
Can you dynamically change the I2C pin (from P1[7/5] to P1[1/0] or vice versa)?
Glitch on the PSoC 1 I2C Lines During Power Up
Why is there a glich on the I2C lines during Power On or Reset? How can this be
removed?
Operating EZI2C in PSoC at lower than 50KHz
frequency
I want to operate PSoC EZI2C as a slave in I2C communication. The I2C Master
clock frequency is 40KHz, but in PSoC Designer the options available for CLK are
50KHz, 100KHz and 400KHz. Can PSoC respond to 40KHz ?
Drive Mode Registers modification by I2Cm User
Module
Why does the I2Cm User Module modify the drive mode registers of the I2C pins,
rather than changing the data register?
Clock Stretching and I2C speed
How does the I2C clock speed affect the duration of clock stretching introduced by
the I2C slave?
Series resistors on I2C lines
Why are resistors of 330 ohm required on I2C lines?
PSoC Creator Component Datasheets
EZI2C Slave
Implements an I2C register-based slave device
I2C Master/Multi-Master/Slave
Supports I2C Slave, Master, and Multi-Master configurations
PSoC 4 Serial Communication Block (SCB)
Supports a PSoC 4 multifunction hardware block that implements I2C, SPI, UART, and
EZI2C communications
Debouncer
Takes an input signal from a bouncing switch contact and generates a clean output for
digital circuits
Control Register
Allows firmware to generate output digital signals
Status Register
Allows firmware to read digital signals
Character LCD (CharLCD)
Contains a set of library routines that enable simple use of one, two, or four-line LCD
modules that follow the Hitachi 44780 standard 4-bit interface
Clock
Creates local clocks, and allows connection to system and design-wide clocks
Pins
Controls interface with physical I/O port pins
External Library
Provides a way to include components external to the PSoC device – resistors,
capacitors, transistors, inductors, switches, etc. – on a PSoC Creator schematic.
Device Documentation
PSoC 3 Datasheets
PSoC 3 Technical Reference Manuals
PSoC 4 Datasheets
PSoC 4 Technical Reference Manuals
PSoC 5LP Datasheets
PSoC 5LP Technical Reference Manuals
Development Kit (DVK) Documentation
PSoC 3 and PSoC 5LP Kits
PSoC 4 Kits
www.cypress.com
Document No. 001-95314 Rev.*A
8
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Document History
®
Document Title: CE95314 - PSoC 3, PSoC 4, and PSoC 5LP EZI2C
Document Number: 001-95314
Orig. of
Change
Submission
Date
Revision
ECN
**
4622360
MKEA
01/15/2015
New code example
*A
5081848
TDU
01/13/2016
Minor Grammatical Fixes
www.cypress.com
Description of Change
Document No. 001-95314 Rev.*A
9
PSoC® 3, PSoC 4, and PSoC 5LP EZI2C
Worldwide Sales and Design Support
Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find
the office closest to you, visit us at Cypress Locations.
PSoC® Solutions
Products
Automotive
cypress.com/go/automotive
psoc.cypress.com/solutions
Clocks & Buffers
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
Interface
cypress.com/go/interface
Lighting & Power Control
cypress.com/go/powerpsoc
Memory
cypress.com/go/memory
PSoC
cypress.com/go/psoc
Touch Sensing
cypress.com/go/touch
USB Controllers
cypress.com/go/usb
Wireless/RF
cypress.com/go/wireless
Cypress Developer Community
Community | Forums | Blogs | Video | Training
Technical Support
cypress.com/go/support
PSoC is a registered trademark and PSoC Creator is a trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks
referenced herein are the property of their respective owners.
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone
Fax
Website
: 408-943-2600
: 408-943-4730
: www.cypress.com
© Cypress Semiconductor Corporation, 2015-2016. The information contained herein is subject to change without notice. Cypress Semiconductor
Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any
license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or
safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as
critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The
inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies
Cypress against all charges.
This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide
patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a
personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative
works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress
integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source
Code except as specified above is prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the
right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or
use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a
malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems
application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
www.cypress.com
Document No. 001-95314 Rev.*A
10