ltv350qv.c File Reference


Detailed Description

Power on and power down sequence for the LTV350QV display on the STK1000.

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/
$Name$
Revision
595
$RCSfile$
Date
2007-08-24 10:13:07 +0200 (Fri, 24 Aug 2007)

Definition in file ltv350qv.c.

#include "spi.h"
#include "pm.h"
#include <stdio.h>
#include <sys/sysregs.h>

Include dependency graph for ltv350qv.c:

Go to the source code of this file.

Defines

#define sysreg_read(addr)   __builtin_mfsr(addr)
#define sysreg_write(addr, value)   __builtin_mtsr(addr, value)
#define write_reg(spi, reg, val)

Functions

static unsigned int get_count (void)
void ltv350qv_power_off (volatile avr32_spi_t *spi, unsigned char chip_select)
 Power off sequence for the dispaly.
void ltv350qv_power_on (volatile avr32_spi_t *spi, unsigned char chip_select)
 Power on sequence for the display.
static int ltv350qv_write_reg (volatile avr32_spi_t *spi, unsigned char reg, unsigned short val)
 Write to a display register.
void usart_print (volatile struct avr32_usart_t *usart, char *str)
void usdelay (unsigned long usec)
 Delay execution for a specificated time.

Variables

struct avr32_usart_t * usart
 USART used for console output.


Define Documentation

#define sysreg_read ( addr   )     __builtin_mfsr(addr)

Definition at line 52 of file ltv350qv.c.

Referenced by get_count().

#define sysreg_write ( addr,
value   )     __builtin_mtsr(addr, value)

Definition at line 53 of file ltv350qv.c.

#define write_reg ( spi,
reg,
val   ) 

Value:

do {                                            \
                ret = ltv350qv_write_reg(spi, reg, val);        \
                if (ret){                               \
                        usart_print(usart, "Error spi timeout\n");\
                        goto out;                       \
                }\
        } while (0)

Definition at line 56 of file ltv350qv.c.

Referenced by ltv350qv_power_off(), and ltv350qv_power_on().


Function Documentation

static unsigned int get_count ( void   )  [inline, static]

Definition at line 68 of file ltv350qv.c.

References sysreg_read.

Referenced by usdelay().

00069 {
00070         return sysreg_read(SYSREG_COUNT);
00071 }

void ltv350qv_power_off ( volatile avr32_spi_t *  spi,
unsigned char  chip_select 
)

Power off sequence for the dispaly.

Parameters:
spi Pointer to the SPI interface
chip_select Chip select number

Definition at line 172 of file ltv350qv.c.

References spi_selectChip(), usart, usart_print(), usdelay(), and write_reg.

00173 {
00174         int ret;
00175         spi_selectChip(spi, chip_select);
00176         usart_print(usart,"ltv350qv: do power off sequence\n");
00177         /* GON -> 0, POC -> 0 */
00178         write_reg(spi, 9, 0x4055);
00179         /* DSC -> 0 */
00180         write_reg(spi, 5, 0x4003);
00181         /* VCOMG -> 0 */
00182         write_reg(spi, 10, 0x2103);
00183 
00184         usdelay(1000000);
00185 
00186         /* AP[2:0] -> 000 */
00187         write_reg(spi, 9, 0x4050);
00188 
00189         usart_print(usart,"ltv350qv: power off sequence done\n");
00190 out:
00191         return;
00192 }

Here is the call graph for this function:

void ltv350qv_power_on ( volatile avr32_spi_t *  spi,
unsigned char  chip_select 
)

Power on sequence for the display.

Parameters:
spi Pointer to the SPI interface
chip_select Chip select number

Definition at line 127 of file ltv350qv.c.

References spi_selectChip(), usart, usart_print(), usdelay(), and write_reg.

Referenced by main().

00128 {
00129         int ret;
00130 
00131         usart_print(usart,"ltv350qv: do power on sequence\n");
00132         spi_selectChip(spi, chip_select);
00133         /* write startup procedure */
00134         write_reg(spi, 9, 0x0000);
00135         usdelay(15000);
00136         write_reg(spi, 9, 0x4000);
00137         write_reg(spi, 10, 0x2000);
00138         write_reg(spi, 9, 0x4055);
00139         usdelay(55000);
00140         write_reg(spi, 1, 0x409d);
00141         write_reg(spi, 2, 0x0204);
00142         write_reg(spi, 3, 0x0100);
00143         write_reg(spi, 4, 0x3000);
00144         write_reg(spi, 5, 0x4003);
00145         write_reg(spi, 6, 0x000a);
00146         write_reg(spi, 7, 0x0021);
00147         write_reg(spi, 8, 0x0c00);
00148         write_reg(spi, 10, 0x0103);
00149         write_reg(spi, 11, 0x0301);
00150         write_reg(spi, 12, 0x1f0f);
00151         write_reg(spi, 13, 0x1f0f);
00152         write_reg(spi, 14, 0x0707);
00153         write_reg(spi, 15, 0x0307);
00154         write_reg(spi, 16, 0x0707);
00155         write_reg(spi, 17, 0x0000);
00156         write_reg(spi, 18, 0x0004);
00157         write_reg(spi, 19, 0x0000);
00158 
00159         usdelay(20000);
00160         write_reg(spi, 9, 0x4a55);
00161         write_reg(spi, 5, 0x5003);
00162 
00163         usart_print(usart,"ltv350qv: power on sequence done\n");
00164 out:
00165         return;
00166 }

Here is the call graph for this function:

static int ltv350qv_write_reg ( volatile avr32_spi_t *  spi,
unsigned char  reg,
unsigned short  val 
) [static]

Write to a display register.

Parameters:
spi Pointer to the SPI interface
reg Register
val Register value

Definition at line 97 of file ltv350qv.c.

References SPI_OK, and spi_variableSlaveWrite().

00098 {
00099         int i;
00100         unsigned char buffer[3];
00101 
00102         buffer[0] = 0x74;
00103         buffer[1] = 0x00;
00104         buffer[2] = reg & 0x7f;
00105         
00106         for( i = 0; i <= 2; i++){
00107                 if( spi_variableSlaveWrite(spi, buffer[i], 1, (i == 2 ? 1 : 0)) != SPI_OK)
00108                         return -1;
00109         }
00110 
00111         buffer[0] = 0x76;
00112         buffer[1] = val >> 8;
00113         buffer[2] = val;
00114         
00115         for( i = 0; i <= 2; i++){
00116                 if( spi_variableSlaveWrite(spi, buffer[i], 1, (i == 2 ? 1 : 0)) != SPI_OK)
00117                         return -1;
00118         }
00119         return 0;
00120 }

Here is the call graph for this function:

void usart_print ( volatile struct avr32_usart_t *  usart,
char *  str 
)

Definition at line 29 of file at32stk1000.c.

References usart_putchar().

Referenced by board_init(), ltv350qv_power_off(), ltv350qv_power_on(), main(), and usart_printHex().

00030 {
00031         while (*str != '\0')
00032                 usart_putchar(usart, *str++);
00033 }

Here is the call graph for this function:

void usdelay ( unsigned long  usec  ) 

Delay execution for a specificated time.

Parameters:
usec Delay in microseconds

Definition at line 77 of file ltv350qv.c.

References get_count(), and pm_read_mclk().

Referenced by ltv350qv_power_off(), ltv350qv_power_on(), and main().

00078 {
00079         unsigned long start, stop;
00080         unsigned long ticks;
00081 
00082         start = get_count();
00083         ticks = usec * (pm_read_mclk() / 1000000);
00084         stop = start + ticks;
00085 
00086         if (start > stop)
00087                 while (get_count() > start) ;
00088         
00089         while (get_count() < stop) ;
00090 }

Here is the call graph for this function:


Variable Documentation

struct avr32_usart_t* usart

USART used for console output.

Definition at line 130 of file lcdc_moving_bitmap_example.c.

Referenced by board_init(), init_uart_a(), ltv350qv_power_off(), ltv350qv_power_on(), and main().


Generated on Wed May 7 16:03:17 2008 for AVR32114 Using the AVR32 LCD Controller by  doxygen 1.5.3-20071008