Class SCI
- java.lang.Object
-
- org.deepjava.runtime.ppc32.PPCException
-
- org.deepjava.runtime.mpc555.Interrupt
-
- org.deepjava.runtime.mpc555.driver.SCI
-
- All Implemented Interfaces:
Impc555
,IntbMpc555HB
,Ippc32
public class SCI extends Interrupt
Interrupt controlled driver for the Serial Communication Interface 1 or the Serial Communication Interface 2 of the Freescale MPC555.
Remember:
Depending on the baudrate configured, the effective baudrate can be different. This may cause miss interpretation of the bytes sent at the receiver! For more details, please consider table 14-29 in chapter 14.8.7.3 in the MPC555 User's manual.
-
-
Field Summary
Fields Modifier and Type Field Description static int
CLOCK
static byte
EVEN_PARITY
static int
FRAME_ERR
static int
IDLE_LINE_DET
SCIInputStream
in
Input stream to read from this Serial Communication Interface..static int
LENGTH_NEG_ERR
static byte
NO_PARITY
static int
NOISE_ERR
static int
NULL_POINTER_ERR
static byte
ODD_PARITY
static int
OFFSET_NEG_ERR
SCIOutputStream
out
Output stream to write to this Serial Communication Interface..static int
OVERRUN_ERR
static int
PARITY_ERR
static int
PORT_OPEN
static int
pSCI1
static int
pSCI2
static int
QUEUE_LEN
static int
RX_ACTIVE
static int
RX_RDY
static int
TX_COMPLETE
static int
TX_EMPTY
-
Fields inherited from class org.deepjava.runtime.mpc555.Interrupt
enableRegAdr, enBitMask, flagMask, flagRegAdr, nofUnexpInterrupts
-
Fields inherited from interface org.deepjava.runtime.mpc555.Impc555
BAR, BBCMCR, BR0, BR1, BR2, BR3, CCW_A, CCW_B, CFSR0_A, CFSR0_B, CFSR1_A, CFSR1_B, CFSR2_A, CFSR2_B, CFSR3_A, CFSR3_B, CIER_A, CIER_B, CISR_A, CISR_B, CMFA_BaseAddr, CMFA_Size, CMFB_BaseAddr, CMFB_Size, CMFCTL_A, CMFCTL_B, CMFMCR_A, CMFMCR_B, CMFTST_A, CMFTST_B, CMPA, CMPB, CMPC, CMPD, CMPE, CMPF, CMPG, CMPH, COLIR, COMDRAM, COUNTA, COUNTB, CPR0_A, CPR0_B, CPR1_A, CPR1_B, DDRQA_A, DDRQA_B, DDRQS, DER, DMBR, DMOR, DPTMCR, DSCR_A, DSCR_B, DSSR_A, DSSR_B, ECR, EID, EIE, EMCR, excpCodeBase, excpCodeSize, FPECR, HSQR0_A, HSQR0_B, HSQR1_A, HSQR1_B, HSRR0_A, HSRR0_B, HSRR1_A, HSRR1_B, ICTRL, IMB, IMMR, L2U_GRA, L2U_MCR, L2U_RA0, L2U_RA1, L2U_RA2, L2U_RA3, L2U_RBA0, L2U_RBA1, L2U_RBA2, L2U_RBA3, LCTRL1, LCTRL2, LJSRR_A, LJSRR_B, LJURR_A, LJURR_B, MCPSMSCR, MDASM11AR, MDASM11BR, MDASM11SCR, MDASM11SCRD, MDASM12AR, MDASM12BR, MDASM12SCR, MDASM12SCRD, MDASM13AR, MDASM13BR, MDASM13SCR, MDASM13SCRD, MDASM14AR, MDASM14BR, MDASM14SCR, MDASM14SCRD, MDASM15AR, MDASM15BR, MDASM15SCR, MDASM15SCRD, MDASM27AR, MDASM27BR, MDASM27SCR, MDASM27SCRD, MDASM28AR, MDASM28BR, MDASM28SCR, MDASM28SCRD, MDASM29AR, MDASM29BR, MDASM29SCR, MDASM29SCRD, MDASM30AR, MDASM30BR, MDASM30SCR, MDASM30SCRD, MDASM31AR, MDASM31BR, MDASM31SCR, MDASM31SCRD, MI_GRA, MI_RA0, MI_RA1, MI_RA2, MI_RA3, MI_RBA0, MI_RBA1, MI_RBA2, MI_RBA3, MIOS1ER0, MIOS1ER1, MIOS1LVL0, MIOS1LVL1, MIOS1MCR, MIOS1RPR0, MIOS1RPR1, MIOS1SR0, MIOS1SR1, MIOS1TPCR, MIOS1VNR, MISCNT, MISRH, MISRL, MMCSM22CNT, MMCSM22ML, MMCSM22SCR, MMCSM22SCRD, MMCSM6CNT, MMCSM6ML, MMCSM6SCR, MMCSM6SCRD, MPIOSMDDR, MPIOSMDR, MPWMSM0CNTR, MPWMSM0PERR, MPWMSM0PULR, MPWMSM0SCR, MPWMSM16CNTR, MPWMSM16PERR, MPWMSM16PULR, MPWMSM16SCR, MPWMSM17CNTR, MPWMSM17PERR, MPWMSM17PULR, MPWMSM17SCR, MPWMSM18CNTR, MPWMSM18PERR, MPWMSM18PULR, MPWMSM18SCR, MPWMSM19CNTR, MPWMSM19PERR, MPWMSM19PULR, MPWMSM19SCR, MPWMSM1CNTR, MPWMSM1PERR, MPWMSM1PULR, MPWMSM1SCR, MPWMSM2CNTR, MPWMSM2PERR, MPWMSM2PULR, MPWMSM2SCR, MPWMSM3CNTR, MPWMSM3PERR, MPWMSM3PULR, MPWMSM3SCR, MSTAT, NRI, OR0, OR1, OR2, OR3, PDMCR, PISCR, PISCRIK, PITC, PITCK, PITR, PLPRCR, PLPRCRK, PORTQA_A, PORTQA_B, PORTQB_A, PORTQB_B, PORTQS, PQSPAR, PVR, QACR0_A, QACR0_B, QACR1_A, QACR1_B, QACR2_A, QACR2_B, QADC64INT_A, QADC64INT_B, QADC64MCR_A, QADC64MCR_B, QASR0_A, QASR0_B, QASR1_A, QASR1_B, QDSCI_IL, QSCI1CR, QSCI1SR, QSMCMMCR, QSPI_IL, RAMBAR, RECRAM, RJURR_A, RJURR_B, RSR, RSRK, RTC, RTCAL, RTCALK, RTCK, RTCSC, RTCSCK, RTSEC, RTSECK, SC1DR, SC1SR, SC2DR, SC2SR, SCC1R0, SCC1R1, SCC2R0, SCC2R1, SCCR, SCCRK, SCRQ, SCTQ, SGPIOCR, SGPIODT1, SGPIODT2, SIEL, SIMASK, SIPEND, SIUMCR, SIVEC, SPCR0, SPCR1, SPCR2, SPCR3, SPR1022, SPR144, SPR145, SPR146, SPR147, SPR148, SPR149, SPR150, SPR151, SPR152, SPR153, SPR154, SPR155, SPR156, SPR157, SPR158, SPR159, SPR528, SPR536, SPR560, SPR568, SPR638, SPR784, SPR785, SPR786, SPR787, SPR792, SPR793, SPR794, SPR795, SPR80, SPR81, SPR816, SPR817, SPR818, SPR819, SPR82, SPR824, SPR825, SPR826, SPR827, SPSR, SRAMA_BaseAddr, SRAMA_Size, SRAMB_BaseAddr, SRAMB_Size, SRAMMCR_A, SRAMMCR_B, stackSize, SWSR, SYPCR, sysTabBaseAddr, TBK, TBREF0, TBREF0K, TBREF1, TBREF1K, TBSCR, TBSCRK, TESR, TICR_A, TICR_B, TPUMCR_A, TPUMCR_B, TPUMCR2_A, TPUMCR2_B, TPUMCR3_A, TPUMCR3_B, TPURAM0_A, TPURAM0_B, TPURAM1_A, TPURAM1_B, TPURAM10_A, TPURAM10_B, TPURAM11_A, TPURAM11_B, TPURAM12_A, TPURAM12_B, TPURAM13_A, TPURAM13_B, TPURAM14_A, TPURAM14_B, TPURAM15_A, TPURAM15_B, TPURAM2_A, TPURAM2_B, TPURAM3_A, TPURAM3_B, TPURAM4_A, TPURAM4_B, TPURAM5_A, TPURAM5_B, TPURAM6_A, TPURAM6_B, TPURAM7_A, TPURAM7_B, TPURAM8_A, TPURAM8_B, TPURAM9_A, TPURAM9_B, TRANRAM, UIPEND, UMCR, UTSTCREG, VSRMCR
-
Fields inherited from interface org.deepjava.runtime.mpc555.IntbMpc555HB
dualMappedSize, extFlashBase, extFlashSize, extRamBase, extRamSize, heapSize, SRR1init
-
Fields inherited from interface org.deepjava.runtime.ppc32.Ippc32
CR, CTR, DAR, DEC, DSISR, FPR0, FPR1, FPR10, FPR11, FPR12, FPR13, FPR14, FPR15, FPR16, FPR17, FPR18, FPR19, FPR2, FPR20, FPR21, FPR22, FPR23, FPR24, FPR25, FPR26, FPR27, FPR28, FPR29, FPR3, FPR30, FPR31, FPR4, FPR5, FPR6, FPR7, FPR8, FPR9, FPSCR, LR, MSR, R0, R1, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R2, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R3, R30, R31, R4, R5, R6, R7, R8, R9, SPR1, SPR18, SPR19, SPR22, SPR26, SPR268, SPR269, SPR27, SPR272, SPR273, SPR274, SPR275, SPR287, SPR8, SPR9, SPRG0, SPRG1, SPRG2, SPRG3, SRR0, SRR1, TBLread, TBUread, XER
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
action()
This is the interrupt handler.int
availToRead()
Returns the number of bytes available in the receive buffer.int
availToWrite()
Returns the number of free bytes available in the transmit buffer.void
clear()
Clear the receive and transmit buffers.void
clearReceiveBuffer()
Clear the receive buffer.void
clearTransmitBuffer()
Clear the transmit buffer.static SCI
getInstance(int sciNr)
Returns an instance of Serial Communication Interface operating the SCI1 or SCI2.short
portStatus()
Check the port status.int
read()
Reads one byte from the SCI.int
read(byte[] buffer)
Reads the given number of bytes from the SCI.int
read(byte[] buffer, int off, int count)
Reads the given number of bytes from the SCI.void
reset()
Resets the SCI.void
start(int baudRate, short parity, short data)
Initialize and start the Serial Communication Interface.void
stop()
Stop the Serial Communication Interface.void
write(byte b)
Writes a given byte into the transmit buffer.int
write(byte[] buffer)
Writes a given number of bytes into the transmit buffer.int
write(byte[] buffer, int off, int count)
Writes a given number of bytes into the transmit buffer.
-
-
-
Field Detail
-
pSCI1
public static final int pSCI1
- See Also:
- Constant Field Values
-
pSCI2
public static final int pSCI2
- See Also:
- Constant Field Values
-
NO_PARITY
public static final byte NO_PARITY
- See Also:
- Constant Field Values
-
ODD_PARITY
public static final byte ODD_PARITY
- See Also:
- Constant Field Values
-
EVEN_PARITY
public static final byte EVEN_PARITY
- See Also:
- Constant Field Values
-
PORT_OPEN
public static final int PORT_OPEN
- See Also:
- Constant Field Values
-
TX_EMPTY
public static final int TX_EMPTY
- See Also:
- Constant Field Values
-
TX_COMPLETE
public static final int TX_COMPLETE
- See Also:
- Constant Field Values
-
RX_RDY
public static final int RX_RDY
- See Also:
- Constant Field Values
-
RX_ACTIVE
public static final int RX_ACTIVE
- See Also:
- Constant Field Values
-
IDLE_LINE_DET
public static final int IDLE_LINE_DET
- See Also:
- Constant Field Values
-
OVERRUN_ERR
public static final int OVERRUN_ERR
- See Also:
- Constant Field Values
-
NOISE_ERR
public static final int NOISE_ERR
- See Also:
- Constant Field Values
-
FRAME_ERR
public static final int FRAME_ERR
- See Also:
- Constant Field Values
-
PARITY_ERR
public static final int PARITY_ERR
- See Also:
- Constant Field Values
-
LENGTH_NEG_ERR
public static final int LENGTH_NEG_ERR
- See Also:
- Constant Field Values
-
OFFSET_NEG_ERR
public static final int OFFSET_NEG_ERR
- See Also:
- Constant Field Values
-
NULL_POINTER_ERR
public static final int NULL_POINTER_ERR
- See Also:
- Constant Field Values
-
QUEUE_LEN
public static final int QUEUE_LEN
- See Also:
- Constant Field Values
-
CLOCK
public static final int CLOCK
- See Also:
- Constant Field Values
-
out
public SCIOutputStream out
Output stream to write to this Serial Communication Interface..
-
in
public SCIInputStream in
Input stream to read from this Serial Communication Interface..
-
-
Method Detail
-
getInstance
public static SCI getInstance(int sciNr)
Returns an instance of Serial Communication Interface operating the SCI1 or SCI2.- Parameters:
sciNr
- 0 selects SCI1, 1 selects SCI2- Returns:
- Instance of SCI
-
action
public void action()
Description copied from class:Interrupt
This is the interrupt handler. Please make sure to overwrite this method for your own interrupt handlers.
-
clearReceiveBuffer
public void clearReceiveBuffer()
Clear the receive buffer.
-
clearTransmitBuffer
public void clearTransmitBuffer()
Clear the transmit buffer.
-
clear
public void clear()
Clear the receive and transmit buffers.
-
stop
public void stop()
Stop the Serial Communication Interface.
-
start
public void start(int baudRate, short parity, short data)
Initialize and start the Serial Communication Interface.
This method have to be called before using the SCI! The number of stop bits can't be set. There is always one stop bit!
- Parameters:
baudRate
- The baud rate. Allowed Range: 64 to 500'000 bits/s.parity
- Parity bits configuration. Possible values:NO_PARITY
,ODD_PARITY
orEVEN_PARITY
.data
- Number of data bits. Allowed values are 7 to 9 bits. If you choose 9 data bits, than is no parity bit more available!
-
portStatus
public short portStatus()
Check the port status. Returns the port status bits.
Every bit is representing a flag (e.g.PORT_OPEN
).- Returns:
- the port status bits.
-
availToRead
public int availToRead()
Returns the number of bytes available in the receive buffer.- Returns:
- number of bytes in the receive buffer.
-
availToWrite
public int availToWrite()
Returns the number of free bytes available in the transmit buffer. It is possible, to send the returned number of bytes in one nonblocking transfer.- Returns:
- the available free bytes in the transmit buffer.
-
read
public int read(byte[] buffer, int off, int count) throws IOException
Reads the given number of bytes from the SCI. A call of this method is not blocking!- Parameters:
buffer
- Byte aray to write the received data.off
- Offset in the array to start writing the data.count
- Length (number of bytes) to read.- Returns:
- the number of bytes read.
- Throws:
IOException
- if an error occurs while reading from this stream.NullPointerException
- ifbuffer
is null.IndexOutOfBoundsException
- ifoff < 0
orcount < 0
, or ifoff + count
is bigger than the length ofbuffer
.
-
read
public int read(byte[] buffer) throws IOException
Reads the given number of bytes from the SCI. A call of this method is not blocking!- Parameters:
buffer
- Byte array to write the received data.- Returns:
- the number of bytes read.
- Throws:
IOException
- if no data available.
-
read
public int read() throws IOException
Reads one byte from the SCI. A call of this method is not blocking!- Returns:
- byte single entry in queue.
- Throws:
IOException
- if no byte available.
-
write
public int write(byte[] buffer, int off, int count) throws IOException
Writes a given number of bytes into the transmit buffer. A call of this method is not blocking! There will only as many bytes written, which are free in the buffer.- Parameters:
buffer
- Array of bytes to send.off
- Offset to the data which should be sent.count
- Number of bytes to send.- Returns:
- the number of bytes written.
- Throws:
IOException
- if an error occurs while writing to this stream.NullPointerException
- ifbuffer
is null.IndexOutOfBoundsException
- ifoff < 0
orcount < 0
, or ifoff + count
is bigger than the length ofbuffer
.
-
write
public int write(byte[] buffer) throws IOException
Writes a given number of bytes into the transmit buffer. A call of this method is not blocking! There will only as many bytes written, which are free in the buffer.- Parameters:
buffer
- Array of bytes to send.- Returns:
- the number of bytes written.
- Throws:
IOException
- if an error occurs while writing to this stream.
-
write
public void write(byte b) throws IOException
Writes a given byte into the transmit buffer. A call of this method is blocking! If the buffer is full, the method blocks for a short period of time until a small amount of space is available again. After this an IOException is thrown.- Parameters:
b
- Byte to write.- Throws:
IOException
- if an error occurs while writing to this stream.
-
reset
public void reset()
Resets the SCI. This means, the SCI will be stopped and reinitialized with the same configuration.
-
-