# spi_host_hw2

SPI host, driving MSSP2 module

Author | Sebastien Lelong Copyright © 2011..2025, all rights reserved.
Adapted-by | Rob Jansen
Compiler | 2.5r9

Description

    SPI host hardware control.
                 Routines for sending and receiving through the SPI in host mode, using MSSP2

Sources

    Good overview of SPI at http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
             Also at: http://elm-chan.org/docs/spi_e.html

Notes

    This is a rough duplication of spi_host_hw.jal at rev 1537,originally written by
           William Welch, from which MSSP1 registers were modified to match MSSP2 names.

Dependencies

- spi_common

## Summary

### Global variables/contants

### Procedures

- `spi_host_hw2_set_mode_00()`
- `spi_host_hw2_set_mode(byte in spi_mode)`
- `spi_host_hw2'put(byte in data)`
- `spi_host_hw2_set_mode_11()`
- `spi2_init(byte in spi_mode, byte in spi_rate)`
- `spi_host_hw2_set_speed(byte in spi_rate)`
- `spi_host_hw2_set_mode_10()`
- `spi_host_hw2_set_mode_01()`

### Functions

- `spi_host_hw2'get() return byte`
- `spi_host_hw2_exchange(byte in m_data) return byte`

## API details

### Global variables/contants

### Procedures

- `spi_host_hw2_set_mode_00()`

      Clock SPI data when SCK goes from low to high. SCK is low inactive low.

- `spi_host_hw2_set_mode(byte in spi_mode)`

      Specify SPI mode. Ssee spi_common for predefined constant you can use
      as parameters.

- `spi_host_hw2'put(byte in data)`

      Half-duplex convenience function. send data to slave, discard reply.

- `spi_host_hw2_set_mode_11()`

      Clock SPI data when SCK goes from low to high. SCK is inactive high.

- `spi2_init(byte in spi_mode, byte in spi_rate)`

      Initialize the SPI registers and enable the SPI interface.

- `spi_host_hw2_set_speed(byte in spi_rate)`

      Set the SPI host speed, see spi_common.jal. Some newer PICs have a separate
      baud rate register, in that case SCK = Fosc / (2 * (spi_rate + 1)).

- `spi_host_hw2_set_mode_10()`

      Clock SPI data when SCK goes from high to low. SCK is inactive high.

- `spi_host_hw2_set_mode_01()`

      Clock SPI data when SCK goes from high to low. SCK is inactive low.

### Functions

- `spi_host_hw2'get() return byte`

      Half-duplex convenience function. send 0xFF, get slave data.

- `spi_host_hw2_exchange(byte in m_data) return byte`

      SPI is full-duplex, so we exchange host and slave data byte

## Related samples

Here are the list of samples which use this library:

16f1829 | 16f1829_nrf24l01.jal
18f15q40 | 18f15q40_mcp23s08.jal
18f15q40 | 18f15q40_spi2.jal