This example application demonstrates how to use the TWIHS peripheral in Slave mode.
Parent topic:Harmony 3 Peripheral Library Application Examples for SAMA5D2 Family
This example uses the TWIHS peripheral library in Slave mode and emulates an EEPROM
of 512 bytes. There are two pages each of size 256 bytes. TWIHS Slave expects two
bytes of memory address from the TWIHS Master and the memory address can range from
0x00 to 0x1FF. TWIHS Slave application supports following:
Byte Write: The TWIHS Master sends the Slave address, followed by two bytes of
memory address. The Slave provides the data present at the requested memory
address.
Page Write: A page write is initiated the same way as a byte write, but the
TWIHS Master can write up-to 256 bytes (1 page). If more than 256 bytes are sent by
the TWIHS Master to the TWIHS Slave, the memory address will “roll over� and
previous data will be overwritten. The address “roll over� during write is from the
last byte of the current page to the first byte of the same page.
Current Address Read: The internal memory address counter maintains the last
address accessed during the last read or write operation, incremented by one. Once
the device address with the read/write bit set to one is clocked in and acknowledged
by the EEPROM, the data byte at the current address is serially clocked out. After
reading the data from the current address, the TWIHS Master sends NAK and generates
a STOP condition.
Random Read: The TWIHS Master writes the 2 byte memory address and then reads
the data from that memory address. After reading the data, the TWIHS Master sends
NAK and generates a STOP condition.
Sequential Read: Sequential reads are initiated by either a current address
read or a random address read. As long as the EEPROM receives an acknowledge, it
will continue to increment the memory address and serially clock out sequential data
bytes. When the memory address limit is reached (0x1FF), the memory address will
“roll over� to 0x00 and the sequential read will continue. The sequential read
operation is terminated when the TWIHS Master sends a NAK and generates a STOP
condition.
To run the application, two evaluation kits will be required - one acting as the
TWIHS Master and the other as the TWIHS Slave. The TWIHS Master application to be
used for this demo application is available under
apps/twihs/master/twihs_eeprom/firmware folder. TWIHS Master writes an
array of values to the TWIHS Slave and verifies the value written by reading the
values back and comparing it to the value written.
To clone or download this application from Github, go to the main page of this repository and then
click Clone button to clone this repository or download as zip file. This content
can also be downloaded using content manager by following these instructions.
Path of the application within the repository is
apps/twihs/slave/i2c_eeprom_emulation/firmware.
To build the application, refer to the following table and open the project using its
IDE.
Project Name | Description |
---|---|
sam_a5d2_curiosity.X | MPLABX project for SAMA5D29 Curiosity Development Board Kit |
To load the application binary onto the target device, we need to use at91bootstrap
loader. Refer to the at91bootstrap loader documentation for
details on how to configure, build and run bootstrap loader project and use it to
bootstrap the application binaries.
The following table shows the target hardware for the application projects.
Project Name | Description |
---|---|
sam_a5d2_curiosity.X | SAMA5D29 Curiosity Development Board Kit |
Hardware setup requires two boards, one acting as the TWIHS Master and the other as
the TWIHS Slave.
SETTING UP THE BOARD
Open the twihs_eeprom application from apps/twihs/master/twihs_eeprom/firmware and open the main.c file. Make sure the following macro is defined to false.
#define I2C_SLAVE_IS_ONBOARD_EEPROM false
Build twihs_eeprom application (which is used as TWIHS
Master) using its IDE
Build TWIHS Slave application (used as TWIHS Slave) using its IDE
Run application on TWIHS Slave board and then run the application on TWIHS Master board
LED on the TWIHS Master board indicates success or failure:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。