\n

SPI

Peripheral Memory Blocks

address_offset : 0x0 Bytes (0x0)
size : 0xC byte (0x0)
mem_usage : registers
protection :

address_offset : 0x10 Bytes (0x0)
size : 0x8 byte (0x0)
mem_usage : registers
protection :

address_offset : 0x20 Bytes (0x0)
size : 0x8 byte (0x0)
mem_usage : registers
protection :

address_offset : 0x30 Bytes (0x0)
size : 0x4 byte (0x0)
mem_usage : registers
protection :

Registers

SPI0_CTL (CTL)

SPI0_RX0 (RX0)

RX1

SPI0_TX0 (TX0)

TX1

SPI0_RCLK (RCLK)

SPI0_CLKDIV (CLKDIV)

SPI0_SSCTL (SSCTL)


SPI0_CTL (CTL)

Control and Status Register
address_offset : 0x0 Bytes (0x0)
size : -1 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0

SPI0_CTL SPI0_CTL read-write 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GO_BUSY RX_NEG TX_NEG DWIDTH TX_NUM LSB CLKP SUSPITV UNIT_INTSTS UNIT_INTEN SLAVE REORDER

GO_BUSY : Go And Busy Status NOTE: All registers should be set readily before writing 1 to the GO_BUSY bit. When a transfer is in progress, writing to any register of the SPI core has no effect.
bits : 0 - 0 (1 bit)
access : read-write

Enumeration:

#0 : 0

Writing 0 to this bit has no effect

#1 : 1

Writing 1 to this bit starts the transfer. This bit remains 1 during the transfer and is automatically cleared after the transfer is finished

End of enumeration elements list.

RX_NEG : Receive On Negative Edge
bits : 1 - 1 (1 bit)
access : read-write

Enumeration:

#0 : 0

The input on SPI_MISO0 is latched on the rising edge of SPI_SCLK0

#1 : 1

The input on SPI_MISO0 is latched on the falling edge of SPI_SCLK0

End of enumeration elements list.

TX_NEG : Transmit On Negative Edge
bits : 2 - 2 (1 bit)
access : read-write

Enumeration:

#0 : 0

The output on SPI_MOSI0 is changed on the rising edge of SPI_SCLK0

#1 : 1

The output on SPI_MOSI0 is changed on the falling edge of SPI_SCLK0

End of enumeration elements list.

DWIDTH : Transmit Bit Length This field specifies how many bits are transmitted in one transmit/receive. Up to 32 bits can be transmitted.
bits : 3 - 7 (5 bit)
access : read-write

TX_NUM : Transmit/Receive Numbers This field specifies how many transmit/receive numbers should be executed in one transfer.
bits : 8 - 9 (2 bit)
access : read-write

Enumeration:

#00 : 0

Only one transmit/receive will be executed in one transfer

#01 : 1

Two successive transmit/receive will be executed in one transfer. Reserved

End of enumeration elements list.

LSB : Send LSB First
bits : 10 - 10 (1 bit)
access : read-write

Enumeration:

#0 : 0

The MSB is transmitted/received first (which bit in SPI0_TXn/SPI0_RXn is MSB is dependent on DWIDTH)

#1 : 1

The LSB (SPI0_TXn[0]) is sent first to SPI0_MOSI0, and the first bit received from SPI0_MISO0 will be put in the LSB (SPI0_RXn[0])

End of enumeration elements list.

CLKP : Clock Polarity
bits : 11 - 11 (1 bit)
access : read-write

Enumeration:

#0 : 0

SPI_SCLK0 idle low

#1 : 1

SPI_SCLK0 idle high

End of enumeration elements list.

SUSPITV : Suspend Interval (Master Mode Only) (SUSPITV+2)* SPI0_CLK clock cycles Note: SUSPITV cannot be 0 .
bits : 12 - 15 (4 bit)
access : read-write

UNIT_INTSTS : Unit Transfer Interrupt Status Note: This bit is read only, but can be cleared by writing 1 to this bit.
bits : 16 - 16 (1 bit)
access : read-write

Enumeration:

#0 : 0

No transaction has been finished since this bit was cleared to 0

#1 : 1

SPI controller has finished one unit transfer

End of enumeration elements list.

UNIT_INTEN : Unit Transfer Interrupt Enable
bits : 17 - 17 (1 bit)
access : read-write

Enumeration:

#0 : 0

Disable SPI Unit Transfer Interrupt

#1 : 1

Enable SPI Unit Transfer Interrupt to CPU

End of enumeration elements list.

SLAVE : Master/Slave Mode Select
bits : 18 - 18 (1 bit)
access : read-write

Enumeration:

#0 : 0

Master mode

#1 : 1

Slave mode

End of enumeration elements list.

REORDER : BYTE ENDIAN
bits : 20 - 20 (1 bit)
access : read-write

Enumeration:

#0 : 0

Disable the BYTE ENDIAN

#1 : 1

Enable the BYTE ENDIAN. Only the 16, 24, and 32 bits which are defined in DWIDTH are supported

End of enumeration elements list.


SPI0_RX0 (RX0)

Data Receive Register 0
address_offset : 0x10 Bytes (0x0)
size : -1 bit
access : read-only
reset_value : 0x0
reset_Mask : 0x0

SPI0_RX0 SPI0_RX0 read-only 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RX

RX : Data Receive Register Note: The Data Receive Registers are read only registers. A Write to these registers will actually modify the Data Transmit Registers because those registers share the same flip-flops.
bits : 0 - 31 (32 bit)
access : read-only


RX1


address_offset : 0x14 Bytes (0x0)
size : -1 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0

RX1 RX1 read-write 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SPI0_TX0 (TX0)

Data Transmit Register 0
address_offset : 0x20 Bytes (0x0)
size : -1 bit
access : write-only
reset_value : 0x0
reset_Mask : 0x0

SPI0_TX0 SPI0_TX0 write-only 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 TX

TX : Data Transmit Register Note: The SPI0_RXn and SPI0_TXn registers share the same flip-flops, which mean that what is received in one transfer will be transmitted in the next transfer if there is not any write to the SPI0_TXn register between the two transfers.
bits : 0 - 31 (32 bit)
access : write-only


TX1


address_offset : 0x24 Bytes (0x0)
size : -1 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0

TX1 TX1 read-write 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SPI0_RCLK (RCLK)

SPI0 Receive Timing Control Register
address_offset : 0x30 Bytes (0x0)
size : -1 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0

SPI0_RCLK SPI0_RCLK read-write 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SPI0_FTIM SPI0_CTIM

SPI0_FTIM : Fine Timing Control For SPI0 Data Receiving The delay timing selected by SPI0_CTIM can be further tuned finely by SPI0_FTIM.
bits : 0 - 1 (2 bit)
access : read-write

Enumeration:

#00 : 0

Receiving data clock of SPI0 has extra 7.5nS delay

#01 : 1

Receiving data clock of SPI0 has extra 5.0nS delay,

#10 : 2

Receiving data clock of SPI0 has extra 2.5nS delay,

#11 : 3

Receiving data clock of SPI0 has no extra delay

End of enumeration elements list.

SPI0_CTIM : Coarse Timing Control For SPI0 Data Receiving Setting these bits can adjust receiving clock for latching serial-in data correctly in high speed transmission mode.
bits : 2 - 3 (2 bit)
access : read-write

Enumeration:

#00 : 0

Receiving data clock of SPI0 is same as the SPI_SCLK0

#01 : 1

Receiving data clock of SPI0 is delayed 2 half SPI_SCLK0 clock cycle,

#10 : 2

Receiving data clock of SPI0 is delayed 3 half SPI_SCLK0 clock cycle,

#11 : 3

Receiving data clock of SPI0 is delayed 1 half SPI_SCLK0 clock cycle ,

End of enumeration elements list.


SPI0_CLKDIV (CLKDIV)

Clock Divider Register (Master Only)
address_offset : 0x4 Bytes (0x0)
size : -1 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0

SPI0_CLKDIV SPI0_CLKDIV read-write 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DIVIDER

DIVIDER : Clock Divider Register (Master Mode Only) SPI0 clock pin SPI_SCLK0 output clock frequency is SPI0_CIN/(DIVIDER+1).DIVIDER can be from 0 to 65535. But due to I/O transaction speed limitation, the maximum clock of SPI_SCLK0 is 23 MHz. So the DIVIDER value cannot be set to 0 when RC_46M is selected as the SPI clock source.
bits : 0 - 15 (16 bit)
access : read-write


SPI0_SSCTL (SSCTL)

Slave Select Register
address_offset : 0x8 Bytes (0x0)
size : -1 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0

SPI0_SSCTL SPI0_SSCTL read-write 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Resets to Resets to 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SS SS_LVL AUTOSS SS_LTRIG LTRIG_FLAG

SS : Slave Select Pin Control If AUTOSS bit is 0, SPI0_SSB00 and SPI0_SSB01 output are determined by SS[0] and SS[1] respectively. Note 1: This interface can only drive one device/slave at a given time. Therefore, the slaves select of the selected device must be set to its active level before starting any read or write transfer. Note 2: SPIn_SSB10 is also defined as device/slave select input signal in slave mode. And that the slave select input signal must be driven by edge active trigger which level depend on the SS_LVL setting, otherwise the SPI slave core will go into dead path until the edge active trigger again or reset the SPI core by software.
bits : 0 - 1 (2 bit)
access : read-write

Enumeration:

0 : 0

Any bit location of this field forces the pin to inactive state. Any bit location of this field will select appropriate SPI0_SSB00/SPI0_SSB01 pin to be driven to inactive state

1 : 1

Any bit location of this field forces the proper SPIn_SSBx0/SPIn_SSBx1 pin to an active state Any bit location of this field will select appropriate SPIn_SSB00/SPIn_SSB01 pin to be automatically driven to active state for the duration of the transmit/receive, and to be driven to inactive state for the rest of the time. The active state of SPI0_SSB00/SPI0_SSB01 is specified in SS_LVL bit (SPI_SSCTL[2])

End of enumeration elements list.

SS_LVL : Slave Select Active Level It defines the active level of device/slave select signal.
bits : 2 - 2 (1 bit)
access : read-write

Enumeration:

#0 : 0

The SPI_SSB00/SPI_SSB01 slave select signal is active Low

#1 : 1

The SPI_SSB00/SPI_SSB01 slave select signal is active High

End of enumeration elements list.

AUTOSS : Automatic Slave Select (Master Mode Only)
bits : 3 - 3 (1 bit)
access : read-write

Enumeration:

#0 : 0

Slave select signal (SPI_SSB00/SPI_SSB01) is asserted and de-asserted by setting and clearing related bit SS

#1 : 1

Slave select signal (SPI_SSB00/SPI_SSB01) is generated automatically. It means that slave select signal, which is set in bits SS, is asserted by the SPI controller when transmit/receive is started by setting GO_BUSY, and is de-asserted after the transfer is finished

End of enumeration elements list.

SS_LTRIG : Slave Select Level Trigger (Slave Mode Only)
bits : 4 - 4 (1 bit)
access : read-write

Enumeration:

#0 : 0

The input slave select signal is edge-trigger. This is the default value

#1 : 1

The slave select signal will be level-trigger. It depends on SS_LVL to decide the signal is active low or active high

End of enumeration elements list.

LTRIG_FLAG : Level Trigger Flag (Slave Mode Only) When the SS_LTRIG bit is set in slave mode, this bit can be read to indicate the received bit number meets the requirement or not. Note 1: This bit is READ only.
bits : 5 - 5 (1 bit)
access : read-write

Enumeration:

#0 : 0

One of the received number and the received bit length doesn't meet the requirement in one transfer

#1 : 1

The received number and received bits meet the requirement which is defined in TX_NUM and DWIDTH among one transfer

End of enumeration elements list.



Is something missing? Is something wrong? can you help correct it ? Please contact us at info@chipselect.org !

This website is sponsored by EmbeetleEmbeetle, an IDE designed from scratch for embedded software developers.