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 intCLOCKstatic byteEVEN_PARITYstatic intFRAME_ERRstatic intIDLE_LINE_DETSCIInputStreaminInput stream to read from this Serial Communication Interface..static intLENGTH_NEG_ERRstatic byteNO_PARITYstatic intNOISE_ERRstatic intNULL_POINTER_ERRstatic byteODD_PARITYstatic intOFFSET_NEG_ERRSCIOutputStreamoutOutput stream to write to this Serial Communication Interface..static intOVERRUN_ERRstatic intPARITY_ERRstatic intPORT_OPENstatic intpSCI1static intpSCI2static intQUEUE_LENstatic intRX_ACTIVEstatic intRX_RDYstatic intTX_COMPLETEstatic intTX_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 voidaction()This is the interrupt handler.intavailToRead()Returns the number of bytes available in the receive buffer.intavailToWrite()Returns the number of free bytes available in the transmit buffer.voidclear()Clear the receive and transmit buffers.voidclearReceiveBuffer()Clear the receive buffer.voidclearTransmitBuffer()Clear the transmit buffer.static SCIgetInstance(int sciNr)Returns an instance of Serial Communication Interface operating the SCI1 or SCI2.shortportStatus()Check the port status.intread()Reads one byte from the SCI.intread(byte[] buffer)Reads the given number of bytes from the SCI.intread(byte[] buffer, int off, int count)Reads the given number of bytes from the SCI.voidreset()Resets the SCI.voidstart(int baudRate, short parity, short data)Initialize and start the Serial Communication Interface.voidstop()Stop the Serial Communication Interface.voidwrite(byte b)Writes a given byte into the transmit buffer.intwrite(byte[] buffer)Writes a given number of bytes into the transmit buffer.intwrite(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:InterruptThis 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_PARITYorEVEN_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 IOExceptionReads 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- ifbufferis null.IndexOutOfBoundsException- ifoff < 0orcount < 0, or ifoff + countis bigger than the length ofbuffer.
-
read
public int read(byte[] buffer) throws IOExceptionReads 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 IOExceptionReads 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 IOExceptionWrites 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- ifbufferis null.IndexOutOfBoundsException- ifoff < 0orcount < 0, or ifoff + countis bigger than the length ofbuffer.
-
write
public int write(byte[] buffer) throws IOExceptionWrites 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 IOExceptionWrites 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.
-
-