Satellite Observers Workbench. NOT yet complete, just published for forum posters to \"cherry pick\" pieces of code as requiered as an example.

Dependencies:   mbed

Committer:
AjK
Date:
Mon Oct 11 10:34:55 2010 +0000
Revision:
0:0a841b89d614
Totally Alpha quality as this project isn\t completed. Just publishing it as it answers many questions asked in the forums

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AjK 0:0a841b89d614 1 /****************************************************************************
AjK 0:0a841b89d614 2 * Copyright 2010 Andy Kirkham, Stellar Technologies Ltd
AjK 0:0a841b89d614 3 *
AjK 0:0a841b89d614 4 * This file is part of the Satellite Observers Workbench (SOWB).
AjK 0:0a841b89d614 5 *
AjK 0:0a841b89d614 6 * SOWB is free software: you can redistribute it and/or modify
AjK 0:0a841b89d614 7 * it under the terms of the GNU General Public License as published by
AjK 0:0a841b89d614 8 * the Free Software Foundation, either version 3 of the License, or
AjK 0:0a841b89d614 9 * (at your option) any later version.
AjK 0:0a841b89d614 10 *
AjK 0:0a841b89d614 11 * SOWB is distributed in the hope that it will be useful,
AjK 0:0a841b89d614 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
AjK 0:0a841b89d614 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
AjK 0:0a841b89d614 14 * GNU General Public License for more details.
AjK 0:0a841b89d614 15 *
AjK 0:0a841b89d614 16 * You should have received a copy of the GNU General Public License
AjK 0:0a841b89d614 17 * along with SOWB. If not, see <http://www.gnu.org/licenses/>.
AjK 0:0a841b89d614 18 *
AjK 0:0a841b89d614 19 * $Id: main.cpp 5 2010-07-12 20:51:11Z ajk $
AjK 0:0a841b89d614 20 *
AjK 0:0a841b89d614 21 ***************************************************************************/
AjK 0:0a841b89d614 22
AjK 0:0a841b89d614 23 #ifndef FLASH_H
AjK 0:0a841b89d614 24 #define FLASH_H
AjK 0:0a841b89d614 25
AjK 0:0a841b89d614 26 #define FLASH_PAGE_SIZE 256
AjK 0:0a841b89d614 27
AjK 0:0a841b89d614 28 #define FLASH_WIP_TEST_TIME 2
AjK 0:0a841b89d614 29
AjK 0:0a841b89d614 30 #define FLASH_WREN 0x06
AjK 0:0a841b89d614 31 #define FLASH_WRDI 0x04
AjK 0:0a841b89d614 32 #define FLASH_RDID 0x9F
AjK 0:0a841b89d614 33 #define FLASH_RDSR 0x05
AjK 0:0a841b89d614 34 #define FLASH_WRSR 0x01
AjK 0:0a841b89d614 35 #define FLASH_READ 0x03
AjK 0:0a841b89d614 36 #define FLASH_FAST_READ 0x0B
AjK 0:0a841b89d614 37 #define FLASH_PP 0x02
AjK 0:0a841b89d614 38 #define FLASH_SE 0xD8
AjK 0:0a841b89d614 39 #define FLASH_BE 0xC7
AjK 0:0a841b89d614 40
AjK 0:0a841b89d614 41 #define DMA_CHANNEL_ENABLE 1
AjK 0:0a841b89d614 42 //#define DMA_CHANNEL_SRC_PERIPHERAL_SSP1_RX (3UL << 1)
AjK 0:0a841b89d614 43 //#define DMA_CHANNEL_SRC_PERIPHERAL_SSP1_TX (2UL << 1)
AjK 0:0a841b89d614 44 //#define DMA_CHANNEL_DST_PERIPHERAL_SSP1_RX (3UL << 6)
AjK 0:0a841b89d614 45 //#define DMA_CHANNEL_DST_PERIPHERAL_SSP1_TX (2UL << 6)
AjK 0:0a841b89d614 46 #define DMA_CHANNEL_SRC_PERIPHERAL_SSP0_RX (1UL << 1)
AjK 0:0a841b89d614 47 #define DMA_CHANNEL_SRC_PERIPHERAL_SSP0_TX (0UL << 1)
AjK 0:0a841b89d614 48 #define DMA_CHANNEL_DST_PERIPHERAL_SSP0_RX (1UL << 6)
AjK 0:0a841b89d614 49 #define DMA_CHANNEL_DST_PERIPHERAL_SSP0_TX (0UL << 6)
AjK 0:0a841b89d614 50 #define DMA_CHANNEL_SRC_INC (1UL << 26)
AjK 0:0a841b89d614 51 #define DMA_CHANNEL_DST_INC (1UL << 27)
AjK 0:0a841b89d614 52 #define DMA_CHANNEL_TCIE (1UL << 31)
AjK 0:0a841b89d614 53 #define DMA_TRANSFER_TYPE_M2M (0UL << 11)
AjK 0:0a841b89d614 54 #define DMA_TRANSFER_TYPE_M2P (1UL << 11)
AjK 0:0a841b89d614 55 #define DMA_TRANSFER_TYPE_P2M (2UL << 11)
AjK 0:0a841b89d614 56 #define DMA_TRANSFER_TYPE_P2P (3UL << 11)
AjK 0:0a841b89d614 57 #define DMA_MASK_IE (1UL << 14)
AjK 0:0a841b89d614 58 #define DMA_MASK_ITC (1UL << 15)
AjK 0:0a841b89d614 59 #define DMA_LOCK (1UL << 16)
AjK 0:0a841b89d614 60 #define DMA_ACTIVE (1UL << 17)
AjK 0:0a841b89d614 61 #define DMA_HALT (1UL << 18)
AjK 0:0a841b89d614 62
AjK 0:0a841b89d614 63 #define FLASH_SHORT_COMMAND(x) \
AjK 0:0a841b89d614 64 SSP0_WRITE_BYTE(x); \
AjK 0:0a841b89d614 65 while(SSP0_IS_BUSY); \
AjK 0:0a841b89d614 66 SSP0_FLUSH_RX_FIFO;
AjK 0:0a841b89d614 67
AjK 0:0a841b89d614 68 #define FLASH_LONG_COMMAND(x,y) \
AjK 0:0a841b89d614 69 SSP0_WRITE_BYTE(x); \
AjK 0:0a841b89d614 70 SSP0_WRITE_BYTE((y >> 8) & (0xFF)); \
AjK 0:0a841b89d614 71 SSP0_WRITE_BYTE(y & 0xFF); \
AjK 0:0a841b89d614 72 SSP0_WRITE_BYTE(0); \
AjK 0:0a841b89d614 73 while(SSP0_IS_BUSY); \
AjK 0:0a841b89d614 74 SSP0_FLUSH_RX_FIFO;
AjK 0:0a841b89d614 75
AjK 0:0a841b89d614 76 #define FLASH_WAIT_WHILE_WIP \
AjK 0:0a841b89d614 77 SSP0_CS_ASSERT; \
AjK 0:0a841b89d614 78 FLASH_SHORT_COMMAND(FLASH_RDSR); \
AjK 0:0a841b89d614 79 SSP0_FLUSH_RX_FIFO; \
AjK 0:0a841b89d614 80 do { \
AjK 0:0a841b89d614 81 SSP0_WRITE_BYTE(0); \
AjK 0:0a841b89d614 82 } \
AjK 0:0a841b89d614 83 while (LPC_SSP0->DR & 0x1); \
AjK 0:0a841b89d614 84 SSP0_CS_DEASSERT;
AjK 0:0a841b89d614 85
AjK 0:0a841b89d614 86
AjK 0:0a841b89d614 87 /* Defined in flash.c */
AjK 0:0a841b89d614 88 void flash_init(void);
AjK 0:0a841b89d614 89 void flash_process(void);
AjK 0:0a841b89d614 90 char flash_getc(bool peek);
AjK 0:0a841b89d614 91 void flash_seek(unsigned int addr);
AjK 0:0a841b89d614 92
AjK 0:0a841b89d614 93 /* Defined in flash_read.c */
AjK 0:0a841b89d614 94 bool flash_read_in_progress(void);
AjK 0:0a841b89d614 95 void flash_read_page(unsigned int page_address, char *buffer, bool block);
AjK 0:0a841b89d614 96
AjK 0:0a841b89d614 97 /* Defined in flash_write.c */
AjK 0:0a841b89d614 98 int flash_erase_sector(int sector);
AjK 0:0a841b89d614 99 bool flash_write_in_progress(void);
AjK 0:0a841b89d614 100 bool flash_sector_erase_in_progress(void);
AjK 0:0a841b89d614 101 int flash_page_write(int page, char *buffer);
AjK 0:0a841b89d614 102
AjK 0:0a841b89d614 103 /* Defined in flash_erase.c */
AjK 0:0a841b89d614 104 bool flash_sector_erase_in_progress(void);
AjK 0:0a841b89d614 105 int flash_erase_sector(int sector);
AjK 0:0a841b89d614 106 int flash_erase_bulk(void);
AjK 0:0a841b89d614 107
AjK 0:0a841b89d614 108 /* Defined in 25AA02E44.c */
AjK 0:0a841b89d614 109 void _25AA02E48_init(void);
AjK 0:0a841b89d614 110 void _25AA02E48_mac_addr(char *);
AjK 0:0a841b89d614 111 void _25AA02E48_mac_addr_printable(char *, char);
AjK 0:0a841b89d614 112
AjK 0:0a841b89d614 113 #endif