BusSPI
Base SPI bus interface.
Concrete implementations in MCU drivers should be passed to code.
(c) Alexander Shiryaev, 2016.12 Modified by Tenko for use with ECS
Const
NoError* = 0;
ErrorTimeout* = -1;
Types
Bus* = RECORD
maxTransferSize*: INTEGER; (* maximum BYTE transfer size supported by driver *)
timeout*: UNSIGNED32; (* transfere timeout in ms. 0 or lower disable timeout check *)
error*: INTEGER; (* last transfer error code or NoError if success *)
END;
Procedures
Bus.Idle
Callback during transfer idle.
PROCEDURE (VAR this : Bus) Idle*;
Bus.Transfer
- General transfer routine.
rxAdr : address to read buffer. Can be 0 for tx only.
txAdr : address to write buffer. Can be 0 for rx only.
txConst : if TRUE then tx constant value.
dataSize : 8 or 16 bit.
len : length of buffer
PROCEDURE (VAR this : Bus) Transfer* (rxAdr, txAdr : ADDRESS; txConst : BOOLEAN; dataSize, len : LENGTH);
Bus.Read
Read length bytes to buffer begining at start index and send TXByte.
PROCEDURE (VAR this : Bus) Read*(VAR buffer : ARRAY OF BYTE; start, length : LENGTH; TXByte : BYTE);
Bus.Write
Write length bytes from buffer begining at start index.
PROCEDURE (VAR this : Bus) Write*(VAR buffer : ARRAY OF BYTE; start, length : LENGTH);
Bus.ReadWrite
Write length bytes from buffer begining at TXStart index and at the same time read length bytes to buffer begining at RXStart index.
PROCEDURE (VAR this : Bus) ReadWrite*(VAR RXBuffer : ARRAY OF BYTE;VAR TXBuffer : ARRAY OF BYTE; RXStart, TXStart, length : LENGTH);