You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

243 lines
8.7 KiB

/* --COPYRIGHT--,BSD
* Copyright (c) 2013, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* --/COPYRIGHT--*/
//*****************************************************************************
//
// HAL_MSP-EXP430G2_Sharp96x96.h - Prototypes for the Sharp96x96 LCD display driver.
// There is no output from Sharp96x96 LCD.
//
// MSP430G2XX LCD Sharp96x96
// ----------------- -----------------
// | UCB0CLK/P1.5|---------> |SCLK EXTCOMIN|-- 0
// /|\| | | |
// | | UCB0SIMO/P1.7|---------> |SI EXTMODE|-- 0
// --|RST | | |
// | UCB0STE/P1.4|---------> |SCS |
// | | | |
// | P1.3|---------> |DISP |
// | | | |
// | | | |
// | | -----------------
//
//*****************************************************************************
#include <stdint.h>
#ifndef __HAL_MSP-EXP430G2_SHARPLCD_H__
#define __HAL_MSP-EXP430G2_SHARPLCD_H__
//*****************************************************************************
//
// User Configuration for the LCD Driver
//
//*****************************************************************************
// Ports from MSP430 connected to LCD
#define LCD_MOSI_PORT P1OUT
#define LCD_SCLK_PORT P1OUT
#define LCD_POWER_DISP_PORT P1OUT
#define LCD_POWER_DISP_DIR P1DIR
#define LCD_SCS_PORT P1OUT
#define LCD_SCS_DIR P1DIR
// Pins from MSP430 connected to LCD
#define LCD_MOSI_PIN BIT7
#define LCD_MOSI_PORT_SEL1 P1SEL
#define LCD_MOSI_PORT_SEL2 P1SEL2
#define LCD_SCLK_PIN BIT5
#define LCD_SCLK_PORT_SEL1 P1SEL
#define LCD_SCLK_PORT_SEL2 P1SEL2
#define LCD_POWER_PIN BIT0
#define LCD_DISP_PIN BIT3
#define LCD_SCS_PIN BIT4
// LCD Screen Dimensions
#define LCD_VERTICAL_MAX 96
#define LCD_HORIZONTAL_MAX 96
// Non-volatile Memory used to store DisplayBuffer
#define NON_VOLATILE_MEMORY_BUFFER
#ifdef NON_VOLATILE_MEMORY_BUFFER
#define USE_FLASH_BUFFER
#define NON_VOLATILE_MEMORY_ADDRESS 0xf400
#endif //NON_VOLATILE_MEMORY_BUFFER
//*****************************************************************************
//
// Clears CS line
//
// This macro allows to clear the Chip Select (CS) line
//
// \return None
//
//*****************************************************************************
#define ClearCS() \
LCD_SCS_PORT &= ~LCD_SCS_PIN;
//*****************************************************************************
//
// Set CS line
//
// This macro allows to set the Chip Select (CS) line
//
// \return None
//
//*****************************************************************************
#define SetCS() \
LCD_SCS_PORT |= LCD_SCS_PIN;
//*****************************************************************************
//
// Waits until the SPI communication with the LCD is finished a command to
// the LCD Driver
//
// \param None
//
// \return None
//*****************************************************************************
#define WaitUntilLcdWriteFinished() \
while (UCB0STAT & UCBUSY)
//*****************************************************************************
//
// Writes command or data to the LCD Driver
//
// \param ucCmdData is the 8 or 16 bit command to send to the LCD driver
// Uses the SET_LCD_DATA macro
//
// \return None
//
//*****************************************************************************
#define WriteCmdData(ucCmdData) \
do \
{ \
while (!(IFG2 & UCB0TXIFG)); \
UCB0TXBUF = ucCmdData; \
} \
while(0)
//*****************************************************************************
//
// Unlocks FLASH controller
//
// This macro unlocks flash memory controller.
//
// \return None
//
//*****************************************************************************
#define UnlockFlashMemory() \
FCTL3 = FWKEY
//*****************************************************************************
//
// Sets access right on FLASH controller
//
// \param uiAccesType defines access right. Valid parameters:
// WRT.- Set Write access on flash controller
// ERASE.- Sets Erase
//
// This macro sets the proper write or erase access on FLASH controller.
// \return None
//
//*****************************************************************************
#define SetFlashAccessRight(uiAccessType) \
FCTL1 = FWKEY + uiAccessType
//*****************************************************************************
//
// Removes access right on FLASH controller
//
// This macro removes access rights on FLASH controller.
// \return None
//
//*****************************************************************************
#define RemoveFlashAccessRight() \
FCTL1 = FWKEY
//*****************************************************************************
//
// Locks FLASH controller
//
// This macro locks flash memory controller.
//
// \return None
//
//*****************************************************************************
#define LockFlashMemory() \
FCTL3 = FWKEY + LOCK
//*****************************************************************************
//
// Prepare to write memory
//
// This macro unlocks flash memory controller and
// sets access right on flash controller
//
// \return None
//
//*****************************************************************************
#define PrepareMemoryWrite() \
UnlockFlashMemory(); \
SetFlashAccessRight(WRT)
//*****************************************************************************
//
// Finish memory writing
//
// This macro removes access rights on flash controller and
// locks flash memory controller.
//
// \return None
//
//*****************************************************************************
#define FinishMemoryWrite() \
RemoveFlashAccessRight(); \
LockFlashMemory()
//*****************************************************************************
//
// Prototypes for the globals exported by this driver.
//
//*****************************************************************************
extern void LCDInit(void);
extern void InitializeDisplayBuffer(void *pvDisplayData, uint8_t ucValue);
#endif // __HAL_MSP-EXP430G2_SHARPLCD_H__