From 105c31bcb3e28399bc143173efbcca534acb627c Mon Sep 17 00:00:00 2001 From: tkuyucu Date: Fri, 6 Dec 2013 10:01:28 +0100 Subject: [PATCH] SPISlave works. --- .../TARGET_nRF51822/PeripheralNames.h | 23 +++++---------- .../TARGET_NORDIC/TARGET_nRF51822/PinNames.h | 6 ++-- .../TARGET_NORDIC/TARGET_nRF51822/device.h | 2 +- .../TARGET_NORDIC/TARGET_nRF51822/objects.h | 4 +++ .../TARGET_NORDIC/TARGET_nRF51822/spi_api.c | 29 +++++++------------ 5 files changed, 27 insertions(+), 37 deletions(-) diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PeripheralNames.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PeripheralNames.h index 58ac68274b..467cd3b70e 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PeripheralNames.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PeripheralNames.h @@ -36,27 +36,20 @@ typedef enum { #define STDIO_UART_TX TX_PIN_NUMBER #define STDIO_UART_RX RX_PIN_NUMBER #define STDIO_UART UART_0 + +typedef enum { + PWM_1 = 0, + PWM_2, + PWM_3, + PWM_4 +} PWMName; + /* typedef enum { I2C_0 = (int)I2C0_BASE, I2C_1 = (int)I2C1_BASE, } I2CName; -#define TPM_SHIFT 8 -typedef enum { - PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 - PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 - PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 - PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 - PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 - PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 - - PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 - PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 - - PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0 - PWM_10 = (2 << TPM_SHIFT) | (1) // TPM2 CH1 -} PWMName; #define CHANNELS_A_SHIFT 5 typedef enum { diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PinNames.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PinNames.h index 318648ad92..9ed9fe49fc 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PinNames.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/PinNames.h @@ -61,7 +61,7 @@ typedef enum { p28=28, p29=29, p30=30, - p31=31, +// p31=31, LED_START = p18, LED_STOP = p19, @@ -83,10 +83,10 @@ typedef enum { USBTX = TX_PIN_NUMBER, USBRX = RX_PIN_NUMBER, - SPI_PSELSCK0 = p31, + SPI_PSELSCK0 = p25, SPI_PSELMOSI0 = p20, SPI_PSELMISO0 = p22, - SPI_PSELSS0 = p30, + SPI_PSELSS0 = p24, SPI_PSELSCK1 = p29, SPI_PSELMOSI1 = p21, diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/device.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/device.h index 405085b04c..a1b7bcae5c 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/device.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/device.h @@ -39,7 +39,7 @@ #define DEVICE_ETHERNET 0 -#define DEVICE_PWMOUT 0 +#define DEVICE_PWMOUT 1 #define DEVICE_SEMIHOST 0 #define DEVICE_LOCALFILESYSTEM 0 diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/objects.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/objects.h index 1bd572cd7b..a579bb642a 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/objects.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/objects.h @@ -43,6 +43,10 @@ struct port_s { uint32_t mask; }; +struct pwmout_s { + PWMName pwm; + PinName pin; +}; /* struct gpio_irq_s { diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/spi_api.c b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/spi_api.c index 61e36ec971..f2804f15c1 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/spi_api.c +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_nRF51822/spi_api.c @@ -45,12 +45,10 @@ static const PinMap PinMap_SPI_SSEL[] = { {NC , NC , 0} }; // {SPI_PSELSS0 , SPI_0, 0x01}, -#define SPIS_MESSAGE_SIZE 4 -volatile uint8_t m_tx_buf[SPIS_MESSAGE_SIZE] = {0,0,0,0}; -volatile uint8_t m_rx_buf[SPIS_MESSAGE_SIZE] = {5,5,5,5}; +#define SPIS_MESSAGE_SIZE 1 +volatile uint8_t m_tx_buf[SPIS_MESSAGE_SIZE] = {0};//{0,0,0,0}; +volatile uint8_t m_rx_buf[SPIS_MESSAGE_SIZE] = {0};//{0,0,0,0}; -static inline int ssp_disable(spi_t *obj); -static inline int ssp_enable(spi_t *obj); void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel) { // determine the SPI to use @@ -203,11 +201,6 @@ static inline int spi_writeable(spi_t *obj) { } -/*static inline void spi_write(spi_t *obj, int value) { - - obj->spi->DR = value; -}*/ - static inline int spi_read(spi_t *obj) { while (!spi_readable(obj)); //timeout ? obj->spi->EVENTS_READY =0; @@ -220,12 +213,8 @@ int spi_master_write(spi_t *obj, int value) { return spi_read(obj); } -static inline int spis_readable(spi_t *obj) { -} - static inline int spis_writeable(spi_t *obj) { return (obj->spis->EVENTS_ACQUIRED==1); - } int spi_slave_receive(spi_t *obj) { @@ -238,7 +227,11 @@ int spi_slave_receive(spi_t *obj) { int spi_slave_read(spi_t *obj) { //&m_rx_buf[0] = obj->spis->RXDPTR; - int val = m_rx_buf[3]<<24 | m_rx_buf[2] <<16 | m_rx_buf[1] <<8 | m_rx_buf[0]; + int val =m_rx_buf[0];// m_rx_buf[3]<<24 | m_rx_buf[2] <<16 | m_rx_buf[1] <<8 | m_rx_buf[0]; + //m_rx_buf[0] =0; + //m_rx_buf[1] =0; + //m_rx_buf[2] =0; + //m_rx_buf[3] =0; return val;//m_rx_buf[3];//obj->spis->RXDPTR;// } @@ -247,9 +240,9 @@ void spi_slave_write(spi_t *obj, int value) { while (!spis_writeable(obj)) ; //obj->spis->TXDPTR = value; m_tx_buf[0]= value & 0xFF; - m_tx_buf[1]= value & 0xFF00; - m_tx_buf[2]= value & 0xFF0000; - m_tx_buf[3]= value & 0xFF000000; + //m_tx_buf[1]= value & 0xFF00; + //m_tx_buf[2]= value & 0xFF0000; + //m_tx_buf[3]= value & 0xFF000000; obj->spis->TXDPTR = (uint32_t)m_tx_buf; //obj->spis->RXDPTR = (uint32_t)m_rx_buf; obj->spis->TASKS_RELEASE=1;