mirror of
https://github.com/apache/nuttx.git
synced 2026-05-21 21:34:07 +08:00
configs/flipnclick-pic32mz and -sam3x: Generalize naming. HiletGo is one SSD1306 LCD, but the logic should work with any SSD1306. Naming need to be generalized to SSD1306 to make this reusability clear.
This commit is contained in:
@@ -5,29 +5,29 @@
|
||||
|
||||
if ARCH_BOARD_FLIPNCLICK_PIC32MZ
|
||||
|
||||
config FLIPNCLICK_PIC32MZ_HILETGO
|
||||
bool "HiletGo Click Present"
|
||||
config FLIPNCLICK_PIC32MZ_SSD1306
|
||||
bool "SSD1306 Click Present"
|
||||
default n
|
||||
depends on LCD_HILETGO
|
||||
depends on LCD_SSD1306
|
||||
select NXSTART_EXTERNINIT if NX
|
||||
|
||||
choice
|
||||
prompt "HiletGo mikroBUS"
|
||||
default FLIPNCLICK_PIC32MZ_HILETGO_MBA
|
||||
depends on FLIPNCLICK_PIC32MZ_HILETGO
|
||||
prompt "SSD1306 mikroBUS"
|
||||
default FLIPNCLICK_PIC32MZ_SSD1306_MBA
|
||||
depends on FLIPNCLICK_PIC32MZ_SSD1306
|
||||
|
||||
config FLIPNCLICK_PIC32MZ_HILETGO_MBA
|
||||
config FLIPNCLICK_PIC32MZ_SSD1306_MBA
|
||||
bool "mikroBUS A"
|
||||
|
||||
config FLIPNCLICK_PIC32MZ_HILETGO_MBB
|
||||
config FLIPNCLICK_PIC32MZ_SSD1306_MBB
|
||||
bool "mikroBUS B"
|
||||
|
||||
config FLIPNCLICK_PIC32MZ_HILETGO_MBC
|
||||
config FLIPNCLICK_PIC32MZ_SSD1306_MBC
|
||||
bool "mikroBUS C"
|
||||
|
||||
config FLIPNCLICK_PIC32MZ_HILETGO_MBD
|
||||
config FLIPNCLICK_PIC32MZ_SSD1306_MBD
|
||||
bool "mikroBUS D"
|
||||
|
||||
endchoice # HiletGo mikroBUS
|
||||
endchoice # SSD1306 mikroBUS
|
||||
|
||||
endif # ARCH_BOARD_FLIPNCLICK_PIC32MZ
|
||||
|
||||
@@ -17,7 +17,7 @@ Contents
|
||||
Serial Console
|
||||
SPI
|
||||
LEDs
|
||||
HiletGo OLED
|
||||
SSD1306 OLED
|
||||
Configurations
|
||||
|
||||
Port Status
|
||||
@@ -326,7 +326,7 @@ LEDs and Buttons
|
||||
The switches have external pull-up resistors. The switches are pulled high
|
||||
(+3.3V) and grounded when pressed.
|
||||
|
||||
HiletGo OLED
|
||||
SSD1306 OLED
|
||||
============
|
||||
|
||||
Hardware
|
||||
|
||||
@@ -17,7 +17,7 @@ CONFIG_EXAMPLES_NXLINES_BORDERWIDTH=4
|
||||
CONFIG_EXAMPLES_NXLINES_BPP=1
|
||||
CONFIG_EXAMPLES_NXLINES_LINEWIDTH=4
|
||||
CONFIG_EXAMPLES_NXLINES=y
|
||||
CONFIG_FLIPNCLICK_PIC32MZ_HILETGO=y
|
||||
CONFIG_FLIPNCLICK_PIC32MZ_SSD1306=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_HOST_WINDOWS=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=2048
|
||||
|
||||
@@ -50,8 +50,8 @@ ifeq ($(CONFIG_ARCH_BUTTONS),y)
|
||||
CSRCS += pic32mz_buttons.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO),y)
|
||||
CSRCS += pic32mz_hiletgo.c
|
||||
ifeq ($(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306),y)
|
||||
CSRCS += pic32mz_ssd1306.c
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/configs/Board.mk
|
||||
|
||||
@@ -48,21 +48,20 @@
|
||||
****************************************************************************/
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
#define HAVE_HILETGO 1
|
||||
#define HAVE_SSD1306 1
|
||||
|
||||
/* The HiletGo LCD must be selected, installed on the Flip&Click, and must
|
||||
/* The SSD1306 LCD must be selected, installed on the Flip&Click, and must
|
||||
* be configured to use the SPI interface.
|
||||
*/
|
||||
|
||||
#if !defined(CONFIG_LCD_HILETGO) || \
|
||||
!defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO) || \
|
||||
#if !defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306) || \
|
||||
!defined(CONFIG_LCD_SSD1306_SPI)
|
||||
# undef HAVE_HILETGO
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_HILETGO
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBA
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBB
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBC
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBD
|
||||
# undef HAVE_SSD1306
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_SSD1306
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBA
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBB
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBC
|
||||
# undef CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBD
|
||||
#endif
|
||||
|
||||
/* LEDs *********************************************************************/
|
||||
@@ -143,7 +142,7 @@
|
||||
#define GPIO_MBC_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORTD | GPIO_PIN12)
|
||||
#define GPIO_MBD_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORTD | GPIO_PIN13)
|
||||
|
||||
/* HiletGo OLED
|
||||
/* SSD1306 OLED
|
||||
*
|
||||
* The HiletGo is a 128x64 OLED that can be driven either via SPI or I2C (SPI
|
||||
* is the default and is what is used here). I have mounted the OLED on a
|
||||
@@ -174,45 +173,45 @@
|
||||
* DC INT1 RD5 DC INT2 RD4
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBA)
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBA)
|
||||
# ifndef CONFIG_PIC32MZ_SPI2
|
||||
# error "The OLED driver requires CONFIG_PIC32MZ_SPI2 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 2
|
||||
# define GPIO_HILETGO_CS GPIO_MBA_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTE | GPIO_PIN2)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTD | GPIO_PIN9)
|
||||
# define SSD1306_SPI_BUS 2
|
||||
# define GPIO_SSD1306_CS GPIO_MBA_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTE | GPIO_PIN2)
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTD | GPIO_PIN9)
|
||||
|
||||
#elif defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBB)
|
||||
#elif defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBB)
|
||||
# ifndef CONFIG_PIC32MZ_SPI2
|
||||
# error "The OLED driver requires CONFIG_PIC32MZ_SPI2 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 2
|
||||
# define GPIO_HILETGO_CS GPIO_MBB_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN13)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN1)
|
||||
# define SSD1306_SPI_BUS 2
|
||||
# define GPIO_SSD1306_CS GPIO_MBB_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN13)
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN1)
|
||||
|
||||
#elif defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBC)
|
||||
#elif defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBC)
|
||||
# ifndef CONFIG_PIC32MZ_SPI1
|
||||
# error "The OLED driver requires CONFIG_PIC32MZ_SPI1 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 1
|
||||
# define GPIO_HILETGO_CS GPIO_MBC_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN14)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTD | GPIO_PIN5)
|
||||
# define SSD1306_SPI_BUS 1
|
||||
# define GPIO_SSD1306_CS GPIO_MBC_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN14)
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTD | GPIO_PIN5)
|
||||
|
||||
#elif defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBD)
|
||||
#elif defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBD)
|
||||
# ifndef CONFIG_PIC32MZ_SPI1
|
||||
# error "The OLED driver requires CONFIG_PIC32MZ_SPI1 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 1
|
||||
# define GPIO_HILETGO_CS GPIO_MBD_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN12)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTD | GPIO_PIN4)
|
||||
# define SSD1306_SPI_BUS 1
|
||||
# define GPIO_SSD1306_CS GPIO_MBD_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTG | GPIO_PIN12)
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTD | GPIO_PIN4)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
@@ -277,11 +276,11 @@ int pic32mz_bringup(void);
|
||||
* Description:
|
||||
* Called by either NX initialization logic (via board_graphics_setup) or
|
||||
* directly from the board bring-up logic in order to configure the
|
||||
* HiletGo OLED.
|
||||
* SSD1306 OLED.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_HILETGO
|
||||
#ifdef HAVE_SSD1306
|
||||
struct lcd_dev_s; /* Forward reference */
|
||||
FAR struct lcd_dev_s *pic32mz_graphics_setup(unsigned int devno);
|
||||
#endif
|
||||
|
||||
@@ -72,12 +72,12 @@ int pic32mz_bringup(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_HILETGO) && !defined(CONFIG_NXSTART_EXTERNINIT)
|
||||
/* Configure the HiletGo OLED */
|
||||
#if defined(HAVE_SSD1306) && !defined(CONFIG_NXSTART_EXTERNINIT)
|
||||
/* Configure the SSD1306 OLED */
|
||||
|
||||
if (pic32mz_graphics_setup(0) == NULL)
|
||||
{
|
||||
syslog(LOG_ERR,"ERROR: Failed to configure the HiletGo OLED\n");
|
||||
syslog(LOG_ERR,"ERROR: Failed to configure the SSD1306 OLED\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
|
||||
void weak_function pic32mz_spidev_initialize(void)
|
||||
{
|
||||
#ifdef HAVE_HILETGO
|
||||
/* Configure the HiletGo chip select and command/data GPIOs */
|
||||
#ifdef HAVE_SSD1306
|
||||
/* Configure the SSD1306 chip select and command/data GPIOs */
|
||||
|
||||
(void)pic32mz_configgpio(GPIO_HILETGO_CS);
|
||||
(void)pic32mz_configgpio(GPIO_HILETGO_DC);
|
||||
(void)pic32mz_configgpio(GPIO_SSD1306_CS);
|
||||
(void)pic32mz_configgpio(GPIO_SSD1306_DC);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -111,15 +111,15 @@ void pic32mz_spi1select(FAR struct spi_dev_s *dev, uint32_t devid, bool selecte
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBC) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBD)
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBC) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBD)
|
||||
if (devid == SPIDEV_DISPLAY(0))
|
||||
{
|
||||
/* Low: the display is selected
|
||||
* High: the display is deselected
|
||||
*/
|
||||
|
||||
pic32mz_gpiowrite(GPIO_HILETGO_CS, !selected);
|
||||
pic32mz_gpiowrite(GPIO_SSD1306_CS, !selected);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -132,15 +132,15 @@ uint8_t pic32mz_spi1status(FAR struct spi_dev_s *dev, uint32_t devid)
|
||||
#ifdef CONFIG_SPI_CMDDATA
|
||||
int pic32mz_spi1cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
|
||||
{
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBC) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBD)
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBC) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBD)
|
||||
if (devid == SPIDEV_DISPLAY(0))
|
||||
{
|
||||
/* High: the inputs are treated as display data.
|
||||
* Low: the inputs are transferred to the command registers.
|
||||
*/
|
||||
|
||||
pic32mz_gpiowrite(GPIO_HILETGO_DC, !cmd);
|
||||
pic32mz_gpiowrite(GPIO_SSD1306_DC, !cmd);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -154,15 +154,15 @@ void pic32mz_spi2select(FAR struct spi_dev_s *dev, uint32_t devid, bool selecte
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBA) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBB)
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBA) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBB)
|
||||
if (devid == SPIDEV_DISPLAY(0))
|
||||
{
|
||||
/* Low: the display is selected
|
||||
* High: the display is deselected
|
||||
*/
|
||||
|
||||
pic32mz_gpiowrite(GPIO_HILETGO_CS, !selected);
|
||||
pic32mz_gpiowrite(GPIO_SSD1306_CS, !selected);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -175,15 +175,15 @@ uint8_t pic32mz_spi2status(FAR struct spi_dev_s *dev, uint32_t devid)
|
||||
#ifdef CONFIG_SPI_CMDDATA
|
||||
int pic32mz_spi2cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
|
||||
{
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBA) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_HILETGO_MBB)
|
||||
#if defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBA) || \
|
||||
defined(CONFIG_FLIPNCLICK_PIC32MZ_SSD1306_MBB)
|
||||
if (devid == SPIDEV_DISPLAY(0))
|
||||
{
|
||||
/* High: the inputs are treated as display data.
|
||||
* Low: the inputs are transferred to the command registers.
|
||||
*/
|
||||
|
||||
pic32mz_gpiowrite(GPIO_HILETGO_DC, !cmd);
|
||||
pic32mz_gpiowrite(GPIO_SSD1306_DC, !cmd);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+8
-8
@@ -1,5 +1,5 @@
|
||||
/****************************************************************************
|
||||
* config/flipnclick-pic32mz/src/pic32mz_hiletgo.c
|
||||
* config/flipnclick-pic32mz/src/pic32mz_ssd1306.c
|
||||
*
|
||||
* Copyright (C) 2018 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
@@ -33,7 +33,7 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* HiletGo OLED
|
||||
/* SSD1306 OLED
|
||||
*
|
||||
* The HiletGo is a 128x64 OLED that can be driven either via SPI or I2C (SPI
|
||||
* is the default and is what is used here). I have mounted the OLED on a
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include "flipnclick-pic32mz.h"
|
||||
|
||||
#ifdef HAVE_HILETGO
|
||||
#ifdef HAVE_SSD1306
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
@@ -93,7 +93,7 @@
|
||||
* Description:
|
||||
* Called by either NX initialization logic (via board_graphics_setup) or
|
||||
* directly from the board bring-up logic in order to configure the
|
||||
* HiletGo OLED.
|
||||
* SSD1306 OLED.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
@@ -106,16 +106,16 @@ FAR struct lcd_dev_s *pic32mz_graphics_setup(unsigned int devno)
|
||||
* putting the OLED into reset state.
|
||||
*/
|
||||
|
||||
(void)pic32mz_configgpio(GPIO_HILETGO_RST);
|
||||
(void)pic32mz_configgpio(GPIO_SSD1306_RST);
|
||||
|
||||
/* Wait a bit then release the OLED from the reset state */
|
||||
|
||||
up_mdelay(20);
|
||||
pic32mz_gpiowrite(GPIO_HILETGO_RST, true);
|
||||
pic32mz_gpiowrite(GPIO_SSD1306_RST, true);
|
||||
|
||||
/* Get the SPI1 port interface */
|
||||
|
||||
spi = pic32mz_spibus_initialize(HILETGO_SPI_BUS);
|
||||
spi = pic32mz_spibus_initialize(SSD1306_SPI_BUS);
|
||||
if (!spi)
|
||||
{
|
||||
lcderr("ERROR: Failed to initialize SPI port 1\n");
|
||||
@@ -169,4 +169,4 @@ FAR struct lcd_dev_s *board_graphics_setup(unsigned int devno)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_HILETGO */
|
||||
#endif /* HAVE_SSD1306 */
|
||||
@@ -5,29 +5,29 @@
|
||||
|
||||
if ARCH_BOARD_FLIPNCLICK_SAM3X
|
||||
|
||||
config FLIPNCLICK_SAM3X_HILETGO
|
||||
bool "HiletGo Click Present"
|
||||
config FLIPNCLICK_SAM3X_SSD1306
|
||||
bool "SSD1306 Click Present"
|
||||
default n
|
||||
depends on LCD_HILETGO
|
||||
depends on LCD_SSD1306
|
||||
select NXSTART_EXTERNINIT if NX
|
||||
|
||||
choice
|
||||
prompt "HiletGo mikroBUS"
|
||||
default FLIPNCLICK_SAM3X_HILETGO_MBA
|
||||
depends on FLIPNCLICK_SAM3X_HILETGO
|
||||
prompt "SSD1306 mikroBUS"
|
||||
default FLIPNCLICK_SAM3X_SSD1306_MBA
|
||||
depends on FLIPNCLICK_SAM3X_SSD1306
|
||||
|
||||
config FLIPNCLICK_SAM3X_HILETGO_MBA
|
||||
config FLIPNCLICK_SAM3X_SSD1306_MBA
|
||||
bool "mikroBUS A"
|
||||
|
||||
config FLIPNCLICK_SAM3X_HILETGO_MBB
|
||||
config FLIPNCLICK_SAM3X_SSD1306_MBB
|
||||
bool "mikroBUS B"
|
||||
|
||||
config FLIPNCLICK_SAM3X_HILETGO_MBC
|
||||
config FLIPNCLICK_SAM3X_SSD1306_MBC
|
||||
bool "mikroBUS C"
|
||||
|
||||
config FLIPNCLICK_SAM3X_HILETGO_MBD
|
||||
config FLIPNCLICK_SAM3X_SSD1306_MBD
|
||||
bool "mikroBUS D"
|
||||
|
||||
endchoice # HiletGo mikroBUS
|
||||
endchoice # SSD1306 mikroBUS
|
||||
|
||||
endif
|
||||
|
||||
@@ -16,7 +16,7 @@ Contents
|
||||
- Serial Consoles
|
||||
- SPI
|
||||
- I2C
|
||||
- HiletGo OLED
|
||||
- SSD1306 OLED
|
||||
- Loading Code
|
||||
- Flip&Click SAM3X-specific Configuration Options
|
||||
- Configurations
|
||||
@@ -188,7 +188,7 @@ I2C
|
||||
SCL I2C1_SCL PB13 SCL I2C1_SCL PB13
|
||||
SDA I2C1_SDA PB12 SDA I2C1_SDA PB12
|
||||
|
||||
HiletGo OLED
|
||||
SSD1306 OLED
|
||||
============
|
||||
|
||||
Hardware
|
||||
|
||||
@@ -16,8 +16,8 @@ CONFIG_EXAMPLES_NXLINES_BORDERWIDTH=4
|
||||
CONFIG_EXAMPLES_NXLINES_BPP=1
|
||||
CONFIG_EXAMPLES_NXLINES_LINEWIDTH=4
|
||||
CONFIG_EXAMPLES_NXLINES=y
|
||||
CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBB=y
|
||||
CONFIG_FLIPNCLICK_SAM3X_HILETGO=y
|
||||
CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBB=y
|
||||
CONFIG_FLIPNCLICK_SAM3X_SSD1306=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
|
||||
@@ -52,8 +52,8 @@ ifeq ($(CONFIG_SAM34_SPI0),y)
|
||||
CSRCS += sam_spi0.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_FLIPNCLICK_SAM3X_HILETGO),y)
|
||||
CSRCS += sam_hiletgo.c
|
||||
ifeq ($(CONFIG_FLIPNCLICK_SAM3X_SSD1306),y)
|
||||
CSRCS += sam_ssd1306.c
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/configs/Board.mk
|
||||
|
||||
@@ -55,21 +55,20 @@
|
||||
************************************************************************************/
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
#define HAVE_HILETGO 1
|
||||
#define HAVE_SSD1306 1
|
||||
|
||||
/* The HiletGo LCD must be selected, installed on the Flip&Click, and must
|
||||
/* The SSD1306 LCD must be selected, installed on the Flip&Click, and must
|
||||
* be configured to use the SPI interface.
|
||||
*/
|
||||
|
||||
#if !defined(CONFIG_LCD_HILETGO) || \
|
||||
!defined(CONFIG_FLIPNCLICK_SAM3X_HILETGO) || \
|
||||
#if !defined(CONFIG_FLIPNCLICK_SAM3X_SSD1306) || \
|
||||
!defined(CONFIG_LCD_SSD1306_SPI)
|
||||
# undef HAVE_HILETGO
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_HILETGO
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBA
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBB
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBC
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBD
|
||||
# undef HAVE_SSD1306
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_SSD1306
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBA
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBB
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBC
|
||||
# undef CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBD
|
||||
#endif
|
||||
|
||||
/* There are four LEDs on the top, blue side of the board. Only one can be
|
||||
@@ -147,7 +146,7 @@
|
||||
GPIO_PORT_PIOB | GPIO_PIN23)
|
||||
#define MBD_CSNUM 3
|
||||
|
||||
/* HiletGo OLED
|
||||
/* SSD1306 OLED
|
||||
*
|
||||
* The HiletGo is a 128x64 OLED that can be driven either via SPI or I2C (SPI
|
||||
* is the default and is what is used here). I have mounted the OLED on a
|
||||
@@ -178,56 +177,56 @@
|
||||
* DC INTC PD3 DC INTD PD6
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBA)
|
||||
#if defined(CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBA)
|
||||
# ifndef CONFIG_SAM34_SPI0
|
||||
# error "The OLED driver requires CONFIG_SAM34_SPI0 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 0
|
||||
# define HILETGO_CSNUM MBA_CSNUM
|
||||
# define GPIO_HILETGO_CS GPIO_MBA_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define SSD1306_SPI_BUS 0
|
||||
# define SSD1306_CSNUM MBA_CSNUM
|
||||
# define GPIO_SSD1306_CS GPIO_MBA_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOC | GPIO_PIN1)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOD | GPIO_PIN1)
|
||||
|
||||
#elif defined(CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBB)
|
||||
#elif defined(CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBB)
|
||||
# ifndef CONFIG_SAM34_SPI0
|
||||
# error "The OLED driver requires CONFIG_SAM34_SPI0 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 0
|
||||
# define HILETGO_CSNUM MBB_CSNUM
|
||||
# define GPIO_HILETGO_CS GPIO_MBB_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define SSD1306_SPI_BUS 0
|
||||
# define SSD1306_CSNUM MBB_CSNUM
|
||||
# define GPIO_SSD1306_CS GPIO_MBB_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOC | GPIO_PIN2)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOD | GPIO_PIN2)
|
||||
|
||||
#elif defined(CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBC)
|
||||
#elif defined(CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBC)
|
||||
# ifndef CONFIG_SAM34_SPI0
|
||||
# error "The OLED driver requires CONFIG_SAM34_SPI0 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 0
|
||||
# define HILETGO_CSNUM MBC_CSNUM
|
||||
# define GPIO_HILETGO_CS GPIO_MBC_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define SSD1306_SPI_BUS 0
|
||||
# define SSD1306_CSNUM MBC_CSNUM
|
||||
# define GPIO_SSD1306_CS GPIO_MBC_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOC | GPIO_PIN3)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOD | GPIO_PIN3)
|
||||
|
||||
#elif defined(CONFIG_FLIPNCLICK_SAM3X_HILETGO_MBD)
|
||||
#elif defined(CONFIG_FLIPNCLICK_SAM3X_SSD1306_MBD)
|
||||
# ifndef CONFIG_SAM34_SPI0
|
||||
# error "The OLED driver requires CONFIG_SAM34_SPI0 in the configuration"
|
||||
# endif
|
||||
|
||||
# define HILETGO_SPI_BUS 0
|
||||
# define HILETGO_CSNUM MBD_CSNUM
|
||||
# define GPIO_HILETGO_CS GPIO_MBD_CS
|
||||
# define GPIO_HILETGO_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define SSD1306_SPI_BUS 0
|
||||
# define SSD1306_CSNUM MBD_CSNUM
|
||||
# define GPIO_SSD1306_CS GPIO_MBD_CS
|
||||
# define GPIO_SSD1306_RST (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOC | GPIO_PIN4)
|
||||
# define GPIO_HILETGO_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
# define GPIO_SSD1306_DC (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
|
||||
GPIO_PORT_PIOD | GPIO_PIN6)
|
||||
#endif
|
||||
|
||||
@@ -267,11 +266,11 @@ int sam_bringup(void);
|
||||
* Description:
|
||||
* Called by either NX initialization logic (via board_graphics_setup) or
|
||||
* directly from the board bring-up logic in order to configure the
|
||||
* HiletGo OLED.
|
||||
* SSD1306 OLED.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_HILETGO
|
||||
#ifdef HAVE_SSD1306
|
||||
struct lcd_dev_s; /* Forward reference */
|
||||
FAR struct lcd_dev_s *sam_graphics_setup(unsigned int devno);
|
||||
#endif
|
||||
|
||||
@@ -84,12 +84,12 @@ int sam_bringup(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_HILETGO) && !defined(CONFIG_NXSTART_EXTERNINIT)
|
||||
/* Configure the HiletGo OLED */
|
||||
#if defined(HAVE_SSD1306) && !defined(CONFIG_NXSTART_EXTERNINIT)
|
||||
/* Configure the SSD1306 OLED */
|
||||
|
||||
if (sam_graphics_setup(0) == NULL)
|
||||
{
|
||||
syslog(LOG_ERR,"ERROR: Failed to configure the HiletGo OLED\n");
|
||||
syslog(LOG_ERR,"ERROR: Failed to configure the SSD1306 OLED\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -70,11 +70,11 @@
|
||||
|
||||
void weak_function sam_spidev_initialize(void)
|
||||
{
|
||||
#ifdef HAVE_HILETGO
|
||||
/* Configure the HiletGo chip select and command/data GPIOs */
|
||||
#ifdef HAVE_SSD1306
|
||||
/* Configure the SSD1306 chip select and command/data GPIOs */
|
||||
|
||||
sam_configgpio(GPIO_HILETGO_CS);
|
||||
sam_configgpio(GPIO_HILETGO_DC);
|
||||
sam_configgpio(GPIO_SSD1306_CS);
|
||||
sam_configgpio(GPIO_SSD1306_DC);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -141,14 +141,14 @@ void sam_spi0select(uint32_t devid, bool selected)
|
||||
spiinfo("devid: %08x CS: %s\n",
|
||||
(unsigned int)devid, selected ? "assert" : "de-assert");
|
||||
|
||||
#ifdef HAVE_HILETGO
|
||||
#ifdef HAVE_SSD1306
|
||||
if (devid == SPIDEV_DISPLAY(0))
|
||||
{
|
||||
/* Low: the display is selected
|
||||
* High: the display is deselected
|
||||
*/
|
||||
|
||||
sam_gpiowrite(GPIO_HILETGO_CS, !selected);
|
||||
sam_gpiowrite(GPIO_SSD1306_CS, !selected);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -201,14 +201,14 @@ int sam_spi0cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
|
||||
{
|
||||
spiinfo("devid: %08x %s\n", (unsigned int)devid, cmd ? "cmd" : "data");
|
||||
|
||||
#ifdef HAVE_HILETGO
|
||||
#ifdef HAVE_SSD1306
|
||||
if (devid == SPIDEV_DISPLAY(0))
|
||||
{
|
||||
/* High: the inputs are treated as display data.
|
||||
* Low: the inputs are transferred to the command registers.
|
||||
*/
|
||||
|
||||
sam_gpiowrite(GPIO_HILETGO_DC, !cmd);
|
||||
sam_gpiowrite(GPIO_SSD1306_DC, !cmd);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+8
-8
@@ -1,5 +1,5 @@
|
||||
/****************************************************************************
|
||||
* config/flipnclick-sam3x/src/sam_hiletgo.c
|
||||
* config/flipnclick-sam3x/src/sam_ssd1306.c
|
||||
*
|
||||
* Copyright (C) 2018 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
@@ -33,7 +33,7 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* HiletGo OLED
|
||||
/* SSD1306 OLED
|
||||
*
|
||||
* The HiletGo is a 128x64 OLED that can be driven either via SPI or I2C (SPI
|
||||
* is the default and is what is used here). I have mounted the OLED on a
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include "flipnclick-sam3x.h"
|
||||
|
||||
#ifdef HAVE_HILETGO
|
||||
#ifdef HAVE_SSD1306
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
@@ -93,7 +93,7 @@
|
||||
* Description:
|
||||
* Called by either NX initialization logic (via board_graphics_setup) or
|
||||
* directly from the board bring-up logic in order to configure the
|
||||
* HiletGo OLED.
|
||||
* SSD1306 OLED.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
@@ -106,16 +106,16 @@ FAR struct lcd_dev_s *sam_graphics_setup(unsigned int devno)
|
||||
* putting the OLED into reset state.
|
||||
*/
|
||||
|
||||
sam_configgpio(GPIO_HILETGO_RST);
|
||||
sam_configgpio(GPIO_SSD1306_RST);
|
||||
|
||||
/* Wait a bit then release the OLED from the reset state */
|
||||
|
||||
up_mdelay(20);
|
||||
sam_gpiowrite(GPIO_HILETGO_RST, true);
|
||||
sam_gpiowrite(GPIO_SSD1306_RST, true);
|
||||
|
||||
/* Get the SPI1 port interface */
|
||||
|
||||
spi = sam_spibus_initialize(GPIO_HILETGO_CS);
|
||||
spi = sam_spibus_initialize(GPIO_SSD1306_CS);
|
||||
if (!spi)
|
||||
{
|
||||
lcderr("ERROR: Failed to initialize SPI port 1\n");
|
||||
@@ -169,4 +169,4 @@ FAR struct lcd_dev_s *board_graphics_setup(unsigned int devno)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_HILETGO */
|
||||
#endif /* HAVE_SSD1306 */
|
||||
Reference in New Issue
Block a user