Defines | |
#define | MIOS32_SPI0_PTR LPC_SSP0 |
#define | MIOS32_SPI0_RCLK1_INIT { MIOS32_SYS_LPC_PINSEL(1, 21, 0); MIOS32_SYS_LPC_PINDIR(1, 21, 1); } |
#define | MIOS32_SPI0_RCLK1_SET(v) { MIOS32_SYS_LPC_PINSET(1, 21, v); } |
#define | MIOS32_SPI0_RCLK2_INIT { MIOS32_SYS_LPC_PINSEL(1, 22, 0); MIOS32_SYS_LPC_PINDIR(1, 22, 1); } |
#define | MIOS32_SPI0_RCLK2_SET(v) { MIOS32_SYS_LPC_PINSET(1, 22, v); } |
#define | MIOS32_SPI0_SCLK_INIT { MIOS32_SYS_LPC_PINSEL(1, 20, 3); } |
#define | MIOS32_SPI0_MISO_INIT { MIOS32_SYS_LPC_PINSEL(1, 23, 3); } |
#define | MIOS32_SPI0_MOSI_INIT { MIOS32_SYS_LPC_PINSEL(1, 24, 3); } |
#define | MIOS32_SPI0_PP_INIT { LPC_PINCON->PINMODE_OD1 &= ~((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) | (1 << 20)); } |
#define | MIOS32_SPI0_OD_INIT { LPC_PINCON->PINMODE_OD1 |= ((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) | (1 << 20)); } |
#define | MIOS32_SPI0_IN_INIT |
#define | MIOS32_SPI0_DMA_TX_REQ 0 |
#define | MIOS32_SPI0_DMA_RX_REQ 1 |
#define | MIOS32_SPI0_DMA_TX_CHN 0 |
#define | MIOS32_SPI0_DMA_RX_CHN 1 |
#define | MIOS32_SPI1_PTR LPC_SSP1 |
#define | MIOS32_SPI1_RCLK1_INIT { MIOS32_SYS_LPC_PINSEL(0, 6, 0); MIOS32_SYS_LPC_PINDIR(0, 6, 1); } |
#define | MIOS32_SPI1_RCLK1_SET(v) { MIOS32_SYS_LPC_PINSET(0, 6, v); } |
#define | MIOS32_SPI1_RCLK2_INIT { MIOS32_SYS_LPC_PINSEL(3, 26, 0); MIOS32_SYS_LPC_PINDIR(3, 26, 1); } |
#define | MIOS32_SPI1_RCLK2_SET(v) { MIOS32_SYS_LPC_PINSET(3, 26, v); } |
#define | MIOS32_SPI1_SCLK_INIT { MIOS32_SYS_LPC_PINSEL(0, 7, 2); } |
#define | MIOS32_SPI1_MISO_INIT { MIOS32_SYS_LPC_PINSEL(0, 8, 2); } |
#define | MIOS32_SPI1_MOSI_INIT { MIOS32_SYS_LPC_PINSEL(0, 9, 2); } |
#define | MIOS32_SPI1_PP_INIT { LPC_PINCON->PINMODE_OD0 &= ~((1 << 9) | (1 << 8) | (1 << 7) | (1 << 6)); LPC_PINCON->PINMODE_OD3 &= ~((1 << 26)); } |
#define | MIOS32_SPI1_OD_INIT { LPC_PINCON->PINMODE_OD0 |= ((1 << 9) | (1 << 8) | (1 << 7) | (1 << 6)); LPC_PINCON->PINMODE_OD3 |= ((1 << 26)); } |
#define | MIOS32_SPI1_IN_INIT |
#define | MIOS32_SPI1_DMA_TX_REQ 2 |
#define | MIOS32_SPI1_DMA_RX_REQ 3 |
#define | MIOS32_SPI1_DMA_TX_CHN 2 |
#define | MIOS32_SPI1_DMA_RX_CHN 3 |
#define | MIOS32_SPI2_PTR LPC_SPI |
#define | MIOS32_SPI2_RCLK1_INIT { MIOS32_SYS_LPC_PINSEL(0, 16, 0); MIOS32_SYS_LPC_PINDIR(0, 16, 1); } |
#define | MIOS32_SPI2_RCLK1_SET(v) { MIOS32_SYS_LPC_PINSET(0, 16, v); } |
#define | MIOS32_SPI2_RCLK2_INIT { MIOS32_SYS_LPC_PINSEL(0, 21, 0); MIOS32_SYS_LPC_PINDIR(0, 21, 1); } |
#define | MIOS32_SPI2_RCLK2_SET(v) { MIOS32_SYS_LPC_PINSET(0, 21, v); } |
#define | MIOS32_SPI2_SCLK_INIT { MIOS32_SYS_LPC_PINSEL(0, 15, 3); } |
#define | MIOS32_SPI2_MISO_INIT { MIOS32_SYS_LPC_PINSEL(0, 17, 3); } |
#define | MIOS32_SPI2_MOSI_INIT { MIOS32_SYS_LPC_PINSEL(0, 18, 3); } |
#define | MIOS32_SPI2_PP_INIT { LPC_PINCON->PINMODE_OD0 &= ~((1 << 21) | (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15)); } |
#define | MIOS32_SPI2_OD_INIT { LPC_PINCON->PINMODE_OD0 |= ((1 << 21) | (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15)); } |
#define | MIOS32_SPI2_IN_INIT |
#define | MIOS32_SPI0_DMA_IRQHANDLER_FUNC void DMAChannel2_IRQHandler(void) |
#define | MIOS32_SPI1_DMA_IRQHANDLER_FUNC void DMAChannel4_IRQHandler(void) |
#define | MIOS32_SPI2_DMA_IRQHANDLER_FUNC NULL |
#define | MIOS32_SPI0_PTR SPI1 |
#define | MIOS32_SPI0_DMA_RX_PTR DMA1_Channel2 |
#define | MIOS32_SPI0_DMA_TX_PTR DMA1_Channel3 |
#define | MIOS32_SPI0_DMA_RX_IRQ_FLAGS (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2) |
#define | MIOS32_SPI0_DMA_IRQ_CHANNEL DMA1_Channel2_IRQn |
#define | MIOS32_SPI0_DMA_IRQHANDLER_FUNC void DMA1_Channel2_IRQHandler(void) |
#define | MIOS32_SPI0_RCLK1_PORT GPIOA |
#define | MIOS32_SPI0_RCLK1_PIN GPIO_Pin_4 |
#define | MIOS32_SPI0_RCLK2_PORT GPIOC |
#define | MIOS32_SPI0_RCLK2_PIN GPIO_Pin_15 |
#define | MIOS32_SPI0_SCLK_PORT GPIOA |
#define | MIOS32_SPI0_SCLK_PIN GPIO_Pin_5 |
#define | MIOS32_SPI0_MISO_PORT GPIOA |
#define | MIOS32_SPI0_MISO_PIN GPIO_Pin_6 |
#define | MIOS32_SPI0_MOSI_PORT GPIOA |
#define | MIOS32_SPI0_MOSI_PIN GPIO_Pin_7 |
#define | MIOS32_SPI1_PTR SPI2 |
#define | MIOS32_SPI1_DMA_RX_PTR DMA1_Channel4 |
#define | MIOS32_SPI1_DMA_TX_PTR DMA1_Channel5 |
#define | MIOS32_SPI1_DMA_RX_IRQ_FLAGS (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4) |
#define | MIOS32_SPI1_DMA_IRQ_CHANNEL DMA1_Channel4_IRQn |
#define | MIOS32_SPI1_DMA_IRQHANDLER_FUNC void DMA1_Channel4_IRQHandler(void) |
#define | MIOS32_SPI1_RCLK1_PORT GPIOB |
#define | MIOS32_SPI1_RCLK1_PIN GPIO_Pin_12 |
#define | MIOS32_SPI1_SCLK_PORT GPIOB |
#define | MIOS32_SPI1_SCLK_PIN GPIO_Pin_13 |
#define | MIOS32_SPI1_MISO_PORT GPIOB |
#define | MIOS32_SPI1_MISO_PIN GPIO_Pin_14 |
#define | MIOS32_SPI1_MOSI_PORT GPIOB |
#define | MIOS32_SPI1_MOSI_PIN GPIO_Pin_15 |
#define | MIOS32_SPI2_PTR NULL |
#define | MIOS32_SPI2_DMA_RX_PTR NULL |
#define | MIOS32_SPI2_DMA_TX_PTR NULL |
#define | MIOS32_SPI2_DMA_RX_IRQ_FLAGS 0 |
#define | MIOS32_SPI2_DMA_IRQ_CHANNEL NULL |
#define | MIOS32_SPI2_DMA_IRQHANDLER_FUNC NULL |
#define | MIOS32_SPI2_RCLK1_PORT GPIOC |
#define | MIOS32_SPI2_RCLK1_PIN GPIO_Pin_13 |
#define | MIOS32_SPI2_RCLK2_PORT GPIOC |
#define | MIOS32_SPI2_RCLK2_PIN GPIO_Pin_14 |
#define | MIOS32_SPI2_SCLK_PORT GPIOB |
#define | MIOS32_SPI2_SCLK_PIN GPIO_Pin_6 |
#define | MIOS32_SPI2_MISO_PORT GPIOB |
#define | MIOS32_SPI2_MISO_PIN GPIO_Pin_7 |
#define | MIOS32_SPI2_MOSI_PORT GPIOB |
#define | MIOS32_SPI2_MOSI_PIN GPIO_Pin_5 |
#define | MIOS32_SPI2_SET_MOSI(b) { MIOS32_SPI2_MOSI_PORT->BSRR = (b) ? MIOS32_SPI2_MOSI_PIN : (MIOS32_SPI2_MOSI_PIN << 16); } |
#define | MIOS32_SPI2_GET_MISO ( MIOS32_SPI2_MISO_PORT->IDR & MIOS32_SPI2_MISO_PIN ) |
#define | MIOS32_SPI2_SET_SCLK_0 { MIOS32_SPI2_SCLK_PORT->BRR = MIOS32_SPI2_SCLK_PIN; } |
#define | MIOS32_SPI2_SET_SCLK_1 { MIOS32_SPI2_SCLK_PORT->BSRR = MIOS32_SPI2_SCLK_PIN; } |
#define | CCR_ENABLE ((uint32_t)0x00000001) |
#define | MIOS32_SPI0_PTR SPI1 |
#define | MIOS32_SPI0_DMA_RX_PTR DMA2_Stream2 |
#define | MIOS32_SPI0_DMA_RX_CHN DMA_Channel_3 |
#define | MIOS32_SPI0_DMA_RX_IRQ_FLAGS (DMA_FLAG_TCIF2 | DMA_FLAG_TEIF2 | DMA_FLAG_HTIF2 | DMA_FLAG_FEIF2) |
#define | MIOS32_SPI0_DMA_TX_PTR DMA2_Stream3 |
#define | MIOS32_SPI0_DMA_TX_CHN DMA_Channel_3 |
#define | MIOS32_SPI0_DMA_TX_IRQ_FLAGS (DMA_FLAG_TCIF3 | DMA_FLAG_TEIF3 | DMA_FLAG_HTIF3 | DMA_FLAG_FEIF3) |
#define | MIOS32_SPI0_DMA_IRQ_CHANNEL DMA2_Stream2_IRQn |
#define | MIOS32_SPI0_DMA_IRQHANDLER_FUNC void DMA2_Stream2_IRQHandler(void) |
#define | MIOS32_SPI0_RCLK1_PORT GPIOB |
#define | MIOS32_SPI0_RCLK1_PIN GPIO_Pin_2 |
#define | MIOS32_SPI0_RCLK1_AF { } |
#define | MIOS32_SPI0_RCLK2_PORT GPIOD |
#define | MIOS32_SPI0_RCLK2_PIN GPIO_Pin_11 |
#define | MIOS32_SPI0_RCLK2_AF { } |
#define | MIOS32_SPI0_SCLK_PORT GPIOA |
#define | MIOS32_SPI0_SCLK_PIN GPIO_Pin_5 |
#define | MIOS32_SPI0_SCLK_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1); } |
#define | MIOS32_SPI0_MISO_PORT GPIOA |
#define | MIOS32_SPI0_MISO_PIN GPIO_Pin_6 |
#define | MIOS32_SPI0_MISO_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1); } |
#define | MIOS32_SPI0_MOSI_PORT GPIOA |
#define | MIOS32_SPI0_MOSI_PIN GPIO_Pin_7 |
#define | MIOS32_SPI0_MOSI_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1); } |
#define | MIOS32_SPI1_PTR SPI2 |
#define | MIOS32_SPI1_DMA_RX_PTR DMA1_Stream3 |
#define | MIOS32_SPI1_DMA_RX_CHN DMA_Channel_0 |
#define | MIOS32_SPI1_DMA_RX_IRQ_FLAGS (DMA_FLAG_TCIF3 | DMA_FLAG_TEIF3 | DMA_FLAG_HTIF3 | DMA_FLAG_FEIF3) |
#define | MIOS32_SPI1_DMA_TX_PTR DMA1_Stream4 |
#define | MIOS32_SPI1_DMA_TX_CHN DMA_Channel_0 |
#define | MIOS32_SPI1_DMA_TX_IRQ_FLAGS (DMA_FLAG_TCIF4 | DMA_FLAG_TEIF4 | DMA_FLAG_HTIF4 | DMA_FLAG_FEIF4) |
#define | MIOS32_SPI1_DMA_IRQ_CHANNEL DMA1_Stream3_IRQn |
#define | MIOS32_SPI1_DMA_IRQHANDLER_FUNC void DMA1_Stream3_IRQHandler(void) |
#define | MIOS32_SPI1_RCLK1_PORT GPIOB |
#define | MIOS32_SPI1_RCLK1_PIN GPIO_Pin_12 |
#define | MIOS32_SPI1_RCLK1_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_SPI2); } |
#define | MIOS32_SPI1_RCLK2_PORT GPIOD |
#define | MIOS32_SPI1_RCLK2_PIN GPIO_Pin_10 |
#define | MIOS32_SPI1_RCLK2_AF { } |
#define | MIOS32_SPI1_SCLK_PORT GPIOB |
#define | MIOS32_SPI1_SCLK_PIN GPIO_Pin_13 |
#define | MIOS32_SPI1_SCLK_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2); } |
#define | MIOS32_SPI1_MISO_PORT GPIOB |
#define | MIOS32_SPI1_MISO_PIN GPIO_Pin_14 |
#define | MIOS32_SPI1_MISO_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2); } |
#define | MIOS32_SPI1_MOSI_PORT GPIOB |
#define | MIOS32_SPI1_MOSI_PIN GPIO_Pin_15 |
#define | MIOS32_SPI1_MOSI_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2); } |
#define | MIOS32_SPI2_PTR SPI3 |
#define | MIOS32_SPI2_DMA_RX_PTR DMA1_Stream2 |
#define | MIOS32_SPI2_DMA_RX_CHN DMA_Channel_0 |
#define | MIOS32_SPI2_DMA_RX_IRQ_FLAGS (DMA_FLAG_TCIF2 | DMA_FLAG_TEIF2 | DMA_FLAG_HTIF2 | DMA_FLAG_FEIF2) |
#define | MIOS32_SPI2_DMA_TX_PTR DMA1_Stream5 |
#define | MIOS32_SPI2_DMA_TX_CHN DMA_Channel_0 |
#define | MIOS32_SPI2_DMA_TX_IRQ_FLAGS (DMA_FLAG_TCIF5 | DMA_FLAG_TEIF5 | DMA_FLAG_HTIF5 | DMA_FLAG_FEIF5) |
#define | MIOS32_SPI2_DMA_IRQ_CHANNEL DMA1_Stream2_IRQn |
#define | MIOS32_SPI2_DMA_IRQHANDLER_FUNC void DMA1_Stream2_IRQHandler(void) |
#define | MIOS32_SPI2_RCLK1_PORT GPIOA |
#define | MIOS32_SPI2_RCLK1_PIN GPIO_Pin_15 |
#define | MIOS32_SPI2_RCLK1_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_SPI3); } |
#define | MIOS32_SPI2_RCLK2_PORT GPIOB |
#define | MIOS32_SPI2_RCLK2_PIN GPIO_Pin_8 |
#define | MIOS32_SPI2_RCLK2_AF { } |
#define | MIOS32_SPI2_SCLK_PORT GPIOB |
#define | MIOS32_SPI2_SCLK_PIN GPIO_Pin_3 |
#define | MIOS32_SPI2_SCLK_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI3); } |
#define | MIOS32_SPI2_MISO_PORT GPIOB |
#define | MIOS32_SPI2_MISO_PIN GPIO_Pin_4 |
#define | MIOS32_SPI2_MISO_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI3); } |
#define | MIOS32_SPI2_MOSI_PORT GPIOB |
#define | MIOS32_SPI2_MOSI_PIN GPIO_Pin_5 |
#define | MIOS32_SPI2_MOSI_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI3); } |
#define | CCR_ENABLE ((uint32_t)0x00000001) |
Functions | |
s32 | MIOS32_SPI_Init (u32 mode) |
s32 | MIOS32_SPI_IO_Init (u8 spi, mios32_spi_pin_driver_t spi_pin_driver) |
s32 | MIOS32_SPI_TransferModeInit (u8 spi, mios32_spi_mode_t spi_mode, mios32_spi_prescaler_t spi_prescaler) |
s32 | MIOS32_SPI_RC_PinSet (u8 spi, u8 rc_pin, u8 pin_value) |
s32 | MIOS32_SPI_TransferByte (u8 spi, u8 b) |
s32 | MIOS32_SPI_TransferBlock (u8 spi, u8 *send_buffer, u8 *receive_buffer, u16 len, void *callback) |
Hardware Abstraction Layer for SPI ports of LPC17xx
Three ports are provided at J16 (SPI0), J8/9 (SPI1) and J19 (SPI2) of the MBHP_CORE_LTC17 module..
All SPI ports provide two RCLK (alias Chip Select) lines.
J16 is normaly connected to a SD Card
J8/9 is normaly connected to the SRIO chain to scan DIN/DOUT modules.
J19 doesn't support DMA transfers, so that MIOS32_SPI_TransferBlock() will consume CPU time (but the callback handling does work).
If SPI low-level functions should be used to access other peripherals, please ensure that the appr. MIOS32_* drivers are disabled (e.g. add 'define MIOS32_DONT_USE_SDCARD' and 'define MIOS32_DONT_USE_ENC28J60' to your mios_config.h file)
Note that additional chip select lines can be easily added by using the remaining free GPIOs of the core module. Shared SPI ports should be arbitrated with (FreeRTOS based) Mutexes to avoid collisions!
Hardware Abstraction Layer for SPI ports of STM32
Three ports are provided at J16 (SPI0), J8/9 (SPI1) and J19 (SPI2) of the MBHP_CORE_STM32 module..
J16 provides two RCLK (alias Chip Select) lines, and is normaly connected to a SD Card or/and an Ethernet Interface like ENC28J60.
J8/9 only supports a single RCLK line, and is normaly connected to the SRIO chain to scan DIN/DOUT modules.
J19 provides two RCLK (alias Chip Select) lines.
It's a software emulated SPI, therefore the selected spi_prescaler has no effect! Bytes are transfered so fast as possible. The usage of MIOS32_SPI_PIN_DRIVER_STRONG is strongly recommented ;)
DMA transfers are not supported by the emulation, so that MIOS32_SPI_TransferBlock() will consume CPU time (but the callback handling does work).
If SPI low-level functions should be used to access other peripherals, please ensure that the appr. MIOS32_* drivers are disabled (e.g. add 'define MIOS32_DONT_USE_SDCARD' and 'define MIOS32_DONT_USE_ENC28J60' to your mios_config.h file)
Note that additional chip select lines can be easily added by using the remaining free GPIOs of the core module. Shared SPI ports should be arbitrated with (FreeRTOS based) Mutexes to avoid collisions!
Hardware Abstraction Layer for SPI ports of STM32F4
Three ports are provided at J16 (SPI0), J8/9 (SPI1) and J19 (SPI2) of the MBHP_CORE_STM32F4 module..
J16 provides SPI + two RCLK (alias Chip Select) lines at 3V, and is normaly connected to a SD Card or/and an Ethernet Interface like ENC28J60.
J8/9 provides SPI + two RCLK lines at 5V. It is normally connected to the SRIO chain to scan DIN/DOUT modules.
J19 provides SPI + two RCLK lines at 5V. It's some kind of general purpose SPI, and used to communicate with various MBHP modules, such as MBHP_AOUT* and MBHP_AINSER*
If SPI low-level functions should be used to access other peripherals, please ensure that the appr. MIOS32_* drivers are disabled (e.g. add 'define MIOS32_DONT_USE_SDCARD' and 'define MIOS32_DONT_USE_ENC28J60' to your mios_config.h file)
Note that additional chip select lines can be easily added by using the remaining free GPIOs of the core module. Shared SPI ports should be arbitrated with (FreeRTOS based) Mutexes to avoid collisions!
#define CCR_ENABLE ((uint32_t)0x00000001) |
#define CCR_ENABLE ((uint32_t)0x00000001) |
#define MIOS32_SPI0_DMA_IRQ_CHANNEL DMA2_Stream2_IRQn |
#define MIOS32_SPI0_DMA_IRQ_CHANNEL DMA1_Channel2_IRQn |
#define MIOS32_SPI0_DMA_IRQHANDLER_FUNC void DMA2_Stream2_IRQHandler(void) |
#define MIOS32_SPI0_DMA_IRQHANDLER_FUNC void DMA1_Channel2_IRQHandler(void) |
#define MIOS32_SPI0_DMA_IRQHANDLER_FUNC void DMAChannel2_IRQHandler(void) |
#define MIOS32_SPI0_DMA_RX_CHN DMA_Channel_3 |
#define MIOS32_SPI0_DMA_RX_CHN 1 |
#define MIOS32_SPI0_DMA_RX_IRQ_FLAGS (DMA_FLAG_TCIF2 | DMA_FLAG_TEIF2 | DMA_FLAG_HTIF2 | DMA_FLAG_FEIF2) |
#define MIOS32_SPI0_DMA_RX_IRQ_FLAGS (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2) |
#define MIOS32_SPI0_DMA_RX_PTR DMA2_Stream2 |
#define MIOS32_SPI0_DMA_RX_PTR DMA1_Channel2 |
#define MIOS32_SPI0_DMA_RX_REQ 1 |
#define MIOS32_SPI0_DMA_TX_CHN DMA_Channel_3 |
#define MIOS32_SPI0_DMA_TX_CHN 0 |
#define MIOS32_SPI0_DMA_TX_IRQ_FLAGS (DMA_FLAG_TCIF3 | DMA_FLAG_TEIF3 | DMA_FLAG_HTIF3 | DMA_FLAG_FEIF3) |
#define MIOS32_SPI0_DMA_TX_PTR DMA2_Stream3 |
#define MIOS32_SPI0_DMA_TX_PTR DMA1_Channel3 |
#define MIOS32_SPI0_DMA_TX_REQ 0 |
#define MIOS32_SPI0_IN_INIT |
{ MIOS32_SYS_LPC_PINMODE(1, 24, 2); \ MIOS32_SYS_LPC_PINMODE(1, 23, 0); \ MIOS32_SYS_LPC_PINMODE(1, 22, 2); \ MIOS32_SYS_LPC_PINMODE(1, 21, 2); \ MIOS32_SYS_LPC_PINMODE(1, 20, 2); }
#define MIOS32_SPI0_MISO_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1); } |
#define MIOS32_SPI0_MISO_INIT { MIOS32_SYS_LPC_PINSEL(1, 23, 3); } |
#define MIOS32_SPI0_MISO_PIN GPIO_Pin_6 |
#define MIOS32_SPI0_MISO_PIN GPIO_Pin_6 |
#define MIOS32_SPI0_MISO_PORT GPIOA |
#define MIOS32_SPI0_MISO_PORT GPIOA |
#define MIOS32_SPI0_MOSI_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1); } |
#define MIOS32_SPI0_MOSI_INIT { MIOS32_SYS_LPC_PINSEL(1, 24, 3); } |
#define MIOS32_SPI0_MOSI_PIN GPIO_Pin_7 |
#define MIOS32_SPI0_MOSI_PIN GPIO_Pin_7 |
#define MIOS32_SPI0_MOSI_PORT GPIOA |
#define MIOS32_SPI0_MOSI_PORT GPIOA |
#define MIOS32_SPI0_OD_INIT { LPC_PINCON->PINMODE_OD1 |= ((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) | (1 << 20)); } |
#define MIOS32_SPI0_PP_INIT { LPC_PINCON->PINMODE_OD1 &= ~((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) | (1 << 20)); } |
#define MIOS32_SPI0_PTR SPI1 |
#define MIOS32_SPI0_PTR SPI1 |
#define MIOS32_SPI0_PTR LPC_SSP0 |
#define MIOS32_SPI0_RCLK1_AF { } |
#define MIOS32_SPI0_RCLK1_INIT { MIOS32_SYS_LPC_PINSEL(1, 21, 0); MIOS32_SYS_LPC_PINDIR(1, 21, 1); } |
#define MIOS32_SPI0_RCLK1_PIN GPIO_Pin_2 |
#define MIOS32_SPI0_RCLK1_PIN GPIO_Pin_4 |
#define MIOS32_SPI0_RCLK1_PORT GPIOB |
#define MIOS32_SPI0_RCLK1_PORT GPIOA |
#define MIOS32_SPI0_RCLK1_SET | ( | v | ) | { MIOS32_SYS_LPC_PINSET(1, 21, v); } |
#define MIOS32_SPI0_RCLK2_AF { } |
#define MIOS32_SPI0_RCLK2_INIT { MIOS32_SYS_LPC_PINSEL(1, 22, 0); MIOS32_SYS_LPC_PINDIR(1, 22, 1); } |
#define MIOS32_SPI0_RCLK2_PIN GPIO_Pin_11 |
#define MIOS32_SPI0_RCLK2_PIN GPIO_Pin_15 |
#define MIOS32_SPI0_RCLK2_PORT GPIOD |
#define MIOS32_SPI0_RCLK2_PORT GPIOC |
#define MIOS32_SPI0_RCLK2_SET | ( | v | ) | { MIOS32_SYS_LPC_PINSET(1, 22, v); } |
#define MIOS32_SPI0_SCLK_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1); } |
#define MIOS32_SPI0_SCLK_INIT { MIOS32_SYS_LPC_PINSEL(1, 20, 3); } |
#define MIOS32_SPI0_SCLK_PIN GPIO_Pin_5 |
#define MIOS32_SPI0_SCLK_PIN GPIO_Pin_5 |
#define MIOS32_SPI0_SCLK_PORT GPIOA |
#define MIOS32_SPI0_SCLK_PORT GPIOA |
#define MIOS32_SPI1_DMA_IRQ_CHANNEL DMA1_Stream3_IRQn |
#define MIOS32_SPI1_DMA_IRQ_CHANNEL DMA1_Channel4_IRQn |
#define MIOS32_SPI1_DMA_IRQHANDLER_FUNC void DMA1_Stream3_IRQHandler(void) |
#define MIOS32_SPI1_DMA_IRQHANDLER_FUNC void DMA1_Channel4_IRQHandler(void) |
#define MIOS32_SPI1_DMA_IRQHANDLER_FUNC void DMAChannel4_IRQHandler(void) |
#define MIOS32_SPI1_DMA_RX_CHN DMA_Channel_0 |
#define MIOS32_SPI1_DMA_RX_CHN 3 |
#define MIOS32_SPI1_DMA_RX_IRQ_FLAGS (DMA_FLAG_TCIF3 | DMA_FLAG_TEIF3 | DMA_FLAG_HTIF3 | DMA_FLAG_FEIF3) |
#define MIOS32_SPI1_DMA_RX_IRQ_FLAGS (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4) |
#define MIOS32_SPI1_DMA_RX_PTR DMA1_Stream3 |
#define MIOS32_SPI1_DMA_RX_PTR DMA1_Channel4 |
#define MIOS32_SPI1_DMA_RX_REQ 3 |
#define MIOS32_SPI1_DMA_TX_CHN DMA_Channel_0 |
#define MIOS32_SPI1_DMA_TX_CHN 2 |
#define MIOS32_SPI1_DMA_TX_IRQ_FLAGS (DMA_FLAG_TCIF4 | DMA_FLAG_TEIF4 | DMA_FLAG_HTIF4 | DMA_FLAG_FEIF4) |
#define MIOS32_SPI1_DMA_TX_PTR DMA1_Stream4 |
#define MIOS32_SPI1_DMA_TX_PTR DMA1_Channel5 |
#define MIOS32_SPI1_DMA_TX_REQ 2 |
#define MIOS32_SPI1_IN_INIT |
{ MIOS32_SYS_LPC_PINMODE(0, 9, 2); \ MIOS32_SYS_LPC_PINMODE(0, 8, 0); \ MIOS32_SYS_LPC_PINMODE(0, 7, 2); \ MIOS32_SYS_LPC_PINMODE(0, 6, 2); \ MIOS32_SYS_LPC_PINMODE(3, 26, 2); }
#define MIOS32_SPI1_MISO_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2); } |
#define MIOS32_SPI1_MISO_INIT { MIOS32_SYS_LPC_PINSEL(0, 8, 2); } |
#define MIOS32_SPI1_MISO_PIN GPIO_Pin_14 |
#define MIOS32_SPI1_MISO_PIN GPIO_Pin_14 |
#define MIOS32_SPI1_MISO_PORT GPIOB |
#define MIOS32_SPI1_MISO_PORT GPIOB |
#define MIOS32_SPI1_MOSI_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2); } |
#define MIOS32_SPI1_MOSI_INIT { MIOS32_SYS_LPC_PINSEL(0, 9, 2); } |
#define MIOS32_SPI1_MOSI_PIN GPIO_Pin_15 |
#define MIOS32_SPI1_MOSI_PIN GPIO_Pin_15 |
#define MIOS32_SPI1_MOSI_PORT GPIOB |
#define MIOS32_SPI1_MOSI_PORT GPIOB |
#define MIOS32_SPI1_OD_INIT { LPC_PINCON->PINMODE_OD0 |= ((1 << 9) | (1 << 8) | (1 << 7) | (1 << 6)); LPC_PINCON->PINMODE_OD3 |= ((1 << 26)); } |
#define MIOS32_SPI1_PP_INIT { LPC_PINCON->PINMODE_OD0 &= ~((1 << 9) | (1 << 8) | (1 << 7) | (1 << 6)); LPC_PINCON->PINMODE_OD3 &= ~((1 << 26)); } |
#define MIOS32_SPI1_PTR SPI2 |
#define MIOS32_SPI1_PTR SPI2 |
#define MIOS32_SPI1_PTR LPC_SSP1 |
#define MIOS32_SPI1_RCLK1_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_SPI2); } |
#define MIOS32_SPI1_RCLK1_INIT { MIOS32_SYS_LPC_PINSEL(0, 6, 0); MIOS32_SYS_LPC_PINDIR(0, 6, 1); } |
#define MIOS32_SPI1_RCLK1_PIN GPIO_Pin_12 |
#define MIOS32_SPI1_RCLK1_PIN GPIO_Pin_12 |
#define MIOS32_SPI1_RCLK1_PORT GPIOB |
#define MIOS32_SPI1_RCLK1_PORT GPIOB |
#define MIOS32_SPI1_RCLK1_SET | ( | v | ) | { MIOS32_SYS_LPC_PINSET(0, 6, v); } |
#define MIOS32_SPI1_RCLK2_AF { } |
#define MIOS32_SPI1_RCLK2_INIT { MIOS32_SYS_LPC_PINSEL(3, 26, 0); MIOS32_SYS_LPC_PINDIR(3, 26, 1); } |
#define MIOS32_SPI1_RCLK2_PIN GPIO_Pin_10 |
#define MIOS32_SPI1_RCLK2_PORT GPIOD |
#define MIOS32_SPI1_RCLK2_SET | ( | v | ) | { MIOS32_SYS_LPC_PINSET(3, 26, v); } |
#define MIOS32_SPI1_SCLK_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2); } |
#define MIOS32_SPI1_SCLK_INIT { MIOS32_SYS_LPC_PINSEL(0, 7, 2); } |
#define MIOS32_SPI1_SCLK_PIN GPIO_Pin_13 |
#define MIOS32_SPI1_SCLK_PIN GPIO_Pin_13 |
#define MIOS32_SPI1_SCLK_PORT GPIOB |
#define MIOS32_SPI1_SCLK_PORT GPIOB |
#define MIOS32_SPI2_DMA_IRQ_CHANNEL DMA1_Stream2_IRQn |
#define MIOS32_SPI2_DMA_IRQ_CHANNEL NULL |
#define MIOS32_SPI2_DMA_IRQHANDLER_FUNC void DMA1_Stream2_IRQHandler(void) |
#define MIOS32_SPI2_DMA_IRQHANDLER_FUNC NULL |
#define MIOS32_SPI2_DMA_IRQHANDLER_FUNC NULL |
#define MIOS32_SPI2_DMA_RX_CHN DMA_Channel_0 |
#define MIOS32_SPI2_DMA_RX_IRQ_FLAGS (DMA_FLAG_TCIF2 | DMA_FLAG_TEIF2 | DMA_FLAG_HTIF2 | DMA_FLAG_FEIF2) |
#define MIOS32_SPI2_DMA_RX_IRQ_FLAGS 0 |
#define MIOS32_SPI2_DMA_RX_PTR DMA1_Stream2 |
#define MIOS32_SPI2_DMA_RX_PTR NULL |
#define MIOS32_SPI2_DMA_TX_CHN DMA_Channel_0 |
#define MIOS32_SPI2_DMA_TX_IRQ_FLAGS (DMA_FLAG_TCIF5 | DMA_FLAG_TEIF5 | DMA_FLAG_HTIF5 | DMA_FLAG_FEIF5) |
#define MIOS32_SPI2_DMA_TX_PTR DMA1_Stream5 |
#define MIOS32_SPI2_DMA_TX_PTR NULL |
#define MIOS32_SPI2_GET_MISO ( MIOS32_SPI2_MISO_PORT->IDR & MIOS32_SPI2_MISO_PIN ) |
#define MIOS32_SPI2_IN_INIT |
{ MIOS32_SYS_LPC_PINMODE(0, 21, 2); \ MIOS32_SYS_LPC_PINMODE(0, 18, 2); \ MIOS32_SYS_LPC_PINMODE(0, 17, 0); \ MIOS32_SYS_LPC_PINMODE(0, 16, 2); \ MIOS32_SYS_LPC_PINMODE(0, 15, 2); }
#define MIOS32_SPI2_MISO_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI3); } |
#define MIOS32_SPI2_MISO_INIT { MIOS32_SYS_LPC_PINSEL(0, 17, 3); } |
#define MIOS32_SPI2_MISO_PIN GPIO_Pin_4 |
#define MIOS32_SPI2_MISO_PIN GPIO_Pin_7 |
#define MIOS32_SPI2_MISO_PORT GPIOB |
#define MIOS32_SPI2_MISO_PORT GPIOB |
#define MIOS32_SPI2_MOSI_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI3); } |
#define MIOS32_SPI2_MOSI_INIT { MIOS32_SYS_LPC_PINSEL(0, 18, 3); } |
#define MIOS32_SPI2_MOSI_PIN GPIO_Pin_5 |
#define MIOS32_SPI2_MOSI_PIN GPIO_Pin_5 |
#define MIOS32_SPI2_MOSI_PORT GPIOB |
#define MIOS32_SPI2_MOSI_PORT GPIOB |
#define MIOS32_SPI2_OD_INIT { LPC_PINCON->PINMODE_OD0 |= ((1 << 21) | (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15)); } |
#define MIOS32_SPI2_PP_INIT { LPC_PINCON->PINMODE_OD0 &= ~((1 << 21) | (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15)); } |
#define MIOS32_SPI2_PTR SPI3 |
#define MIOS32_SPI2_PTR NULL |
#define MIOS32_SPI2_PTR LPC_SPI |
#define MIOS32_SPI2_RCLK1_AF { GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_SPI3); } |
#define MIOS32_SPI2_RCLK1_INIT { MIOS32_SYS_LPC_PINSEL(0, 16, 0); MIOS32_SYS_LPC_PINDIR(0, 16, 1); } |
#define MIOS32_SPI2_RCLK1_PIN GPIO_Pin_15 |
#define MIOS32_SPI2_RCLK1_PIN GPIO_Pin_13 |
#define MIOS32_SPI2_RCLK1_PORT GPIOA |
#define MIOS32_SPI2_RCLK1_PORT GPIOC |
#define MIOS32_SPI2_RCLK1_SET | ( | v | ) | { MIOS32_SYS_LPC_PINSET(0, 16, v); } |
#define MIOS32_SPI2_RCLK2_AF { } |
#define MIOS32_SPI2_RCLK2_INIT { MIOS32_SYS_LPC_PINSEL(0, 21, 0); MIOS32_SYS_LPC_PINDIR(0, 21, 1); } |
#define MIOS32_SPI2_RCLK2_PIN GPIO_Pin_8 |
#define MIOS32_SPI2_RCLK2_PIN GPIO_Pin_14 |
#define MIOS32_SPI2_RCLK2_PORT GPIOB |
#define MIOS32_SPI2_RCLK2_PORT GPIOC |
#define MIOS32_SPI2_RCLK2_SET | ( | v | ) | { MIOS32_SYS_LPC_PINSET(0, 21, v); } |
#define MIOS32_SPI2_SCLK_AF { GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI3); } |
#define MIOS32_SPI2_SCLK_INIT { MIOS32_SYS_LPC_PINSEL(0, 15, 3); } |
#define MIOS32_SPI2_SCLK_PIN GPIO_Pin_3 |
#define MIOS32_SPI2_SCLK_PIN GPIO_Pin_6 |
#define MIOS32_SPI2_SCLK_PORT GPIOB |
#define MIOS32_SPI2_SCLK_PORT GPIOB |
#define MIOS32_SPI2_SET_MOSI | ( | b | ) | { MIOS32_SPI2_MOSI_PORT->BSRR = (b) ? MIOS32_SPI2_MOSI_PIN : (MIOS32_SPI2_MOSI_PIN << 16); } |
#define MIOS32_SPI2_SET_SCLK_0 { MIOS32_SPI2_SCLK_PORT->BRR = MIOS32_SPI2_SCLK_PIN; } |
#define MIOS32_SPI2_SET_SCLK_1 { MIOS32_SPI2_SCLK_PORT->BSRR = MIOS32_SPI2_SCLK_PIN; } |
Initializes SPI pins
[in] | mode | currently only mode 0 supported |
s32 MIOS32_SPI_IO_Init | ( | u8 | spi, | |
mios32_spi_pin_driver_t | spi_pin_driver | |||
) |
(Re-)initializes SPI IO Pins By default, all output pins are configured with weak open drain drivers for 2 MHz
[in] | spi | SPI number (0, 1 or 2) |
[in] | spi_pin_driver | configures the driver strength:
|
(Re-)initializes SPI IO Pins By default, all output pins are configured with weak open drain drivers for 2 MHz
[in] | spi | SPI number (0, 1 or 2) |
[in] | spi_pin_driver | configures the driver strength:
|
Controls the RC (Register Clock alias Chip Select) pin of a SPI port
[in] | spi | SPI number (0, 1 or 2) |
[in] | rc_pin | RCLK pin (0 or 1 for RCLK1 or RCLK2) |
[in] | pin_value | 0 or 1 |
s32 MIOS32_SPI_TransferBlock | ( | u8 | spi, | |
u8 * | send_buffer, | |||
u8 * | receive_buffer, | |||
u16 | len, | |||
void * | callback | |||
) |
Transfers a block of bytes via DMA.
[in] | spi | SPI number (0, 1 or 2) |
[in] | send_buffer | pointer to buffer which should be sent. If NULL, 0xff (all-one) will be sent. |
[in] | receive_buffer | pointer to buffer which should get the received values. If NULL, received bytes will be discarded. |
[in] | len | number of bytes which should be transfered |
[in] | callback | pointer to callback function which will be executed from DMA channel interrupt once the transfer is finished. If NULL, no callback function will be used, and MIOS32_SPI_TransferBlock() will block until the transfer is finished. |
Transfers a block of bytes via DMA.
[in] | spi | SPI number (0, 1 or 2) |
[in] | send_buffer | pointer to buffer which should be sent. If NULL, 0xff (all-one) will be sent. |
[in] | receive_buffer | pointer to buffer which should get the received values. If NULL, received bytes will be discarded. |
[in] | len | number of bytes which should be transfered |
[in] | callback | pointer to callback function which will be executed from DMA channel interrupt once the transfer is finished. If NULL, no callback function will be used, and MIOS32_SPI_TransferBlock() will block until the transfer is finished. |
Transfers a byte to SPI output and reads back the return value from SPI input
[in] | spi | SPI number (0, 1 or 2) |
[in] | b | the byte which should be transfered |
s32 MIOS32_SPI_TransferModeInit | ( | u8 | spi, | |
mios32_spi_mode_t | spi_mode, | |||
mios32_spi_prescaler_t | spi_prescaler | |||
) |
(Re-)initializes SPI peripheral transfer mode By default, all SPI peripherals are configured with MIOS32_SPI_MODE_CLK1_PHASE1 and MIOS32_SPI_PRESCALER_128
[in] | spi | SPI number (0, 1 or 2) |
[in] | spi_mode | configures clock and capture phase:
|
[in] | spi_prescaler | configures the SPI speed:
|
(Re-)initializes SPI peripheral transfer mode By default, all SPI peripherals are configured with MIOS32_SPI_MODE_CLK1_PHASE1 and MIOS32_SPI_PRESCALER_128
[in] | spi | SPI number (0, 1 or 2) |
[in] | spi_mode | configures clock and capture phase:
|
[in] | spi_prescaler | configures the SPI speed:
|
(Re-)initializes SPI peripheral transfer mode By default, all SPI peripherals are configured with MIOS32_SPI_MODE_CLK1_PHASE1 and MIOS32_SPI_PRESCALER_128
[in] | spi | SPI number (0, 1 or 2) |
[in] | spi_mode | configures clock and capture phase:
|
[in] | spi_prescaler | configures the SPI speed:
|
(Re-)initializes SPI peripheral transfer mode By default, all SPI peripherals are configured with MIOS32_SPI_MODE_CLK1_PHASE1 and MIOS32_SPI_PRESCALER_128
[in] | spi | SPI number (0, 1 or 2) |
[in] | spi_mode | configures clock and capture phase:
|
[in] | spi_prescaler | configures the SPI speed:
|