223 lines
6.4 KiB
C
223 lines
6.4 KiB
C
/*""FILE COMMENT""*******************************************************
|
|
* System Name : Serial Peripheral Interface API for RX62Nxx
|
|
* File Name : r_pdl_spi.h
|
|
* Version : 1.02
|
|
* Contents : SPI API header
|
|
* Customer :
|
|
* Model :
|
|
* Order :
|
|
* CPU : RX
|
|
* Compiler : RXC
|
|
* OS : Nothing
|
|
* Programmer :
|
|
* Note :
|
|
************************************************************************
|
|
* Copyright, 2011. Renesas Electronics Corporation
|
|
* and Renesas Solutions Corporation
|
|
************************************************************************
|
|
* History : 2011.04.08
|
|
* : Ver 1.02
|
|
* : CS-5 release.
|
|
*""FILE COMMENT END""**************************************************/
|
|
|
|
#ifndef R_PDL_SPI_H
|
|
#define R_PDL_SPI_H
|
|
|
|
#include "r_pdl_common_defs_RX62Nxx.h"
|
|
|
|
/* Function prototypes */
|
|
bool R_SPI_Create(
|
|
uint8_t,
|
|
uint32_t,
|
|
uint32_t,
|
|
uint32_t,
|
|
uint32_t
|
|
);
|
|
bool R_SPI_Destroy(
|
|
uint8_t
|
|
);
|
|
bool R_SPI_Command(
|
|
uint8_t,
|
|
uint8_t,
|
|
uint32_t,
|
|
uint8_t
|
|
);
|
|
bool R_SPI_Transfer(
|
|
uint8_t,
|
|
uint8_t,
|
|
uint32_t *,
|
|
uint32_t *,
|
|
uint16_t,
|
|
void *,
|
|
uint8_t
|
|
);
|
|
bool R_SPI_Control(
|
|
uint8_t,
|
|
uint8_t,
|
|
uint32_t
|
|
);
|
|
bool R_SPI_GetStatus(
|
|
uint8_t,
|
|
uint16_t *,
|
|
uint16_t *
|
|
);
|
|
|
|
/* Connection mode */
|
|
#define PDL_SPI_MODE_SPI_MASTER 0x00000001ul
|
|
#define PDL_SPI_MODE_SPI_MULTI_MASTER 0x00000002ul
|
|
#define PDL_SPI_MODE_SPI_SLAVE 0x00000004ul
|
|
#define PDL_SCI_MODE_SYNC_MASTER 0x00000008ul
|
|
#define PDL_SCI_MODE_SYNC_SLAVE 0x00000010ul
|
|
|
|
/* Reception control */
|
|
#define PDL_SPI_FULL_DUPLEX 0x00000020ul
|
|
#define PDL_SPI_TRANSMIT_ONLY 0x00000040ul
|
|
|
|
/* Pin selection and control */
|
|
#define PDL_SPI_PIN_CMOS 0x00000080ul
|
|
#define PDL_SPI_PIN_OPEN_DRAIN 0x00000100ul
|
|
#define PDL_SPI_PIN_A 0x00000200ul
|
|
#define PDL_SPI_PIN_B 0x00000400ul
|
|
#define PDL_SPI_PIN_RSPCK_ENABLE 0x00000800ul
|
|
#define PDL_SPI_PIN_RSPCK_DISABLE 0x00001000ul
|
|
#define PDL_SPI_PIN_MOSI_ENABLE 0x00002000ul
|
|
#define PDL_SPI_PIN_MOSI_DISABLE 0x00004000ul
|
|
#define PDL_SPI_PIN_MISO_ENABLE 0x00008000ul
|
|
#define PDL_SPI_PIN_MISO_DISABLE 0x00010000ul
|
|
#define PDL_SPI_PIN_SSL0_LOW 0x00020000ul
|
|
#define PDL_SPI_PIN_SSL0_HIGH 0x00040000ul
|
|
#define PDL_SPI_PIN_SSL0_DISABLE 0x00080000ul
|
|
#define PDL_SPI_PIN_SSL1_LOW 0x00100000ul
|
|
#define PDL_SPI_PIN_SSL1_HIGH 0x00200000ul
|
|
#define PDL_SPI_PIN_SSL1_DISABLE 0x00400000ul
|
|
#define PDL_SPI_PIN_SSL2_LOW 0x00800000ul
|
|
#define PDL_SPI_PIN_SSL2_HIGH 0x01000000ul
|
|
#define PDL_SPI_PIN_SSL2_DISABLE 0x02000000ul
|
|
#define PDL_SPI_PIN_SSL3_LOW 0x04000000ul
|
|
#define PDL_SPI_PIN_SSL3_HIGH 0x08000000ul
|
|
#define PDL_SPI_PIN_SSL3_DISABLE 0x10000000ul
|
|
#define PDL_SPI_PIN_MOSI_IDLE_LAST 0x20000000ul
|
|
#define PDL_SPI_PIN_MOSI_IDLE_LOW 0x40000000ul
|
|
#define PDL_SPI_PIN_MOSI_IDLE_HIGH 0x80000000ul
|
|
|
|
/* Buffer size */
|
|
#define PDL_SPI_BUFFER_64 0x00000001ul
|
|
#define PDL_SPI_BUFFER_128 0x00000002ul
|
|
|
|
/* Frame configuration selection */
|
|
#define PDL_SPI_FRAME_1_1 0x00000004ul
|
|
#define PDL_SPI_FRAME_1_2 0x00000008ul
|
|
#define PDL_SPI_FRAME_1_3 0x00000010ul
|
|
#define PDL_SPI_FRAME_1_4 0x00000020ul
|
|
#define PDL_SPI_FRAME_2_1 0x00000040ul
|
|
#define PDL_SPI_FRAME_2_2 0x00000080ul
|
|
#define PDL_SPI_FRAME_3 0x00000100ul
|
|
#define PDL_SPI_FRAME_4 0x00000200ul
|
|
#define PDL_SPI_FRAME_5 0x00000400ul
|
|
#define PDL_SPI_FRAME_6 0x00000800ul
|
|
#define PDL_SPI_FRAME_7 0x00001000ul
|
|
#define PDL_SPI_FRAME_8 0x00002000ul
|
|
|
|
/* Parity bit control */
|
|
#define PDL_SPI_PARITY_NONE 0x00004000ul
|
|
#define PDL_SPI_PARITY_EVEN 0x00008000ul
|
|
#define PDL_SPI_PARITY_ODD 0x00010000ul
|
|
|
|
/* Extended clock delay */
|
|
#define PDL_SPI_CLOCK_DELAY_1 0x00000001ul
|
|
#define PDL_SPI_CLOCK_DELAY_2 0x00000002ul
|
|
#define PDL_SPI_CLOCK_DELAY_3 0x00000004ul
|
|
#define PDL_SPI_CLOCK_DELAY_4 0x00000008ul
|
|
#define PDL_SPI_CLOCK_DELAY_5 0x00000010ul
|
|
#define PDL_SPI_CLOCK_DELAY_6 0x00000020ul
|
|
#define PDL_SPI_CLOCK_DELAY_7 0x00000040ul
|
|
#define PDL_SPI_CLOCK_DELAY_8 0x00000080ul
|
|
|
|
/* Extended SSL negation delay */
|
|
#define PDL_SPI_SSL_DELAY_1 0x00000100ul
|
|
#define PDL_SPI_SSL_DELAY_2 0x00000200ul
|
|
#define PDL_SPI_SSL_DELAY_3 0x00000400ul
|
|
#define PDL_SPI_SSL_DELAY_4 0x00000800ul
|
|
#define PDL_SPI_SSL_DELAY_5 0x00001000ul
|
|
#define PDL_SPI_SSL_DELAY_6 0x00002000ul
|
|
#define PDL_SPI_SSL_DELAY_7 0x00004000ul
|
|
#define PDL_SPI_SSL_DELAY_8 0x00008000ul
|
|
|
|
/* Extended next-access delay */
|
|
#define PDL_SPI_NEXT_DELAY_1 0x00010000ul
|
|
#define PDL_SPI_NEXT_DELAY_2 0x00020000ul
|
|
#define PDL_SPI_NEXT_DELAY_3 0x00040000ul
|
|
#define PDL_SPI_NEXT_DELAY_4 0x00080000ul
|
|
#define PDL_SPI_NEXT_DELAY_5 0x00100000ul
|
|
#define PDL_SPI_NEXT_DELAY_6 0x00200000ul
|
|
#define PDL_SPI_NEXT_DELAY_7 0x00400000ul
|
|
#define PDL_SPI_NEXT_DELAY_8 0x00800000ul
|
|
|
|
/* Channel control */
|
|
#define PDL_SPI_DISABLE 0x01u
|
|
|
|
/* Loopback control */
|
|
#define PDL_SPI_LOOPBACK_DISABLE 0x02u
|
|
#define PDL_SPI_LOOPBACK_DIRECT 0x04u
|
|
#define PDL_SPI_LOOPBACK_REVERSED 0x08u
|
|
|
|
/* Clock phase and polarity */
|
|
#define PDL_SPI_CLOCK_MODE_0 0x00000001ul
|
|
#define PDL_SPI_CLOCK_MODE_1 0x00000002ul
|
|
#define PDL_SPI_CLOCK_MODE_2 0x00000004ul
|
|
#define PDL_SPI_CLOCK_MODE_3 0x00000008ul
|
|
|
|
/* Clock division */
|
|
#define PDL_SPI_DIV_1 0x00000010ul
|
|
#define PDL_SPI_DIV_2 0x00000020ul
|
|
#define PDL_SPI_DIV_4 0x00000040ul
|
|
#define PDL_SPI_DIV_8 0x00000080ul
|
|
|
|
/* SSL assertion */
|
|
#define PDL_SPI_ASSERT_SSL0 0x00000100ul
|
|
#define PDL_SPI_ASSERT_SSL1 0x00000200ul
|
|
#define PDL_SPI_ASSERT_SSL2 0x00000400ul
|
|
#define PDL_SPI_ASSERT_SSL3 0x00000800ul
|
|
|
|
/* SSL negation */
|
|
#define PDL_SPI_SSL_NEGATE 0x00001000ul
|
|
#define PDL_SPI_SSL_KEEP 0x00002000ul
|
|
|
|
/* Frame data length */
|
|
#define PDL_SPI_LENGTH_8 0x00004000ul
|
|
#define PDL_SPI_LENGTH_9 0x00008000ul
|
|
#define PDL_SPI_LENGTH_10 0x00010000ul
|
|
#define PDL_SPI_LENGTH_11 0x00020000ul
|
|
#define PDL_SPI_LENGTH_12 0x00040000ul
|
|
#define PDL_SPI_LENGTH_13 0x00080000ul
|
|
#define PDL_SPI_LENGTH_14 0x00100000ul
|
|
#define PDL_SPI_LENGTH_15 0x00200000ul
|
|
#define PDL_SPI_LENGTH_16 0x00400000ul
|
|
#define PDL_SPI_LENGTH_20 0x00800000ul
|
|
#define PDL_SPI_LENGTH_24 0x01000000ul
|
|
#define PDL_SPI_LENGTH_32 0x02000000ul
|
|
|
|
/* Data transfer format */
|
|
#define PDL_SPI_MSB_FIRST 0x04000000ul
|
|
#define PDL_SPI_LSB_FIRST 0x08000000ul
|
|
|
|
/* Extended timing selection */
|
|
#define PDL_SPI_CLOCK_DELAY_MINIMUM 0x01u
|
|
#define PDL_SPI_CLOCK_DELAY_EXTENDED 0x02u
|
|
|
|
/* Extended timing selection */
|
|
#define PDL_SPI_SSL_DELAY_MINIMUM 0x04u
|
|
#define PDL_SPI_SSL_DELAY_EXTENDED 0x08u
|
|
|
|
/* Next-access delay */
|
|
#define PDL_SPI_NEXT_DELAY_MINIMUM 0x10u
|
|
#define PDL_SPI_NEXT_DELAY_EXTENDED 0x20u
|
|
|
|
/* DMAC / DTC trigger control */
|
|
#define PDL_SPI_DMAC_DTC_TRIGGER_DISABLE 0x01u
|
|
#define PDL_SPI_DMAC_TRIGGER_ENABLE 0x02u
|
|
#define PDL_SPI_DTC_TRIGGER_ENABLE 0x04u
|
|
|
|
#endif
|
|
/* End of file */
|