CYW954907AEVAL1F Evaluation Kit User Guide PDF
CYW954907AEVAL1F Evaluation Kit User Guide PDF
CYW954907AEVAL1F Evaluation Kit User Guide PDF
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
www.cypress.com
Copyrights
Copyrights
© Cypress Semiconductor Corporation, 2018. This document is the property of Cypress Semiconductor Corporation and its
subsidiaries, including Spansion LLC (“Cypress”). This document, including any software or firmware included or referenced
in this document (“Software”), is owned by Cypress under the intellectual property laws and treaties of the United States and
other countries worldwide. Cypress reserves all rights under such laws and treaties and does not, except as specifically
stated in this paragraph, grant any license under its patents, copyrights, trademarks, or other intellectual property rights. If the
Software is not accompanied by a license agreement and you do not otherwise have a written agreement with Cypress
governing the use of the Software, then Cypress hereby grants you a personal, non-exclusive, nontransferable license
(without the right to sublicense) (1) under its copyright rights in the Software (a) for Software provided in source code form, to
modify and reproduce the Software solely for use with Cypress hardware products, only internally within your organization,
and (b) to distribute the Software in binary code form externally to end users (either directly or indirectly through resellers and
distributors), solely for use on Cypress hardware product units, and (2) under those claims of Cypress’s patents that are
infringed by the Software (as provided by Cypress, unmodified) to make, use, distribute, and import the Software solely for
use with Cypress hardware products. Any other use, reproduction, modification, translation, or compilation of the Software is
prohibited.
TO THE EXTENT PERMITTED BY APPLICABLE LAW, CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, WITH REGARD TO THIS DOCUMENT OR ANY SOFTWARE OR ACCOMPANYING HARDWARE, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. To the extent permitted by applicable law, Cypress reserves the right to make changes to this document without
further notice. Cypress does not assume any liability arising out of the application or use of any product or circuit described in
this document. Any information provided in this document, including any sample design information or programming code, is
provided only for reference purposes. It is the responsibility of the user of this document to properly design, program, and test
the functionality and safety of any application made of this information and any resulting product. Cypress products are not
designed, intended, or authorized for use as critical components in systems designed or intended for the operation of
weapons, weapons systems, nuclear installations, life-support devices or systems, other medical devices or systems
(including resuscitation equipment and surgical implants), pollution control or hazardous substances management, or other
uses where the failure of the device or system could cause personal injury, death, or property damage (“Unintended Uses”).
A critical component is any component of a device or system whose failure to perform can be reasonably expected to cause
the failure of the device or system, or to affect its safety or effectiveness. Cypress is not liable, in whole or in part, and you
shall and hereby do release Cypress from any claim, damage, or other liability arising from or related to all Unintended Uses
of Cypress products. You shall indemnify and hold Cypress harmless from and against all claims, costs, damages, and other
liabilities, including claims for personal injury or death, arising from or related to any Unintended Uses of Cypress products.
Cypress, the Cypress logo, Spansion, the Spansion logo, and combinations thereof, WICED, PSoC, CapSense, EZ-USB, F-
RAM, and Traveo are trademarks or registered trademarks of Cypress in the United States and other countries. For a more
complete list of Cypress trademarks, visit cypress.com. Other names and brands may be claimed as property of their respec-
tive owners.
1. Introduction 6
1.1 CYW954907AEVAL1F EVK Contents .........................................................................6
1.2 CYW954907AEVAL1F Board Details ..........................................................................8
1.3 WICED Studio Development System Overview ........................................................10
1.4 WICED Studio Code Examples .................................................................................11
1.5 Kit Code Examples ....................................................................................................12
1.6 Getting Started...........................................................................................................12
1.7 IoT Resources and Technical Support ......................................................................13
1.8 Additional Learning Resources..................................................................................13
1.9 Document Conventions .............................................................................................13
1.10 Acronyms...................................................................................................................14
2. Software Installation 15
2.1 Before You Begin.......................................................................................................15
2.2 Install Software ..........................................................................................................15
3. Kit Operation 18
3.1 Theory of Operation...................................................................................................18
3.2 On-board programmer/Debugger and Serial Interface Chip......................................18
3.3 CYW954907AEVAL1F Kit Connection ......................................................................19
3.3.1 Verifying Driver Installation.............................................................................19
3.3.2 Troubleshooting..............................................................................................20
3.3.3 External Power Supply..................................................................................20
3.4 Building, Programming, and Debugging CYW954907AEVAL1F EVK.......................21
3.4.1 Building and Programming a Project for CYW954907AEVAL1F
in WICED Studio IDE .....................................................................................21
3.4.2 Troubleshooting..............................................................................................24
3.4.3 Debugging a Project using Breakpoints .........................................................25
4. Hardware 29
4.1 Bootstrap ...................................................................................................................29
4.2 User Switches............................................................................................................30
4.3 LED............................................................................................................................31
4.4 Reset Control.............................................................................................................32
4.5 Ethernet .....................................................................................................................33
4.6 Micro SD Connector/Slot ...........................................................................................35
4.7 JTAG Connector ........................................................................................................36
4.7.1 On-board Programmer/Debugger and Serial Interface Chip..........................36
4.7.2 External JTAG ................................................................................................36
4.8 Connectors ................................................................................................................38
4.8.1 WICED Header ..............................................................................................38
4.8.2 Arduino-Compatible Headers.........................................................................40
5. Code Examples 45
5.1 Using Code Examples ...............................................................................................45
5.2 GPIO..........................................................................................................................45
5.2.1 Project Description .........................................................................................45
5.2.2 Hardware Connections...................................................................................45
5.2.3 Verify Output ..................................................................................................46
5.3 Config_join_ping ........................................................................................................46
5.3.1 Project Description .........................................................................................46
5.3.2 Hardware Connections...................................................................................46
5.3.3 Flow Chart......................................................................................................47
5.3.4 Verify Output ..................................................................................................48
5.4 ADC_measure ...........................................................................................................51
5.4.1 5.4.1 Project Description ...............................................................................51
5.4.2 Hardware Connections...................................................................................52
5.4.3 Flow Chart......................................................................................................53
5.4.4 Access Point Credentials ...............................................................................54
5.4.5 Verify Output ..................................................................................................54
5.5 Publish_subscribe_aws .............................................................................................55
5.5.1 Project Description .........................................................................................55
5.5.2 Hardware Connections...................................................................................56
5.5.3 Flow Chart......................................................................................................56
5.5.4 Verify Output ..................................................................................................57
Revision History 67
The CYW954907AEVAL1F EVK is intended for use as a development platform for hardware or soft-
ware in a laboratory environment. The board is an open-system design, which does not include a
shielded enclosure. Due to this reason, the board may cause interference with other electrical or
electronic devices in close proximity. In a domestic environment, this product may cause radio inter-
ference. In such cases, take adequate preventive measures. Also, do not use this board near any
medical equipment or RF devices.
Attaching additional wiring to this product or modifying the product operation from the factory default
may affect its performance and cause interference with other apparatus in the immediate vicinity. If
such interference is detected, suitable mitigating measures must be taken.
End-of-Life/Product Recycling
This kit has an end-of-life cycle of five years from the year of manufacturing mentioned
on the back of the box. Contact your nearest recycler for discarding the kit.
Thank you for your interest in the CYW954907AEVAL1F Evaluation Kit (EVK). The CYW954907AE-
VAL1F EVK enables customers to evaluate and develop single-chip Wi-Fi applications using
CYW54907 devices.
The CYW954907AEVAL1F EVK uses WICED Studio 6.0 (or later) to develop and debug your
CYW54907 project. CYW954907AEVAL1F EVK offers footprint-compatibility with Arduino shields. In
addition, the kit features an RJ-45 Ethernet connector, and onboard programmer/debugger and
serial bridge chip. The CYW954907AEVAL1F EVK supports only 3.3 V as the operating voltage.
WICED Studio 6.0 (or later) supports application development using a WICED development board
(CYW954907AEVAL1F). The development system is compatible with the Windows, OS X, and Linux
operating systems. This document provides instructions for utilizing peripherals, such as I2C or SPI,
in WICED sample applications using the WICED Studio Integrated Development Environment (IDE).
Note: This document applies to WICED Studio 6.0 (or later).
The CYW954907AEVAL1F EVK is available through the Cypress Online Store or through our distrib-
utors.
Inspect the contents of the kit. If you find any part missing, contact your nearest Cypress sales office
for assistance: www.cypress.com/support.
1.10 Acronyms
Table 1-2. List of Acronyms used in this Document
Acronym Definition
SPI Serial Peripheral Interface
EVK Evaluation Kit
SDK Software Development Kit
WICED Wireless Internet Connectivity for Embedded Devices
JTAG Joint Test Action Group
2 Inter-Integrated Circuit
I C
MQTT Message Queue Telemetry Transport
POR Power-on-Reset
PMU Power Management Unit
VTRIM Voltage Trimming
LPO Low Power Oscillator
GPIO General Purpose Input Output
UART Universal Asynchronous Receiver/Transmitter
AWS Amazon Web Services
IDE Integrated Development Environment
WLAN Wireless Local Area Network
This chapter describes the steps to install the software tools and packages on a PC for using the
CYW954907AEVAL1F EVK. This includes the WICED IDE in which the projects will be built and
used for programming.
2. Select two Folders, one for the IDE and the other for the SDK. The folder for the SDK contains
the Framework for developing Wi-Fi applications.
3. As a last step in installation, installer will ask to select between Wi-Fi and Bluetooth platform.
Select 43xxx_Wi-Fi as default.
This chapter introduces you to the CYW954907AEVAL1F EVK and the features that will be used as
part of Kit operation. Features such as Wi-Fi connection and programming/debugging are discussed
in this chapter. The chapter also describes the USB-UART that can be used to communicate with the
CYW54907 device on this EVK.
In Figure 3-3, the Device Manager window identifies the WICED USB Serial COM port as COMXX.
The assigned port number varies between systems. If the device displays two WICED USB Serial
Ports (WICED USB Serial port and WICED USB JTAG Port) instead of one, then follow the link men-
tioned in this post.
Figure 3-3. Verifying Device Driver Installation
3.3.2 Troubleshooting
If an error occurred during the automatic driver installation process, the driver may be manually
installed from the following directory: <WICED-SDK>\Drivers\Windows\wiced_uart.
If the CYW954907AEVAL1F EVK does not appear in the Device Manager, verify that the +3V3 LED
is turned ON and check the USB cable.
4. Enter snip.scan-CYW954907AEVAL1F download run in the Target name field and click the OK
button
Note: The list of all commands that can be provided in the Make target is listed in <WICED-SDK
installation directory>/ 43xxx_Wi-Fi/Makefile.
7. To view output messages with a terminal emulation program (such as Tera Term), follow these
steps:
a. Start the terminal emulation program.
b. You will see the following window. Click on Serial and select corresponding COM Port for your
WICED device. Then click on OK
c. In the Terminal Emulator, go to Setup -> Serial port…. Select the correct COM port and Baud
rate as follows.
Note: Exact Port number will vary with the corresponding PC port
d. Press the Reset button (see Figure 1-1) on the CYW954907AEVAL1F EVK to view the appli-
cation start-up messages.
8. The output of the Terminal Emulation program should be similar to what is shown in Figure 3-6.
Figure 3-6. Console Output
3.4.2 Troubleshooting
If a download_dct error message is displayed despite connecting the board, follow the steps out-
lined in this post.
3. Open the scan.c file from the Project Explorer window. Click on the line with WPRINT_AP-
P_INFO( ( "Waiting for scan results...\n" ) ); and press the [Ctrl +Shift+B]
keys on your keyboard. A Blue hollow circle along with a check mark appears next to the line
number, as shown in Figure 3-8.
4. From the main menu, click Run > Resume. Execution will stop at the breakpoint that you added.
To continue after hitting the breakpoint, click Resume again.
5. To disable the breakpoint, press the [Ctrl+Shift+B] keys again on the same line, or deselect the
corresponding checkbox in the Breakpoints window.
Note: If the Breakpoint window does not appear, then choose Window > Show View > Break-
points.
6. To terminate the Debugging session, click Run > Terminate, or click on the red Square icon.
Once you terminate the session, click on "C/C++" in the upper right corner to return to the C/C++
perspective.
7. If Breakpoints are created prior to starting the current Debug session, they will not be associated
with the current thread and will be indicated with a Blue circle without a check mark. To enable
the Breakpoints in the current thread, associate the properties from the Breakpoints window with
the current thread.
Note: If you do not see any breakpoints in the Breakpoints window, click the Show Breakpoints
Supported by Selected Target icon as shown in Figure 3-9. The breakpoints are displayed.
8. Right-click the desired breakpoint checkbox and click Breakpoint Properties…. Click the
last_built.elf check box, as shown in Figure 3-10. The check mark appears before the actual
breakpoint indicating its association with the current execution.
This chapter describes the CYW954907AEVAL1F EVK hardware and its different blocks, such as
Bootstrap, reset control, Arduino-compatible headers, and module connectors.
The schematic is available at the following location after installing the software from Software Instal-
lation.
<WICED_SDK_Directory>\43xx_Wifi\platforms\CYW954907AEVAL1F\schematics.
4.1 Bootstrap
Bootstrap options available in the CYW954907AEVAL1F EVK are shown in Table 4-1. The pins are
sampled at power-on reset (POR) to determine various operating modes. Sampling occurs a few
milliseconds after an internal POR or de- assertion of the external POR. After the POR, each pin
assumes the GPIO or alternative function specified in CYW54907 Alternate GPIO function table in
the CYW54907 Datasheet s(002-19312).
Care should be taken to ensure SPI mode and SDIO Host are not turned on at the same time since
they share the same set of lines. For more information regarding bootstrap options, refer to the
CYW54907 Datasheet (002-19312).
Bootstrap options other than GPIO_7 and GPIO_13, are not available for the user to modify in this
board.
To change Bootstrap options for GPIO_7 and GPIO_13, refer the "Bootstraps, Flash" page of sche-
matics.
4.3 LED
There are two user LEDs available named LED_1 and LED_2. Table 4-3 shows the Pin name and
Enumeration used in WICED for these LEDs.
4.5 Ethernet
The Ethernet MAC Controller in the CYW54907 interfaces to an external PHY chip BCM5241 using
the Media Independent Interface (MII) as shown in Figure 4-5. The same signals are also listed in
Table 4-4. CYW54907 also supports Reduced Media Independent Interface (RMII). The controller
can transmit and receive data at 10 Mbps and 100 Mbps.
4.8 Connectors
4.8.1 WICED Header
J6 is the WICED header available on CYW954907AEVAL1F EVK. This is a 44-pin header containing
I2C, SDIO, UART, SPI, PWM lines, and I/Os. Note that some signals are shared with Arduino header
(UART0 Tx/Rx) and On-board Programmer/debugger chip (UART1). Table 4-7 illustrates the J6 pin-
out.
Header
WICED Peripheral Pin Name on WICED
MURATA Module Pin Name Pin
Enumeration ID CYW54907 Enumeration
Number
WICED_PERIPHERAL_PIN_2 RF_SW_CTRL_7 RF_SW_CTRL_7_UART1_TXD J6:37 WICED_UART_1
WICED_PERIPHERAL_PIN_3 UART0_RXD UART0_RXD_IN J6:18 WICED_UART_2
WICED_PERIPHERAL_PIN_4 UART0_TXD UART0_TXD_OUT J6:20 WICED_UART_2
WICED_PERIPHERAL_PIN_5 UART0_CTS UART0_CTS_IN J6:22 WICED_UART_2
WICED_PERIPHERAL_PIN_6 UART0_RTS UART0_RTS_OUT J6:24 WICED_UART_2
WICED_PERIPHERAL_PIN_7 RF_SW_CTRL_8 RF_SW_CTRL_8_UART2_RXD J6:38 WICED_UART_3
WICED_PERIPHERAL_PIN_8 RF_SW_CTRL_9 RF_SW_CTRL_9_UART2_TXD J6:39 WICED_UART_3
4.11 PWM
There are six dedicated PWM outputs available on CYW54907. These PWMs can be multiplexed
onto different pins. You can find their definitions in platforms/CYW954907AEVAL1F/plat-
form.c inside WICED Studio.
The PWMs can be re-assigned to other pins by changing the first argument of the platform_pw-
m_t platform_pwm_peripherals structure in platform.c. Table 4-10 through Table 4-14
show the possible combinations and their Arduino header locations.
This chapter demonstrates the functionality of CYW54907 devices using the CYW954907AEVAL1F
EVK code examples. Download and extract the zip file from the CYW954907AEVAL1F EVK web
page as specified in Software Installation section. The code examples once un-zipped can be
viewed in WICED Studio 6.0 (or later). In addition to the added examples there are already many
apps (snip.gpio, test.console, and so on) that are available in WICED Studio 6.0.
5.2 GPIO
5.2.1 Project Description
The gpio project demonstrates toggling of LEDs and turning them off when one of the User
switches is pressed.
The gpio project consists of the following files:
■ gpio.c: This file contains the main application function application_start() which is the entry
point and execution of the firmware application.
■ gpio.mk: This is the makefile which adds the source of the application.
5.3 Config_join_ping
5.3.1 Project Description
The config_join_ping project demonstrates connectivity between CYW954907AEVAL1F EVK
and a Wi-Fi access point. This example is based on existing examples available in the WICED Stu-
dio 6.0 (or later) SDK namely, apps/snip/scan, apps/snip/dct_read_write and test/
console. On startup, this application shows a console through which the user can enter commands
to scan, configure, join, and ping Wi-Fi access points.
The config_join_ping project consists of the following files:
■ config_join_ping.c: This file contains the main application function application_start()
which is the entry point and execution of the firmware application. It also contains the function
definitions for joining, pinging, printing Wi-Fi configuration, scanning Wi-Fi and the scan result
handler.
■ config_join_ping.mk: This is the makefile which adds the sources, components (in this
application, console and ping are used), and the name of the application. Note that the name of
the makefile must match the name of the project folder for the make process to work properly.
Also, the "NAME" string in the makefile must be unique among all projects in the apps folder.
Type the command scan to find the list of available Wi-Fi access points as shown in Figure 5-3.
Type the command config <SSID> <password> . This command writes the given configuration
in the Device Configuration Table (DCT). These values are stored in flash memory on the board.
Type the command print_config to validate if the SSID and password match and are appropri-
ately written in the DCT.
Type the command join. The join command joins the network specified by the SSID and password
from the DCT. Ping the Access point (usually 192.168.1.1) or 8.8.8.8 (IP address of Google, if your
AP is connected to internet) and check if the network is up and responding. The message "Ping
Reply 11ms" is displayed as shown in Figure 5-4.
5.4 ADC_measure
5.4.1 5.4.1 Project Description
This project demonstrates measuring values from the external ADC chip on the board and posting
the values to a web page accessible from the WLAN network. This code example is based on exist-
ing code example (apps/demo/temp_control) available in the WICED Studio 6.0 (or later) . On
startup, the adc_measure code example joins the Wi-Fi Access Point specified in the wifi_con-
fig_dct.h file and starts a web page where the ADC count is reported.
The project consists of the following files:
■ adc_measure.c: This file contains the main application function application_start() which is the
entry point and execution of the firmware application. It also contains the function definitions for
initializing, conducting ADC measurement, starting the web page, and processing an ADC
update.
■ adc_measure.mk: This is the makefile which adds the sources, components (in this application,
component HTTP_server, device_configuration, Xively, SNTP and Gedday are used) and the
name of the application. It also adds the required resources for the web page which is available in
the resources/apps directory.
■ i2c.c: This file contains the required function definitions for initializing and taking ADC samples
from the external ADC (MAX 11615) available in the CY9W54907AEVAL1F EVK.
■ wifi_config_dct.h: This file contains the Wi-Fi Access Point credentials (SSID and pass
phrase key) and soft AP credentials. Enter the client access point name and password creden-
tials prior to building the application. These are specified as CLIENT_AP_SSID and CLI-
ENT_AP_PASSPHRASE. Note that the security type may also have to be changed if the access
point does not use WPA2 security. The Wi-Fi access point must be connected to the internet to
get the current time using Network Time protocol (NTP). If the Wi-Fi access point is not con-
nected to the internet, then it will assume 00:00:00 UTC time and will start the web page.
Enter the IP address as the URL in your web browser, as shown in the terminal output in Figure 5-7.
For example, 10.40.2.134. The browser will show the output as shown in Figure 5-8. It should be
noted that the PC and CYW954907AEVAL1F EVK should be connected to the same access point.
Rotate the potentiometer and verify that the value shown on web page changes accordingly. One
easy way to validate the correct functioning is to rotate the potentiometer to one of the extremes and
observe if the full- scale value appears. In case you do not have access to a potentiometer, then you
can use an adjustable power supply or wires to connect 3.3V and GND to the ADC input alterna-
tively.
5.5 Publish_subscribe_aws
5.5.1 Project Description
This project demonstrates publishing a message to a Thing in the Amazon Web Services (AWS)
cloud and subscribing to the same messages. A Thing is a representation of a specific device or log-
ical entity. For more information, refer to the AWS Documentation. This example is based on existing
code example (apps/aws_iot/publish and apps/aws_ iot/subscribe.) available in WICED Studio 6.0
(or later). On startup, the publish_subscribe_aws code example joins a Wi-Fi access point specified
in the wifi_config_dct.h file, connects to AWS, subscribes to the specified topic and then alternately
tries to publish LIGHT ON and LIGHT OFF messages.
The project consists of the following files:
■ publish_subscribe.c: This file contains the main application function application_start()
which is the entry point and execution of the firmware application. It also contains the function
definitions for initializing, publishing and subscribing to AWS.
■ publish_subscribe_aws.mk: This is the makefile which adds the sources, protocols, compo-
nents (in this application, the MQTT component is used) and the name of the application. It also
adds the required resources for the web page which are available in the resources/apps direc-
tory. Note that this project uses certificates from apps/aws_iot directory.
■ wifi_config_dct.h: This file contains the Wi-Fi access point credentials (SSID and pass
phrase key) and soft AP credentials. The user should enter the client access point name and
password credentials prior to building the application. These are specified as CLIENT_AP_SSID
and CLIENT_AP_PASSPHRASE. Note that the security type may also have to be changed if the
access point does not use WPA2 security. The Wi-Fi access point must have access to the inter-
net to connect with AWS.
2. Each Thing is uniquely identified by its name. Assign a name in the Name field, and click the
Create thing button. For example, 54907_aws.
Note: It is possible to exchange messages without a need to create a thing (by having a certificate
with an attached policy), but it is recommended by AWS to create the same.
3. In the created Thing window, click the left arrow to navigate back to the AWS IoT Console win-
dow.
Create a Policy
To create a policy, perform these steps:
1. In the AWS IoT Console window, go to Secure > Policies, and then click the Create button. The
Create a policy window appears.
3. On the Certificate created page, click the Download button for the certificate and private key to
save each of them to your PC.
Notes:
■ The certificate and private key cannot be revisited later for download and must be saved while
creating the Certificate.
■ Backup the existing <WICED-SDK>\43xxx_Wi-Fi\resources\apps\aws_iot\cli-
ent.cer and rename the downloaded certificate as client.cer in the <WICED-SDK>\43xxx-
_Wi-Fi\resources\apps\aws_iot\.
■ Backup the existing <WICED-SDK>\43xxx_Wi-
Fi\resources\apps\aws_iot\privkey.cer and rename the downloaded private key as
privkey.cer in <WICED-SDK>\43xxx_Wi-Fi\resources\apps\aws_iot\.
4. Click the Activate button and then click the Attach a policy button as shown in Figure 5-12. The
Add authorization to certificate window appears (see Figure 5-13).
Figure 5-12. Activate and Attach policy
5. Select the check box next to the policy you want to choose and then click the Done button, as
shown in Figure 5-13.
Figure 5-13. Select policy
6. In the created policy window, click to navigate back to the AWS IoT Console window.
7. Go to Security > Certificates. The Certificates window appears.
8. Click the created certificate. The Certificate ARN window appears.
9. Click Policies in the left-hand panel to validate if the correct policy is linked.
10. Click Things in the left-hand panel to validate if the correct Thing is linked.
11. Click the specific Thing. The Thing ARN window appears.
14. Navigate to the publish_subscribe.c file to update the MQTT_BROKER_ADDRESS macro with
the endpoint address copied from HTTPS tab. Remove the first string before "." In endpoint and
replace it with * and copy it to the REGION macro. In this case, it is "*.iot.ap-southeast-
1.amazonaws.com".
15. The created Thing, policy and certificate are used to interact with the AWS IoT.
Go to Test. Type a topic name and click on Subscribe to topic. Publish to the same topic.