LP4330_M4 i2c/spi update

pull/442/head
jesusalvarez 2014-08-12 19:25:25 -04:00
parent 23b25bbd91
commit c2327523bd
3 changed files with 83 additions and 67 deletions

View File

@ -20,17 +20,20 @@
#include "pinmap.h" #include "pinmap.h"
#include "error.h" #include "error.h"
// SCU mode for I2C SCL/SDA pins
#define SCU_PINIO_I2C SCU_PINIO_PULLNONE
static const PinMap PinMap_I2C_SDA[] = { static const PinMap PinMap_I2C_SDA[] = {
{P_DED, I2C_0, 0}, {P_DED, I2C_0, 0},
{P2_3, I2C_1, 1}, {P2_3, I2C_1, (SCU_PINIO_I2C | 1)},
{PE_13, I2C_1, 2}, {PE_13, I2C_1, (SCU_PINIO_I2C | 2)},
{NC, NC, 0} {NC, NC, 0}
}; };
static const PinMap PinMap_I2C_SCL[] = { static const PinMap PinMap_I2C_SCL[] = {
{P_DED, I2C_0, 0}, {P_DED, I2C_0, 0},
{P2_4, I2C_1, 1}, {P2_4, I2C_1, (SCU_PINIO_I2C | 1)},
{PE_14, I2C_1, 2}, {PE_14, I2C_1, (SCU_PINIO_I2C | 2)},
{NC, NC, 0} {NC, NC, 0}
}; };

View File

@ -31,45 +31,49 @@
******************************************************************************/ ******************************************************************************/
#define UART_NUM 4 #define UART_NUM 4
// SCU mode for UART pins
#define SCU_PINIO_UART_TX SCU_MODE_PULLDOWN
#define SCU_PINIO_UART_RX SCU_PINIO_PULLNONE
static const PinMap PinMap_UART_TX[] = { static const PinMap PinMap_UART_TX[] = {
{P1_13, UART_1, (SCU_MODE_PULLDOWN | 1)}, {P1_13, UART_1, (SCU_PINIO_UART_TX | 1)},
{P1_15, UART_2, (SCU_MODE_PULLDOWN | 1)}, {P1_15, UART_2, (SCU_PINIO_UART_TX | 1)},
{P2_0, UART_0, (SCU_MODE_PULLDOWN | 1)}, {P2_0, UART_0, (SCU_PINIO_UART_TX | 1)},
{P2_3, UART_3, (SCU_MODE_PULLDOWN | 2)}, {P2_3, UART_3, (SCU_PINIO_UART_TX | 2)},
{P2_10, UART_2, (SCU_MODE_PULLDOWN | 2)}, {P2_10, UART_2, (SCU_PINIO_UART_TX | 2)},
{P3_4, UART_1, (SCU_MODE_PULLDOWN | 4)}, {P3_4, UART_1, (SCU_PINIO_UART_TX | 4)},
{P4_1, UART_3, (SCU_MODE_PULLDOWN | 6)}, {P4_1, UART_3, (SCU_PINIO_UART_TX | 6)},
{P5_6, UART_1, (SCU_MODE_PULLDOWN | 4)}, {P5_6, UART_1, (SCU_PINIO_UART_TX | 4)},
{P6_4, UART_0, (SCU_MODE_PULLDOWN | 2)}, {P6_4, UART_0, (SCU_PINIO_UART_TX | 2)},
{P7_1, UART_2, (SCU_MODE_PULLDOWN | 6)}, {P7_1, UART_2, (SCU_PINIO_UART_TX | 6)},
{P9_3, UART_3, (SCU_MODE_PULLDOWN | 7)}, {P9_3, UART_3, (SCU_PINIO_UART_TX | 7)},
{P9_5, UART_0, (SCU_MODE_PULLDOWN | 7)}, {P9_5, UART_0, (SCU_PINIO_UART_TX | 7)},
{PA_1, UART_2, (SCU_MODE_PULLDOWN | 3)}, {PA_1, UART_2, (SCU_PINIO_UART_TX | 3)},
{PC_13, UART_1, (SCU_MODE_PULLDOWN | 2)}, {PC_13, UART_1, (SCU_PINIO_UART_TX | 2)},
{PE_11, UART_1, (SCU_MODE_PULLDOWN | 2)}, {PE_11, UART_1, (SCU_PINIO_UART_TX | 2)},
{PF_2, UART_3, (SCU_MODE_PULLDOWN | 1)}, {PF_2, UART_3, (SCU_PINIO_UART_TX | 1)},
{PF_10, UART_0, (SCU_MODE_PULLDOWN | 1)}, {PF_10, UART_0, (SCU_PINIO_UART_TX | 1)},
{NC, NC, 0} {NC, NC, 0}
}; };
static const PinMap PinMap_UART_RX[] = { static const PinMap PinMap_UART_RX[] = {
{P1_14, UART_1, (SCU_PINIO_PULLNONE | 1)}, {P1_14, UART_1, (SCU_PINIO_UART_RX | 1)},
{P1_16, UART_2, (SCU_PINIO_PULLNONE | 1)}, {P1_16, UART_2, (SCU_PINIO_UART_RX | 1)},
{P2_1, UART_0, (SCU_PINIO_PULLNONE | 1)}, {P2_1, UART_0, (SCU_PINIO_UART_RX | 1)},
{P2_4, UART_3, (SCU_PINIO_PULLNONE | 2)}, {P2_4, UART_3, (SCU_PINIO_UART_RX | 2)},
{P2_11, UART_2, (SCU_PINIO_PULLNONE | 2)}, {P2_11, UART_2, (SCU_PINIO_UART_RX | 2)},
{P3_5, UART_1, (SCU_PINIO_PULLNONE | 4)}, {P3_5, UART_1, (SCU_PINIO_UART_RX | 4)},
{P4_2, UART_3, (SCU_PINIO_PULLNONE | 6)}, {P4_2, UART_3, (SCU_PINIO_UART_RX | 6)},
{P5_7, UART_1, (SCU_PINIO_PULLNONE | 4)}, {P5_7, UART_1, (SCU_PINIO_UART_RX | 4)},
{P6_5, UART_0, (SCU_PINIO_PULLNONE | 2)}, {P6_5, UART_0, (SCU_PINIO_UART_RX | 2)},
{P7_2, UART_2, (SCU_PINIO_PULLNONE | 6)}, {P7_2, UART_2, (SCU_PINIO_UART_RX | 6)},
{P9_4, UART_3, (SCU_PINIO_PULLNONE | 7)}, {P9_4, UART_3, (SCU_PINIO_UART_RX | 7)},
{P9_6, UART_0, (SCU_PINIO_PULLNONE | 7)}, {P9_6, UART_0, (SCU_PINIO_UART_RX | 7)},
{PA_2, UART_2, (SCU_PINIO_PULLNONE | 3)}, {PA_2, UART_2, (SCU_PINIO_UART_RX | 3)},
{PC_14, UART_1, (SCU_PINIO_PULLNONE | 2)}, {PC_14, UART_1, (SCU_PINIO_UART_RX | 2)},
{PE_12, UART_1, (SCU_PINIO_PULLNONE | 2)}, {PE_12, UART_1, (SCU_PINIO_UART_RX | 2)},
{PF_3, UART_3, (SCU_PINIO_PULLNONE | 1)}, {PF_3, UART_3, (SCU_PINIO_UART_RX | 1)},
{PF_11, UART_0, (SCU_PINIO_PULLNONE | 1)}, {PF_11, UART_0, (SCU_PINIO_UART_RX | 1)},
{NC, NC, 0} {NC, NC, 0}
}; };

View File

@ -23,48 +23,51 @@
#include "pinmap.h" #include "pinmap.h"
#include "error.h" #include "error.h"
// SCU mode for SPI pins
#define SCU_PINIO_SPI SCU_PINIO_FAST
static const PinMap PinMap_SPI_SCLK[] = { static const PinMap PinMap_SPI_SCLK[] = {
{P1_19, SPI_1, (SCU_PINIO_FAST | 1)}, {P1_19, SPI_1, (SCU_PINIO_SPI | 1)},
{P3_0, SPI_0, (SCU_PINIO_FAST | 4)}, {P3_0, SPI_0, (SCU_PINIO_SPI | 4)},
{P3_3, SPI_0, (SCU_PINIO_FAST | 2)}, {P3_3, SPI_0, (SCU_PINIO_SPI | 2)},
{PF_0, SPI_0, (SCU_PINIO_FAST | 0)}, {PF_0, SPI_0, (SCU_PINIO_SPI | 0)},
{PF_4, SPI_1, (SCU_PINIO_FAST | 0)}, {PF_4, SPI_1, (SCU_PINIO_SPI | 0)},
{NC, NC, 0} {NC, NC, 0}
}; };
static const PinMap PinMap_SPI_MOSI[] = { static const PinMap PinMap_SPI_MOSI[] = {
{P0_1, SPI_1, (SCU_PINIO_FAST | 1)}, {P0_1, SPI_1, (SCU_PINIO_SPI | 1)},
{P1_2, SPI_0, (SCU_PINIO_FAST | 5)}, {P1_2, SPI_0, (SCU_PINIO_SPI | 5)},
{P1_4, SPI_1, (SCU_PINIO_FAST | 5)}, {P1_4, SPI_1, (SCU_PINIO_SPI | 5)},
{P3_7, SPI_0, (SCU_PINIO_FAST | 5)}, {P3_7, SPI_0, (SCU_PINIO_SPI | 5)},
{P3_8, SPI_0, (SCU_PINIO_FAST | 2)}, {P3_8, SPI_0, (SCU_PINIO_SPI | 2)},
{P9_2, SPI_0, (SCU_PINIO_FAST | 7)}, {P9_2, SPI_0, (SCU_PINIO_SPI | 7)},
{PF_3, SPI_0, (SCU_PINIO_FAST | 2)}, {PF_3, SPI_0, (SCU_PINIO_SPI | 2)},
{PF_7, SPI_1, (SCU_PINIO_FAST | 2)}, {PF_7, SPI_1, (SCU_PINIO_SPI | 2)},
{NC, NC, 0} {NC, NC, 0}
}; };
static const PinMap PinMap_SPI_MISO[] = { static const PinMap PinMap_SPI_MISO[] = {
{P0_0, SPI_1, (SCU_PINIO_FAST | 1)}, {P0_0, SPI_1, (SCU_PINIO_SPI | 1)},
{P1_1, SPI_0, (SCU_PINIO_FAST | 5)}, {P1_1, SPI_0, (SCU_PINIO_SPI | 5)},
{P1_3, SPI_1, (SCU_PINIO_FAST | 5)}, {P1_3, SPI_1, (SCU_PINIO_SPI | 5)},
{P3_6, SPI_0, (SCU_PINIO_FAST | 5)}, {P3_6, SPI_0, (SCU_PINIO_SPI | 5)},
{P3_7, SPI_0, (SCU_PINIO_FAST | 2)}, {P3_7, SPI_0, (SCU_PINIO_SPI | 2)},
{P9_1, SPI_0, (SCU_PINIO_FAST | 7)}, {P9_1, SPI_0, (SCU_PINIO_SPI | 7)},
{PF_2, SPI_0, (SCU_PINIO_FAST | 2)}, {PF_2, SPI_0, (SCU_PINIO_SPI | 2)},
{PF_6, SPI_1, (SCU_PINIO_FAST | 2)}, {PF_6, SPI_1, (SCU_PINIO_SPI | 2)},
{NC, NC, 0} {NC, NC, 0}
}; };
static const PinMap PinMap_SPI_SSEL[] = { static const PinMap PinMap_SPI_SSEL[] = {
{P1_0, SPI_0, (SCU_PINIO_FAST | 5)}, {P1_0, SPI_0, (SCU_PINIO_SPI | 5)},
{P1_5, SPI_1, (SCU_PINIO_FAST | 5)}, {P1_5, SPI_1, (SCU_PINIO_SPI | 5)},
{P1_20, SPI_1, (SCU_PINIO_FAST | 2)}, {P1_20, SPI_1, (SCU_PINIO_SPI | 2)},
{P3_6, SPI_0, (SCU_PINIO_FAST | 2)}, {P3_6, SPI_0, (SCU_PINIO_SPI | 2)},
{P3_8, SPI_0, (SCU_PINIO_FAST | 5)}, {P3_8, SPI_0, (SCU_PINIO_SPI | 5)},
{P9_0, SPI_0, (SCU_PINIO_FAST | 7)}, {P9_0, SPI_0, (SCU_PINIO_SPI | 7)},
{PF_1, SPI_0, (SCU_PINIO_FAST | 2)}, {PF_1, SPI_0, (SCU_PINIO_SPI | 2)},
{PF_5, SPI_1, (SCU_PINIO_FAST | 2)}, {PF_5, SPI_1, (SCU_PINIO_SPI | 2)},
{NC, NC, 0} {NC, NC, 0}
}; };
@ -83,6 +86,12 @@ void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel
obj->spi = (LPC_SSP_T*)pinmap_merge(spi_data, spi_cntl); obj->spi = (LPC_SSP_T*)pinmap_merge(spi_data, spi_cntl);
MBED_ASSERT((int)obj->spi != NC); MBED_ASSERT((int)obj->spi != NC);
// enable clocking
switch ((int)obj->spi) {
case SPI_0: LPC_CGU->BASE_CLK[CLK_BASE_SSP0] = (1 << 11) | (CLKIN_MAINPLL << 24); break;
case SPI_1: LPC_CGU->BASE_CLK[CLK_BASE_SSP1] = (1 << 11) | (CLKIN_MAINPLL << 24); break;
}
// set default format and frequency // set default format and frequency
if (ssel == NC) { if (ssel == NC) {
spi_format(obj, 8, 0, 0); // 8 bits, mode 0, master spi_format(obj, 8, 0, 0); // 8 bits, mode 0, master