YASP: Yet Another Scalable Protocol
YASP is a simple and open protocol for building networks with small microcontrollers.
It is designed to have a small footprint for easy implementation with minimal
hardware resources, but without sacrifice advanced features and future growth. The
protocol scalability is implemented using variable length fields. The physical layer use the
NRZ encoding as in RS-232, but using dominant and recessive bus states to provide a
reliable way to detect collisions in a non-destructive way.
Major features
- Node adresses: 1 to n bytes
- Medium access: CDMA/CS/NDA (Carrier Sense Multiple Access / Collision Detection / Non-Destructive Arbitration)
- Addressing modes: unicast, broadcast and multicast
- Smallest frame: 6 bytes
- Error detection: CRC16
- Bus signaling: 1-wire "open collector" or 2-wire diferential (CAN transceiver)
- Current PIC implementation: about 480 words of code and 25 bytes of RAM (interrupt driven)
Download
You can download the current tarball from the project page.
Documentation
YASP Specifications: PDF LyX.
License
The YASP stack for PIC is covered by the GNU Lesser General
Public License, the rest of the code is covered by the GNU General
Public License, and the protocol specifications and documentation by the Open Publication License.
YASP Devices
IO4x4
This is a simple YASP node written as example of a PIC based node
that provides four logic inputs and four logic outputs. [io4x4.sch]
[io4x4.asm]
Yasper
The YASP RS232 Adapter. This is a YASP-to-ASCII interface for use
with non-RTOS hosts. This device takes care of all the MAC layer tasks and timmings so
the host not need to implement it. It was originally designed for use with PDAs, but it is
usefull to attach any host with a rs232 port. [yasper.sch]
[yasper.asm]
YASP Sniffer
This is a debugging device, it gives raw access to the bus
and can be used to send test frames with yasp.py.
[yasp-sniffer.sch]
Feedback
Feel free to send comments, corrections, etc. to frank23@softhome.net
Copyrigth 2003 by Francisco Castro