View detail for Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver

SMART ARM-based Microcontrollers
AT07910: SAM4L Liquid Crystal Display (LCDCA)
Driver
APPLICATION NOTE
Introduction
®
®
This driver for Atmel | SMART ARM -based microcontrollers provides an
interface for the configuration and management of the device's Liquid Crystal
Display Controller functionality.
The LCD controller is intended for monochrome passive Liquid Crystal
Displays (LCDs) with up to four common terminals and up to 40 segment
terminals.
Devices from the following series can use this module:
•
Atmel | SMART SAM4L
The outline of this documentation is as follows:
•
Prerequisites
•
Module Overview
•
Special Considerations
•
Extra Information
•
Examples
•
API Overview
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
Table of Contents
Introduction......................................................................................................................1
1. Software License....................................................................................................... 5
2. Prerequisites..............................................................................................................6
3. Module Overview....................................................................................................... 7
3.1.
3.2.
3.3.
Display Physiology....................................................................................................................... 7
Supported Display Types..............................................................................................................7
Functional Description..................................................................................................................7
4. Special Considerations.............................................................................................. 8
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
I/O Lines....................................................................................................................................... 8
Power Management..................................................................................................................... 8
Clocks...........................................................................................................................................8
Interrupts...................................................................................................................................... 8
Wake Up.......................................................................................................................................8
Debug Operation.......................................................................................................................... 8
5. Extra Information....................................................................................................... 9
6. Examples................................................................................................................. 10
7. API Overview........................................................................................................... 11
7.1.
7.2.
7.3.
Variable and Type Definitions..................................................................................................... 11
7.1.1.
Type lcdca_automated_char_config_t......................................................................... 11
7.1.2.
Type lcdca_blink_config_t............................................................................................ 11
7.1.3.
Type lcdca_callback_t.................................................................................................. 11
7.1.4.
Type lcdca_circular_shift_config_t............................................................................... 11
7.1.5.
Type lcdca_config_t..................................................................................................... 11
Structure Definitions................................................................................................................... 11
7.2.1.
Struct lcdca_automated_char_config...........................................................................11
7.2.2.
Struct lcdca_blink_config............................................................................................. 12
7.2.3.
Struct lcdca_circular_shift_config................................................................................ 12
7.2.4.
Struct lcdca_config...................................................................................................... 12
Macro Definitions........................................................................................................................13
7.3.1.
7.3.2.
7.3.3.
7.3.4.
7.3.5.
7.3.6.
7.3.7.
7.3.8.
7.3.9.
7.3.10.
LCDCA Address Limits................................................................................................ 13
LCDCA Display Digit....................................................................................................13
LCDCA Timer Resource.............................................................................................. 14
LCDCA CMCFG Digit Reverse Mode..........................................................................14
LCDCA Duty Selection................................................................................................ 14
LCDCA Blink Mode......................................................................................................15
LCDCA Shift Register Direction...................................................................................15
LCDCA Automated Mode............................................................................................ 15
LCDCA Automated Direction....................................................................................... 15
Macro LCDCA_AUTOMATED_CHAR_DMA_CH........................................................ 16
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
2
7.4.
Function Definitions....................................................................................................................16
7.4.1.
7.4.2.
7.4.3.
7.4.4.
7.4.5.
7.4.6.
7.4.7.
7.4.8.
7.4.9.
7.4.10.
7.4.11.
7.4.12.
7.4.13.
7.4.14.
7.4.15.
7.4.16.
7.4.17.
7.4.18.
7.4.19.
7.4.20.
7.4.21.
7.4.22.
7.4.23.
7.4.24.
7.4.25.
7.4.26.
7.4.27.
7.4.28.
7.4.29.
7.4.30.
7.4.31.
7.4.32.
7.4.33.
7.4.34.
7.4.35.
7.4.36.
Function lcdca_automated_char_reload()................................................................... 16
Function lcdca_automated_char_set_config().............................................................16
Function lcdca_automated_char_start()...................................................................... 16
Function lcdca_automated_char_stop()...................................................................... 17
Function lcdca_blink_disable().................................................................................... 17
Function lcdca_blink_enable()..................................................................................... 17
Function lcdca_blink_set_config()............................................................................... 17
Function lcdca_circular_shift_disable()........................................................................17
Function lcdca_circular_shift_enable()........................................................................ 17
Function lcdca_circular_shift_set_config()...................................................................18
Function lcdca_clear_blink_all_pixel()......................................................................... 18
Function lcdca_clear_blink_pixel()...............................................................................18
Function lcdca_clear_display_memory()..................................................................... 18
Function lcdca_clear_pixel()........................................................................................ 18
Function lcdca_clear_status()......................................................................................19
Function lcdca_clk_init().............................................................................................. 19
Function lcdca_disable()..............................................................................................19
Function lcdca_disable_interrupt()...............................................................................19
Function lcdca_disable_timer()....................................................................................19
Function lcdca_disable_wakeup()............................................................................... 19
Function lcdca_enable().............................................................................................. 19
Function lcdca_enable_interrupt()............................................................................... 20
Function lcdca_enable_timer().................................................................................... 20
Function lcdca_enable_wakeup()................................................................................ 20
Function lcdca_get_pixel()...........................................................................................20
Function lcdca_get_status().........................................................................................20
Function lcdca_lock_shadow_dislay()......................................................................... 21
Function lcdca_set_blink_pixel()..................................................................................21
Function lcdca_set_callback()..................................................................................... 21
Function lcdca_set_config().........................................................................................21
Function lcdca_set_contrast()......................................................................................22
Function lcdca_set_display_memory()........................................................................ 22
Function lcdca_set_pixel()........................................................................................... 22
Function lcdca_toggle_pixel()...................................................................................... 22
Function lcdca_unlock_shadow_dislay()..................................................................... 22
Function lcdca_write_packet()..................................................................................... 23
8. Extra Information for Liquid Crystal Display Controller Driver................................. 24
8.1.
8.2.
8.3.
8.4.
Acronyms....................................................................................................................................24
Dependencies.............................................................................................................................24
Errata..........................................................................................................................................24
Module History............................................................................................................................24
9. Examples for Liquid Crystal Display Controller........................................................25
9.1.
Quick Start Guide for the LCDCA Driver.................................................................................... 25
9.1.1.
Use Cases................................................................................................................... 25
9.1.2.
LCDCA Basic Usage................................................................................................... 25
9.1.3.
Setup Steps................................................................................................................. 25
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
3
9.1.4.
9.2.
Usage Steps................................................................................................................ 26
Liquid Crystal Controller - Example Interfacing to a C42048A Display...................................... 27
9.2.1.
Purpose....................................................................................................................... 27
9.2.2.
Requirements.............................................................................................................. 27
9.2.3.
Description...................................................................................................................28
9.2.4.
Main Files.................................................................................................................... 28
9.2.5.
Compilation Information...............................................................................................28
9.2.6.
Usage.......................................................................................................................... 28
10. Document Revision History..................................................................................... 29
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
4
1.
Software License
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer.
2. 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.
3. The name of Atmel may not be used to endorse or promote products derived from this software without
specific prior written permission.
4. This software may only be redistributed and used in connection with an Atmel microcontroller product.
THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY AND SPECIFICALLY
DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
5
2.
Prerequisites
There are no prerequisites for this module.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
6
3.
Module Overview
3.1.
Display Physiology
An LCD is made up of several segments (or complete symbols), which can be visible or invisible. Any
single segment has two electrodes, with liquid crystal between them. These electrodes are connected to
the common terminal (COM) and the segment terminal (SEG) on the display. When a voltage above a
threshold voltage is applied across the liquid crystal, the segment becomes visible. The voltage must
alternate, to avoid an electrophoresis effect in the liquid crystal, which degrades the display.
3.2.
Supported Display Types
The LCD Controller is intended for use with monochrome passive Liquid Crystal Displays (LCDs) with up
to four common terminals and up to 40 segment terminals.
3.3.
Functional Description
The LCDCA display memory stores the values of all segments to display and should be filled before the
next frame starts.
The start of a new frame triggers the update of the shadow display memory. The content of the display
memory is copied into the shadow display memory. A display memory refresh is possible without affecting
data that is sent to the panel.
Note: The LCDCA display memory is not initialized at power-up.
When any bit in the display memory is written to a one, the corresponding LCD segment will be energized
and opaque. If the same bit has zero written to it, then the corresponding LCD segment is de-energized
and thus transparent.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
7
4.
Special Considerations
4.1.
I/O Lines
The LCDCA pins (SEGx and COMy) are multiplexed with other peripherals. The user application must
first configure the I/O Controller, to give control of the requisite pins to the LCDCA.
4.2.
Power Management
This module can control the LCD display while CLK_LCDCA is disabled, but stops functioning when
CLK_LCD (32kHz) is disabled.
The power consumption of LCDCA itself can be minimized by:
•
Using the lowest acceptable frame rate (refer to the LCD glass technical characteristics)
•
Using the low-power waveform (default mode)
•
Using automated modes of operation
•
Configuring the lowest possible contrast value
4.3.
Clocks
The clock for this module (CLK_LCDCA) is generated by the Power Manager. It can be enabled or
disabled, either manually (via the Power Manager) or automatically when the system enters a sleep mode
that disables the clocks to the peripheral bus modules.
The 32kHz clock (CLK_LCD) must be enabled before use.
4.4.
Interrupts
The LCDCA interrupt request line is connected to the Nested Vectored Interrupt Controller (NVIC). Use of
the LCDCA interrupt requires the interrupt controller to be configured first.
4.5.
Wake Up
The LCD Controller's wake-up signal is connected to the Power Manager Controller (PMC). Use of the
wake-up mechanism requires the PMC to enable the corresponding asynchronous wake-up source first.
Also, the LCDCA interrupt must be enabled first.
4.6.
Debug Operation
When an external debugger forces the CPU into debug mode, the LCDCA continues normal operation.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
8
5.
Extra Information
For extra information, see Extra Information for Liquid Crystal Display Controller Driver. This includes:
•
Acronyms
•
Dependencies
•
Errata
•
Module History
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
9
6.
Examples
For a list of examples related to this driver, see Examples for Liquid Crystal Display Controller.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
10
7.
API Overview
7.1.
Variable and Type Definitions
7.1.1.
Type lcdca_automated_char_config_t
typedef struct lcdca_automated_char_config lcdca_automated_char_config_t
Automated character display configuration structure.
7.1.2.
Type lcdca_blink_config_t
typedef struct lcdca_blink_config lcdca_blink_config_t
Blink configuration structure
7.1.3.
Type lcdca_callback_t
typedef void(* lcdca_callback_t )(void)
LCDCA interrupt callback type
7.1.4.
Type lcdca_circular_shift_config_t
typedef struct lcdca_circular_shift_config lcdca_circular_shift_config_t
Circular shift configuration structure
7.1.5.
Type lcdca_config_t
typedef struct lcdca_config lcdca_config_t
LCDCA controller configuration structure
7.2.
Structure Definitions
7.2.1.
Struct lcdca_automated_char_config
Automated character display configuration structure.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
11
Table 7-1 Members
Type
Name
Description
uint8_t automated_mode Automated display mode selection
uint8_t automated_timer Timer selected for automated mode
7.2.2.
uint8_t dign
Number of digits used in the display
uint8_t dir_reverse
Digit display direction
uint8_t lcd_tdg
Type of digit selected
uint8_t steps
The number of steps to use in scrolling mode. STEPS = string length - DIGN
+1
uint8_t stseg
Start segment
Struct lcdca_blink_config
Blink configuration structure
Table 7-2 Members
7.2.3.
Type
Name
Description
uint8_t
lcd_blink_mode
Blink Mode
uint8_t
lcd_blink_timer
LCDCA blink timer
Struct lcdca_circular_shift_config
Circular shift configuration structure
Table 7-3 Members
7.2.4.
Type
Name
Description
uint8_t
data
Circular shift register value
uint8_t
lcd_csr_dir
Shift direction
uint8_t
lcd_csr_timer
LCDCA shift register timer
uint8_t
size
Size of the circular shift register
Struct lcdca_config
LCDCA controller configuration structure
Table 7-4 Members
Type
Name
Description
int8_t
contrast
Contrast setting
uint8_t
duty_type
Duty type selection
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
12
Type
Name
Description
uint8_t
fc0
Frame Counter 0
uint8_t
fc1
Frame Counter 1
uint8_t
fc2
Frame Counter 2
uint8_t
lcd_clkdiv
Prescale clock source divider
bool
lcd_pres
Clock source prescale bypass enable/disable
bool
lp_wave
Wave mode (false: low power waveform, true: standard waveform)
uint8_t
port_mask
Number of SEGx pin connections used
bool
x_bias
External bias (false: internal gen, true: external gen)
7.3.
Macro Definitions
7.3.1.
LCDCA Address Limits
7.3.1.1.
Macro LCDCA_MAX_NR_OF_COM
#define LCDCA_MAX_NR_OF_COM
Maximum number of common lines
7.3.1.2.
Macro LCDCA_MAX_NBR_OF_SEG
#define LCDCA_MAX_NBR_OF_SEG
Maximum number of segment lines
7.3.2.
LCDCA Display Digit
7.3.2.1.
Macro LCDCA_TDG_7SEG3COM
#define LCDCA_TDG_7SEG3COM
7-segment display with three common terminals
7.3.2.2.
Macro LCDCA_TDG_7SEG4COM
#define LCDCA_TDG_7SEG4COM
7-segment display with four common terminals
7.3.2.3.
Macro LCDCA_TDG_14SEG4COM
#define LCDCA_TDG_14SEG4COM
14-segment display with four common terminals
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
13
7.3.2.4.
Macro LCDCA_TDG_16SEG3COM
#define LCDCA_TDG_16SEG3COM
16-segment display with three common terminals
7.3.3.
LCDCA Timer Resource
7.3.3.1.
Macro LCDCA_TIMER_FC0
#define LCDCA_TIMER_FC0
Timer FC0 resource
7.3.3.2.
Macro LCDCA_TIMER_FC1
#define LCDCA_TIMER_FC1
Timer FC1 resource
7.3.3.3.
Macro LCDCA_TIMER_FC2
#define LCDCA_TIMER_FC2
Timer FC2 resource
7.3.4.
LCDCA CMCFG Digit Reverse Mode
7.3.4.1.
Macro LCDCA_CMCFG_DREV_LEFT
#define LCDCA_CMCFG_DREV_LEFT
Decrement the segment index
7.3.4.2.
Macro LCDCA_CMCFG_DREV_RIGHT
#define LCDCA_CMCFG_DREV_RIGHT
Increment the segment index
7.3.5.
LCDCA Duty Selection.
7.3.5.1.
Macro LCDCA_DUTY_1_4
#define LCDCA_DUTY_1_4
Duty=1/4, Bias=1/3, COM0:3
7.3.5.2.
Macro LCDCA_DUTY_STATIC
#define LCDCA_DUTY_STATIC
Duty=Static, Bias=Static, COM0
7.3.5.3.
Macro LCDCA_DUTY_1_2
#define LCDCA_DUTY_1_2
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
14
Duty=1/2, Bias=1/3, COM0:1
7.3.5.4.
Macro LCDCA_DUTY_1_3
#define LCDCA_DUTY_1_3
Duty=1/3, Bias=1/3, COM0:2
7.3.6.
LCDCA Blink Mode
7.3.6.1.
Macro LCDCA_BLINK_FULL
#define LCDCA_BLINK_FULL
All LCD segments will blink
7.3.6.2.
Macro LCDCA_BLINK_SELECTED
#define LCDCA_BLINK_SELECTED
Only the selected segment will blink
7.3.7.
LCDCA Shift Register Direction
7.3.7.1.
Macro LCDCA_CSR_RIGHT
#define LCDCA_CSR_RIGHT
Right direction
7.3.7.2.
Macro LCDCA_CSR_LEFT
#define LCDCA_CSR_LEFT
Left direction
7.3.8.
LCDCA Automated Mode.
7.3.8.1.
Macro LCDCA_AUTOMATED_MODE_SEQUENTIAL
#define LCDCA_AUTOMATED_MODE_SEQUENTIAL
Sequential character string display mode
7.3.8.2.
Macro LCDCA_AUTOMATED_MODE_SCROLLING
#define LCDCA_AUTOMATED_MODE_SCROLLING
Scrolling character string display mode
7.3.9.
LCDCA Automated Direction.
7.3.9.1.
Macro LCDCA_AUTOMATED_DIR_REVERSE
#define LCDCA_AUTOMATED_DIR_REVERSE
Digit direction is reversed.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
15
7.3.9.2.
Macro LCDCA_AUTOMATED_DIR_NOT_REVERSE
#define LCDCA_AUTOMATED_DIR_NOT_REVERSE
Digit direction is not reversed.
7.3.10.
Macro LCDCA_AUTOMATED_CHAR_DMA_CH
#define LCDCA_AUTOMATED_CHAR_DMA_CH
LCDCA automated character DMA Channel (sequential or scrolling)
7.4.
Function Definitions
7.4.1.
Function lcdca_automated_char_reload()
LCDCA automated display reload.
void lcdca_automated_char_reload(
const uint8_t * data,
size_t width)
Table 7-5 Parameters
7.4.2.
Data direction
Parameter name
Description
[in]
data
Data string buffer pointer
[in]
width
Data string length
Function lcdca_automated_char_set_config()
Configure the LCDCA automated display.
void lcdca_automated_char_set_config(
struct lcdca_automated_char_config * ac_cfg)
Note: The automated display is disabled.
Table 7-6 Parameters
7.4.3.
Data direction
Parameter name
Description
[in]
ac_cfg
Pointer to an automated display configuration structure
Function lcdca_automated_char_start()
Start the LCDCA automated display.
void lcdca_automated_char_start(
const uint8_t * data,
size_t width)
Note: This function also initializes and enables the PDCA channel associated with the LCDCA module.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
16
Table 7-7 Parameters
7.4.4.
Data direction
Parameter name
Description
[in]
data
Data string buffer pointer
[in]
width
Data string length
Function lcdca_automated_char_stop()
Stop the LCDCA automated display mode.
void lcdca_automated_char_stop( void )
Note: This function also disables the PDCA channel associated with the LCDCA module.
7.4.5.
Function lcdca_blink_disable()
Disable the LCDCA blink mode.
void lcdca_blink_disable( void )
7.4.6.
Function lcdca_blink_enable()
Enable the LCDCA blink mode.
void lcdca_blink_enable( void )
7.4.7.
Function lcdca_blink_set_config()
Set the LCDCA blink configuration.
void lcdca_blink_set_config(
struct lcdca_blink_config * blink_cfg)
Table 7-8 Parameters
7.4.8.
Data direction
Parameter name
Description
[in]
blink_cfg
Pointer to the LCD blink configuration structure
Function lcdca_circular_shift_disable()
Disable the LCDCA circular shift mode.
void lcdca_circular_shift_disable( void )
7.4.9.
Function lcdca_circular_shift_enable()
Enable the LCDCA circular shift mode.
void lcdca_circular_shift_enable( void )
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
17
7.4.10.
Function lcdca_circular_shift_set_config()
Set the LCDCA circular shift configuration.
void lcdca_circular_shift_set_config(
struct lcdca_circular_shift_config * cs_cfg)
Note: The circular shift register is disabled.
Table 7-9 Parameters
7.4.11.
Data direction
Parameter name
Description
[in]
cs_cfg
Pointer to a circular shift configuration structure
Function lcdca_clear_blink_all_pixel()
Stop all LCDCA pixels/segments from blinking.
void lcdca_clear_blink_all_pixel( void )
7.4.12.
Function lcdca_clear_blink_pixel()
Stop a specified LCDCA pixel/segment from blinking.
void lcdca_clear_blink_pixel(
uint8_t pix_com,
uint8_t pix_seg)
Table 7-10 Parameters
7.4.13.
Data direction
Parameter name
Description
[in]
pix_com
Pixel/segment COMx coordinate
[in]
pix_seg
Pixel/segment SEGy coordinate (range 0 to 1 inclusive)
Function lcdca_clear_display_memory()
Clear all the LCDCA display memory.
void lcdca_clear_display_memory( void )
7.4.14.
Function lcdca_clear_pixel()
Disable the specified pixel/segment in the LCDCA display memory.
void lcdca_clear_pixel(
uint8_t pix_com,
uint8_t pix_seg)
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
18
Table 7-11 Parameters
7.4.15.
Data direction
Parameter name
Description
[in]
pix_com
Pixel/segment COMx coordinate
[in]
pix_seg
Pixel/segment SEGy coordinate
Function lcdca_clear_status()
Clear the LCDCA beginning of frame interrupt status.
void lcdca_clear_status( void )
7.4.16.
Function lcdca_clk_init()
LCDCA clock initialization.
void lcdca_clk_init( void )
7.4.17.
Function lcdca_disable()
Disable the LCDCA module.
void lcdca_disable( void )
7.4.18.
Function lcdca_disable_interrupt()
Disable the LCDCA beginning of frame interrupt.
void lcdca_disable_interrupt( void )
7.4.19.
Function lcdca_disable_timer()
Disable the specified LCDCA timer.
void lcdca_disable_timer(
uint8_t lcd_timer)
Table 7-12 Parameters
7.4.20.
Data direction
Parameter name
Description
[in]
lcd_timer
Timer number to be disabled
Function lcdca_disable_wakeup()
Disable the LCDCA wake-up.
void lcdca_disable_wakeup( void )
7.4.21.
Function lcdca_enable()
Enable the LCDCA module.
void lcdca_enable( void )
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
19
7.4.22.
Function lcdca_enable_interrupt()
Enable the LCDCA beginning of frame interrupt.
void lcdca_enable_interrupt( void )
7.4.23.
Function lcdca_enable_timer()
Enable the specified LCDCA timer, and wait until it is running.
void lcdca_enable_timer(
uint8_t lcd_timer)
Note: The function lcdca_enable() must be called prior to this function.
Table 7-13 Parameters
7.4.24.
Data direction
Parameter name
Description
[in]
lcd_timer
Timer number to be enabled
Function lcdca_enable_wakeup()
Enable the LCDCA wake-up.
void lcdca_enable_wakeup( void )
7.4.25.
Function lcdca_get_pixel()
Get the specified pixel/segment state from the LCDCA display memory.
bool lcdca_get_pixel(
uint8_t pix_com,
uint8_t pix_seg)
Table 7-14 Parameters
Data direction
Parameter name
Description
[in]
pix_com
Pixel/segment COMx coordinate
[in]
pix_seg
Pixel/segment SEGy coordinate
Returns
The pixel/segment value from the LCDCA display memory.
7.4.26.
Function lcdca_get_status()
Get the LCDCA status register.
uint32_t lcdca_get_status( void )
Returns
The LCDCA status register.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
20
7.4.27.
Function lcdca_lock_shadow_dislay()
Lock the LCDCA shadow display memory.
void lcdca_lock_shadow_dislay( void )
7.4.28.
Function lcdca_set_blink_pixel()
Start an LCDCA pixel/segment blinking.
void lcdca_set_blink_pixel(
uint8_t pix_com,
uint8_t pix_seg)
Table 7-15 Parameters
7.4.29.
Data direction
Parameter name
Description
[in]
pix_com
Pixel/segment COMx coordinate
[in]
pix_seg
Pixel/segment SEGy coordinate (range 0 to 1 inclusive)
Function lcdca_set_callback()
Set the callback for the LCDCA 'beginning of frame' interrupt.
void lcdca_set_callback(
lcdca_callback_t callback,
uint8_t irq_line,
uint8_t irq_level)
Table 7-16 Parameters
7.4.30.
Data direction
Parameter name
Description
[in]
callback
Pointer to an interrupt callback function
[in]
irq_line
Interrupt line
[in]
irq_level
Interrupt priority level
Function lcdca_set_config()
Configure the LCDCA controller.
void lcdca_set_config(
struct lcdca_config * lcdca_cfg)
Table 7-17 Parameters
Data direction
Parameter name
Description
[in]
lcdca_cfg
Pointer to an LCDCA configuration structure
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
21
7.4.31.
Function lcdca_set_contrast()
Set the LCDCA fine contrast.
void lcdca_set_contrast(
int8_t contrast)
Transfer function: VLCD = 3.0V + (fcont[5:0] * 0.016V)
Table 7-18 Parameters
7.4.32.
Data direction
Parameter name
Description
[in]
contrast
Contrast value (range -32 to 31 inclusive)
Function lcdca_set_display_memory()
Set all bits in the LCDCA display memory high.
void lcdca_set_display_memory( void )
7.4.33.
Function lcdca_set_pixel()
Enable the specified pixel/segment in the LCDCA display memory.
void lcdca_set_pixel(
uint8_t pix_com,
uint8_t pix_seg)
Table 7-19 Parameters
7.4.34.
Data direction
Parameter name
Description
[in]
pix_com
Pixel/segment COMx coordinate
[in]
pix_seg
Pixel/segment SEGy coordinate
Function lcdca_toggle_pixel()
Toggle the specified pixel/segment in the LCDCA display memory.
void lcdca_toggle_pixel(
uint8_t pix_com,
uint8_t pix_seg)
Table 7-20 Parameters
7.4.35.
Data direction
Parameter name
Description
[in]
pix_com
Pixel/segment COMx coordinate
[in]
pix_seg
Pixel/segment SEGy coordinate
Function lcdca_unlock_shadow_dislay()
Unlock the LCDCA shadow display memory.
void lcdca_unlock_shadow_dislay( void )
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
22
7.4.36.
Function lcdca_write_packet()
Send a sequence of ASCII bytes to the LCDCA via the digit decoder.
void lcdca_write_packet(
uint8_t lcd_tdg,
uint8_t first_seg,
const uint8_t * data,
size_t width,
uint8_t dir)
Note: If a NULL byte is encountered, or if the width count expires, data will no longer be sent via the
digit decoder and the function returns.
Table 7-21 Parameters
Data direction
Parameter name
Description
[in]
lcd_tdg
Type of digit decoder
[in]
first_seg
First SEG where the data will be written
[in]
data
ASCII data buffer pointer
[in]
width
Maximum number of data bytes
[in]
dir
Direction (0 for left to right, otherwise right to left)
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
23
8.
Extra Information for Liquid Crystal Display Controller Driver
8.1.
Acronyms
Below is a table listing the acronyms used in this module, along with their intended meanings.
8.2.
Acronym
Definition
COM
Common
NVIC
Nested Vectored Interrupt Controller
PDCA
Peripheral DMA Controller
PMC
Power Manager Controller
QSG
Quick Start Guide
SEG
Segment
Dependencies
This driver has the following dependencies:
•
•
•
•
8.3.
Peripheral DMA Controller (PDCA) driver
System clock (sysclk)
Interrupt management
Sleep manager
Errata
There are no errata related to this driver.
8.4.
Module History
An overview of the module history is presented in the table below, with details on the enhancements and
fixes made to the module since its first release. The current version of this corresponds to the newest
version in the table.
Changelog
Initial document release
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
24
9.
Examples for Liquid Crystal Display Controller
This is a list of the available Quick Start Guides (QSGs) and example applications for SAM4L Liquid
Crystal Display (LCDCA) Driver. QSGs are simple examples with step-by-step instructions to configure
and use this driver in a selection of use cases. Note that a QSG can be compiled as a standalone
application or be added to the user application.
•
•
9.1.
Quick Start Guide for the LCDCA Driver
Liquid Crystal Controller - Example Interfacing to a C42048A Display
Quick Start Guide for the LCDCA Driver
This is the quick start guide for the SAM4L Liquid Crystal Display (LCDCA) Driver, with step-by-step
instructions on how to configure and use the driver for a specific use case.
The use cases contain several code fragments. The code fragments in the steps for setup can be copied
into a custom initialization function, while the steps for usage can be copied into, for example, the main
application function.
9.1.1.
Use Cases
•
9.1.2.
LCDCA Basic Usage
LCDCA Basic Usage
This use case will demonstrate how to configure and use the LCDCA module to address an external LCD
segment (C42048A).
9.1.3.
Setup Steps
9.1.3.1.
Prerequisites
This module requires the following services:
•
System clock (sysclk)
•
Sleep Manager
•
Peripheral DMA Controller (PDCA) driver
9.1.3.2.
Setup Code Example
Add these code segments to the main loop, or to a setup function in your application's C-file:
#define PORT_MASK 40
#define LCD_DUTY
LCDCA_DUTY_1_4
#define LCD_CONTRAST_LEVEL 30
struct lcdca_config lcdca_cfg;
//
//
//
//
//
LCDCA Controller initialization
- Clock,
- Connect to C42364A glass LCD component,
- Timing: 64 Hz frame rate & low power waveform, FC0, FC1, FC2
- Interrupt: off.
lcdca_clk_init();
lcdca_cfg.port_mask = PORT_MASK;
lcdca_cfg.x_bias = false;
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
25
lcdca_cfg.lp_wave = true;
lcdca_cfg.duty_type = LCD_DUTY;
lcdca_cfg.lcd_pres = false;
lcdca_cfg.lcd_clkdiv = 3;
lcdca_cfg.fc0 = 16;
lcdca_cfg.fc1 = 2;
lcdca_cfg.fc2 = 6;
lcdca_cfg.contrast = LCD_CONTRAST_LEVEL;
lcdca_set_config(&lcdca_cfg);
lcdca_enable();
lcdca_enable_timer(LCDCA_TIMER_FC0);
lcdca_enable_timer(LCDCA_TIMER_FC1);
lcdca_enable_timer(LCDCA_TIMER_FC2);
/* Turn on LCD back light */
ioport_set_pin_level(LCD_BL_GPIO, IOPORT_PIN_LEVEL_HIGH);
9.1.3.3.
Basic Setup Workflow
1.
Initialize the LCDCA clock:
lcdca_clk_init();
2.
Configure the LCDCA module:
lcdca_set_config(&lcdca_cfg);
3.
Enable the LCDCA module:
lcdca_enable();
4.
Enable the frame counter timers:
lcdca_enable_timer(LCDCA_TIMER_FC0);
lcdca_enable_timer(LCDCA_TIMER_FC1);
lcdca_enable_timer(LCDCA_TIMER_FC2);
5.
Turn on the LCD backlight:
ioport_set_pin_level(LCD_BL_GPIO, IOPORT_PIN_LEVEL_HIGH);
9.1.4.
Usage Steps
9.1.4.1.
Normal Usage
The following functions can be used to set/clear/toggle one pixel/segment:
lcdca_set_pixel(ICON_ARM);
lcdca_clear_pixel(ICON_ARM);
lcdca_toggle_pixel(ICON_ARM);
The function lcdca_write_packet() can be used to display ASCII characters:
// Display in alphanumeric field.
lcdca_write_packet(LCDCA_TDG_14SEG4COM, FIRST_14SEG_4C, data, \
WIDTH_14SEG_4C, DIR_14SEG_4C);
// Display in numeric field.
lcdca_write_packet(LCDCA_TDG_7SEG4COM, FIRST_7SEG_4C, data, \
WIDTH_7SEG_4C, DIR_7SEG_4C);
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
26
The LCD contrast can be changed using:
lcdca_set_contrast(contrast_value);
9.1.4.2.
Using Hardware Blinking
To use hardware blinking:
blink_cfg.lcd_blink_timer = LCDCA_TIMER_FC1;
blink_cfg.lcd_blink_mode = LCDCA_BLINK_SELECTED;
lcdca_blink_set_config(&blink_cfg);
lcdca_set_pixel(ICON_ERROR);
lcdca_set_blink_pixel(ICON_ERROR);
lcdca_blink_enable();
9.1.4.3.
Using Hardware Autonomous Animation
To use the hardware's autonomous segment animation:
cs_cfg.lcd_csr_timer = LCDCA_TIMER_FC1;
cs_cfg.lcd_csr_dir = LCDCA_CSR_RIGHT;
cs_cfg.size = 7;
// Total 7-pixels.
cs_cfg.data = 0x03; // Display 2 pixel at one time.
lcdca_circular_shift_set_config(&cs_cfg);
lcdca_circular_shift_enable();
9.1.4.4.
Using Hardware Automated Character
To use hardware automated character (e.g., scrolling here):
struct lcdca_automated_char_config automated_char_cfg;
uint8_t const scrolling_str[] = \
"Scrolling string display, Press PB0 to cont.
";
automated_char_cfg.automated_mode = LCDCA_AUTOMATED_MODE_SCROLLING;
automated_char_cfg.automated_timer = LCDCA_TIMER_FC2;
automated_char_cfg.lcd_tdg = LCDCA_TDG_14SEG4COM;
automated_char_cfg.stseg = FIRST_14SEG_4C;
automated_char_cfg.dign = WIDTH_14SEG_4C;
/* STEPS = string length - DIGN + 1 */
automated_char_cfg.steps = sizeof(scrolling_str) - WIDTH_14SEG_4C + 1;
automated_char_cfg.dir_reverse = LCDCA_AUTOMATED_DIR_REVERSE;
lcdca_automated_char_set_config(&automated_char_cfg);
lcdca_automated_char_start(scrolling_str, strlen((char const
*)scrolling_str));
9.2.
Liquid Crystal Controller - Example Interfacing to a C42048A Display
9.2.1.
Purpose
This example demonstrates how to use the LCDCA driver to interface to an external LCD (C42048A).
9.2.2.
Requirements
This example can be used with the SAM4L EK evaluation kit.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
27
9.2.3.
Description
The example configures the LCDCA Controller in a mode defined by the LCD glass board connections,
and the technical characteristics of the LCD component used. It uses the following LCDCA controller
features:
•
LCD contrast control
•
Hardware blinking
•
Autonomous segment animation
•
Automated character (sequential and scrolling)
•
•
ASCII digit encoder
LCD beginning of frame interrupt
The LCDCA is set up to use the external 32.768kHz clock to generate LCD frames at 64Hz, using a low
power waveform to reduce toggle activity, and hence power consumption. In order to show the LCD
Controller's capability of running in a power-saving mode, sleep mode is entered whenever possible.
9.2.4.
Main Files
•
•
•
•
9.2.5.
lcdca.c: Liquid Crystal Display Controller driver
lcdca.h: Liquid Crystal Display Controller driver header file
lcdca_example.c: Liquid Crystal Display Controller example application
conf_example.h: Liquid Crystal Display Controller example configuration header file
Compilation Information
®
®
This software is written for GNU GCC and IAR Embedded Workbench for Atmel . Other compilers may
or may not work.
9.2.6.
Usage
1.
2.
3.
4.
Build the program, and download it onto the evaluation board.
®
On the computer, open, and configure a terminal application (e.g., HyperTerminal on Microsoft
®
Windows ) with these settings:
•
115200 baud
•
8 bits of data
•
No parity
•
1 stop bit
•
No flow control
Start the application.
In the terminal window, the following text should appear:
-- LCDCA Controller Example --- xxxxxx-xx
-- Compiled: xxx xx xxxx xx:xx:xx -Press PB0 to stop automated sequential mode and continue.
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
28
10.
Document Revision History
Doc. Rev.
Date
Comments
42296B
07/2015
Updated title of application note and added list of supported devices
42296A
05/2014
Initial document release
Atmel AT07910: SAM4L Liquid Crystal Display (LCDCA) Driver [APPLICATION NOTE]
Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
29
Atmel Corporation
©
1600 Technology Drive, San Jose, CA 95110 USA
T: (+1)(408) 441.0311
F: (+1)(408) 436.4200
|
www.atmel.com
2015 Atmel Corporation. / Rev.: Atmel-42296B-SAM4L-Liquid-Crystal-Display-LCDCA-Driver_AT07910_Application Note-07/2015
®
®
Atmel , Atmel logo and combinations thereof, Enabling Unlimited Possibilities , and others are registered trademarks or trademarks of Atmel Corporation in U.S. and
®
®
®
other countries. ARM , ARM Connected , and others are registered trademarks of ARM Ltd. Windows is a registered trademark of Microsoft Corporation in U.S.
and or other countries. Other terms and product names may be trademarks of others.
DISCLAIMER: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any
intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN THE ATMEL TERMS AND
CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED
OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS AND PROFITS, BUSINESS
INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this
document and reserves the right to make changes to specifications and products descriptions at any time without notice. Atmel does not make any commitment to
update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive
applications. Atmel products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.
SAFETY-CRITICAL, MILITARY, AND AUTOMOTIVE APPLICATIONS DISCLAIMER: Atmel products are not designed for and will not be used in connection with any
applications where the failure of such products would reasonably be expected to result in significant personal injury or death (“Safety-Critical Applications”) without
an Atmel officer's specific written consent. Safety-Critical Applications include, without limitation, life support devices and systems, equipment or systems for the
operation of nuclear facilities and weapons systems. Atmel products are not designed nor intended for use in military or aerospace applications or environments
unless specifically designated by Atmel as military-grade. Atmel products are not designed nor intended for use in automotive applications unless specifically
designated by Atmel as automotive-grade.