Misc PIC32 clean-up

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4038 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2011-10-10 23:05:59 +00:00
parent d978173922
commit 12d74b1592
7 changed files with 177 additions and 77 deletions
+14 -18
View File
@@ -229,6 +229,7 @@ EXTERN uint8_t pic32mx_spi1status(FAR struct spi_dev_s *dev, enum spi_dev_e devi
EXTERN int pic32mx_spi1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd); EXTERN int pic32mx_spi1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd);
#endif #endif
#endif #endif
#ifdef CONFIG_PIC32MX_SPI2 #ifdef CONFIG_PIC32MX_SPI2
EXTERN void pic32mx_spi2select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected); EXTERN void pic32mx_spi2select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected);
EXTERN uint8_t pic32mx_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid); EXTERN uint8_t pic32mx_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid);
@@ -237,25 +238,20 @@ EXTERN int pic32mx_spi2cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
#endif #endif
#endif #endif
/**************************************************************************** #ifdef CONFIG_PIC32MX_SPI3
* Name: pic32mx_spiflush EXTERN void pic32mx_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected);
* EXTERN uint8_t pic32mx_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid);
* Description: #ifdef CONFIG_SPI_CMDDATA
* Flush and discard any words left in the RX fifo. This can be called EXTERN int pic32mx_spi3cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd);
* from ssp0/1select after a device is deselected (if you worry about such #endif
* things). #endif
*
* Input Parameters:
* dev - Device-specific state data
*
* Returned Value:
* None
*
****************************************************************************/
struct spi_dev_s; #ifdef CONFIG_PIC32MX_SPI3
#if defined(CONFIG_PIC32MX_SPI1) || defined(CONFIG_PIC32MX_SPI2) EXTERN void pic32mx_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected);
EXTERN void pic32mx_spiflush(FAR struct spi_dev_s *dev); EXTERN uint8_t pic32mx_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid);
#ifdef CONFIG_SPI_CMDDATA
EXTERN int pic32mx_spi3cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd);
#endif
#endif #endif
/**************************************************************************** /****************************************************************************
+4
View File
@@ -54,6 +54,7 @@ Contents
PIC32MX Configuration Options PIC32MX Configuration Options
Configurations Configurations
PIC32MX795F512L Pin Out
PIC32MX795F512L Pin Out PIC32MX795F512L Pin Out
======================= =======================
@@ -529,7 +530,10 @@ PIC32MX Configuration Options
CONFIG_PIC32MX_I2C3 - I2C 3 CONFIG_PIC32MX_I2C3 - I2C 3
CONFIG_PIC32MX_I2C4 - I2C 4 CONFIG_PIC32MX_I2C4 - I2C 4
CONFIG_PIC32MX_I2C5 - I2C 5 CONFIG_PIC32MX_I2C5 - I2C 5
CONFIG_PIC32MX_SPI1 - SPI 1
CONFIG_PIC32MX_SPI2 - SPI 2 CONFIG_PIC32MX_SPI2 - SPI 2
CONFIG_PIC32MX_SPI3 - SPI 3
CONFIG_PIC32MX_SPI4 - SPI 4
CONFIG_PIC32MX_UART1 - UART 1 CONFIG_PIC32MX_UART1 - UART 1
CONFIG_PIC32MX_UART2 - UART 2 CONFIG_PIC32MX_UART2 - UART 2
CONFIG_PIC32MX_UART3 - UART 3 CONFIG_PIC32MX_UART3 - UART 3
+29 -16
View File
@@ -84,24 +84,37 @@
#define BOARD_WD_PRESCALER 8 /* Watchdog pre-scaler */ #define BOARD_WD_PRESCALER 8 /* Watchdog pre-scaler */
/* LED definitions **********************************************************/ /* LED definitions **********************************************************/
/* The Sure PIC32MX board has five LEDs. One (D4, lablel "Power") is not /* The PIC32 starter kit has 3 user LEDs
* controllable by software. Four are controllable by software:
* *
* D7 "USB" Yellow RD7 Low illuminates * RD0 User LED D4 (high illuminates)
* D8 "SD" Yellow RD6 Low illuminates * RD2 User LED D5 (high illuminates)
* D9 "Flash" Yellow RF0 Low illuminates * RD1 User LED D6 (high illuminates)
* D10 "Error" Red RF1 Low illuminates *
* There are 5 LEDs available on the MEB:
*
* RD1 LED1
* RD2 LED2
* RD3 LED3
* RC1 LED4
* RC2 LED5
*/
#define LED_STARTED 0
#define LED_HEAPALLOCATE 1
#define LED_IRQSENABLED 2
#define LED_STACKCREATED 3
#define LED_INIRQ 4
#define LED_SIGNAL 5
#define LED_ASSERTION 6
#define LED_PANIC 7
/* Switch definitions *******************************************************/
/* The PIC32 start kit has 3 switches:
*
* RD7 Switch SW2 (low when closed)
* RD6 Switch SW1 (low when closed)
* RD13 Switch SW3 (low when closed)
*/ */
/* ON OFF */
/* USB SD FLASH ERROR USB SD FLASH ERROR */
#define LED_STARTED 0 /* OFF OFF OFF OFF --- --- --- --- */
#define LED_HEAPALLOCATE 1 /* ON OFF N/C N/C --- --- --- --- */
#define LED_IRQSENABLED 2 /* OFF ON N/C N/C --- --- --- --- */
#define LED_STACKCREATED 3 /* ON ON N/C N/C --- --- --- --- */
#define LED_INIRQ 4 /* N/C N/C ON N/C N/C N/C OFF N/C */
#define LED_SIGNAL 4 /* N/C N/C ON N/C N/C N/C OFF N/C */
#define LED_ASSERTION 4 /* N/C N/C ON N/C N/C N/C OFF N/C */
#define LED_PANIC 5 /* N/C N/C N/C ON N/C N/C N/C OFF */
/**************************************************************************** /****************************************************************************
* Public Types * Public Types
@@ -46,14 +46,26 @@
* Pre-Processor Definitions * Pre-Processor Definitions
****************************************************************************/ ****************************************************************************/
/* Configuration ************************************************************/ /* Configuration ************************************************************/
/* The PIC32 starter kit has 3 user LEDs
/* The Sure PIC32MX board has five LEDs. One (D4, lablel "Power") is not
* controllable by software. Four are controllable by software:
* *
* D7 "USB" Yellow RD7 Low illuminates * RD0 User LED D4 (high illuminates)
* D8 "SD" Yellow RD6 Low illuminates * RD2 User LED D5 (high illuminates)
* D9 "Flash" Yellow RF0 Low illuminates * RD1 User LED D6 (high illuminates)
* D10 "Error" Red RF1 Low illuminates *
* There are 5 LEDs available on the MEB:
*
* RD1 LED1
* RD2 LED2
* RD3 LED3
* RC1 LED4
* RC2 LED5
*/
/* The PIC32 start kit has 3 switches:
*
* RD7 Switch SW2 (low when closed)
* RD6 Switch SW1 (low when closed)
* RD13 Switch SW3 (low when closed)
*/ */
/**************************************************************************** /****************************************************************************
+2 -1
View File
@@ -78,7 +78,8 @@ void pic32mx_boardinitialize(void)
* function pic32mx_spiinitialize() has been brought into the link. * function pic32mx_spiinitialize() has been brought into the link.
*/ */
#if defined(CONFIG_PIC32MX_SPI2) #if defined(CONFIG_PIC32MX_SPI1) || defined(CONFIG_PIC32MX_SPI2) || \
defined(CONFIG_PIC32MX_SPI3) || defined(CONFIG_PIC32MX_SPI4)
if (pic32mx_spiinitialize) if (pic32mx_spiinitialize)
{ {
pic32mx_spiinitialize(); pic32mx_spiinitialize();
+11 -16
View File
@@ -58,24 +58,19 @@
/**************************************************************************** /****************************************************************************
* Definitions * Definitions
****************************************************************************/ ****************************************************************************/
/* The Sure PIC32MX board has five LEDs. One (D4, lablel "Power") is not /* The PIC32 starter kit has 3 user LEDs
* controllable by software. Four are controllable by software:
* *
* D7 "USB" Yellow RD7 Low illuminates * RD0 User LED D4 (high illuminates)
* D8 "SD" Yellow RD6 Low illuminates * RD2 User LED D5 (high illuminates)
* D9 "Flash" Yellow RF0 Low illuminates * RD1 User LED D6 (high illuminates)
* D10 "Error" Red RF1 Low illuminates
* *
* ON OFF * There are 5 LEDs available on the MEB:
* USB SD FLASH ERROR USB SD FLASH ERROR *
* LED_STARTED 0 OFF OFF OFF OFF --- --- --- --- * RD1 LED1
* LED_HEAPALLOCATE 1 ON OFF N/C N/C --- --- --- --- * RD2 LED2
* LED_IRQSENABLED 2 OFF ON N/C N/C --- --- --- --- * RD3 LED3
* LED_STACKCREATED 3 ON ON N/C N/C --- --- --- --- * RC1 LED4
* LED_INIRQ 4 N/C N/C ON N/C N/C N/C OFF N/C * RC2 LED5
* LED_SIGNAL 4 N/C N/C ON N/C N/C N/C OFF N/C
* LED_ASSERTION 4 N/C N/C ON N/C N/C N/C OFF N/C
* LED_PANIC 5 N/C N/C N/C ON N/C N/C N/C OFF
*/ */
/* Enables debug output from this file (needs CONFIG_DEBUG with /* Enables debug output from this file (needs CONFIG_DEBUG with
+98 -19
View File
@@ -52,7 +52,8 @@
#include "pic32mx-internal.h" #include "pic32mx-internal.h"
#include "starterkit_internal.h" #include "starterkit_internal.h"
#if defined(CONFIG_PIC32MX_SPI2) #if defined(CONFIG_PIC32MX_SPI1) || defined(CONFIG_PIC32MX_SPI2) || \
defined(CONFIG_PIC32MX_SPI3) || defined(CONFIG_PIC32MX_SPI4)
/************************************************************************************ /************************************************************************************
* Definitions * Definitions
@@ -95,30 +96,31 @@
void weak_function pic32mx_sspinitialize(void) void weak_function pic32mx_sspinitialize(void)
{ {
/* Configure the SPI2 chip select GPIOs */ /* Configure the SPI chip select GPIOs */
#ifdef CONFIG_PIC32MX_SPI2 #warning "Missing logic"
# warning "Missing logic"
#endif
} }
/************************************************************************************ /************************************************************************************
* Name: pic32mx_spi2select and pic32mx_spi2status * Name: pic32mx_spiNselect, pic32mx_spiNstatus, and pic32mx_spiNcmddata
* *
* Description: * Description:
* The external functions, pic32mx_spi2select and pic32mx_spi2status * These external functions must be provided by board-specific logic. They are
* must be provided by board-specific logic. They are implementations of the select * implementations of the select, status, and cmddata methods of the SPI interface
* and status methods of the SPI interface defined by struct spi_ops_s (see * defined by struct spi_ops_s (see include/nuttx/spi.h). All other methods
* include/nuttx/spi.h). All other methods (including up_spiinitialize()) * including up_spiinitialize()) are provided by common PIC32MX logic. To use
* are provided by common PIC32MX logic. To use this common SPI logic on your * this common SPI logic on your board:
* board:
* *
* 1. Provide logic in pic32mx_boardinitialize() to configure SPI/SPI chip select * 1. Provide logic in pic32mx_boardinitialize() to configure SPI/SSP chip select
* pins. * pins.
* 2. Provide pic32mx_spi2select() and pic32mx_spi2status() functions * 2. Provide pic32mx_spiNselect() and pic32mx_spiNstatus() functions
* in your board-specific logic. These functions will perform chip selection * in your board-specific logic. These functions will perform chip selection
* and status operations using GPIOs in the way your board is configured. * and status operations using GPIOs in the way your board is configured.
* 3. Add a calls to up_spiinitialize() in your low level application * 2. If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, provide
* pic32mx_spiNcmddata() functions in your board-specific logic. These
* functions will perform cmd/data selection operations using GPIOs in the way
* your board is configured.
* 3. Add a call to up_spiinitialize() in your low level application
* initialization logic * initialization logic
* 4. The handle returned by up_spiinitialize() may then be used to bind the * 4. The handle returned by up_spiinitialize() may then be used to bind the
* SPI driver to higher level logic (e.g., calling * SPI driver to higher level logic (e.g., calling
@@ -127,18 +129,95 @@ void weak_function pic32mx_sspinitialize(void)
* *
************************************************************************************/ ************************************************************************************/
#ifdef CONFIG_PIC32MX_SPI2 struct spi_dev_s;
void pic32mx_spi2select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected) enum spi_dev_e;
#ifdef CONFIG_PIC32MX_SPI1
void pic32mx_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{ {
sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert"); sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
#warning "Missing logic" #warning "Missing logic"
} }
uint8_t pic32mx_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid) uint8_t pic32mx_spi1status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{ {
sspdbg("Returning nothing\n"); sspdbg("Returning nothing\n");
#warning "Missing logic" #warning "Missing logic"
return 0; return 0;
} }
#ifdef CONFIG_SPI_CMDDATA
int pic32mx_spi1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
{
#warning "Missing logic"
return 0;
}
#endif #endif
#endif /* CONFIG_PIC32MX_SPI2 */ #endif
#ifdef CONFIG_PIC31MX_SPI1
void pic31mx_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
#warning "Missing logic"
}
uint8_t pic31mx_spi1status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
sspdbg("Returning nothing\n");
#warning "Missing logic"
return 0;
}
#ifdef CONFIG_SPI_CMDDATA
int pic31mx_spi1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
{
#warning "Missing logic"
return 0;
}
#endif
#endif
#ifdef CONFIG_PIC31MX_SPI3
void pic32mx_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
#warning "Missing logic"
}
uint8_t pic32mx_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
sspdbg("Returning nothing\n");
#warning "Missing logic"
return 0;
}
#ifdef CONFIG_SPI_CMDDATA
int pic32mx_spi3cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
{
#warning "Missing logic"
return 0;
}
#endif
#endif
#ifdef CONFIG_PIC32MX_SPI4
void pic32mx_spi4select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
#warning "Missing logic"
}
uint8_t pic32mx_spi4status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
sspdbg("Returning nothing\n");
#warning "Missing logic"
return 0;
}
#ifdef CONFIG_SPI_CMDDATA
int pic32mx_spi4cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
{
#warning "Missing logic"
return 0;
}
#endif
#endif
#endif /* CONFIG_PIC32MX_SPI1..4 */