74 lines
2.7 KiB
Plaintext
74 lines
2.7 KiB
Plaintext
Name:
|
|
=====
|
|
ios_fifo
|
|
|
|
|
|
Description:
|
|
============
|
|
Example slave used for demonstrating the use of the IOS FIFO.
|
|
|
|
|
|
Purpose:
|
|
========
|
|
This slave component runs on one EVB and is used in conjunction with
|
|
the companion host example, ios_fifo_host, which runs on a second EVB.
|
|
|
|
The ios_fifo example has no print output.
|
|
The host example does use the ITM SWO to let the user know progress and
|
|
status of the demonstration.
|
|
|
|
This example implements the slave part of a protocol for data exchange with
|
|
an Apollo IO Master (IOM). The host sends one byte commands on SPI/I2C by
|
|
writing to offset 0x80.
|
|
|
|
The command is issued by the host to Start/Stop Data accumulation, and also
|
|
to acknowledge read-complete of a block of data.
|
|
|
|
On the IOS side, once it is asked to start accumulating data (using START
|
|
command), two CTimer based events emulate sensors sending data to IOS.
|
|
When IOS has some data for host, it implements a state machine,
|
|
synchronizing with the host.
|
|
|
|
The IOS interrupts the host to indicate data availability. The host then
|
|
reads the available data (as indicated by FIFOCTR) by READing using IOS FIFO
|
|
(at address 0x7F). The IOS keeps accumulating any new data coming in the
|
|
background.
|
|
|
|
Host sends an acknowledgment to IOS once it has finished reading a block
|
|
of data initiated by IOS (partially or complete). IOS interrupts the host
|
|
again if and when it has more data for the host to read, and the cycle
|
|
repeats - till host indicates that it is no longer interested in receiving
|
|
data by sending STOP command.
|
|
|
|
Printing takes place over the ITM at 1M Baud.
|
|
|
|
Additional Information:
|
|
=======================
|
|
In order to run this example, a host device (e.g. a second EVB) must be set
|
|
up to run the host example, ios_fifo_host. The two boards can be connected
|
|
using fly leads between the two boards as follows.
|
|
|
|
Pin connections for the I/O Master board to the I/O Slave board.
|
|
SPI:
|
|
HOST (ios_fifo_host) SLAVE (ios_fifo)
|
|
-------------------- ----------------
|
|
GPIO[10] GPIO Interrupt (slave to host) GPIO[4] GPIO interrupt
|
|
GPIO[5] IOM0 SPI SCK GPIO[0] IOS SPI SCK
|
|
GPIO[7] IOM0 SPI MOSI GPIO[1] IOS SPI MOSI
|
|
GPIO[6] IOM0 SPI MISO GPIO[2] IOS SPI MISO
|
|
GPIO[11] IOM0 SPI nCE GPIO[3] IOS SPI nCE
|
|
GND GND
|
|
|
|
I2C:
|
|
HOST (ios_fifo_host) SLAVE (ios_fifo)
|
|
-------------------- ----------------
|
|
GPIO[10] GPIO Interrupt (slave to host) GPIO[4] GPIO interrupt
|
|
GPIO[5] IOM0 I2C SCL GPIO[0] IOS I2C SCL
|
|
GPIO[6] IOM0 I2C SDA GPIO[1] IOS I2C SDA
|
|
GND GND
|
|
|
|
|
|
******************************************************************************
|
|
|
|
|