Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: cc3000_ping_demo_try_2
Fork of mbed by
Diff: LPC2300_HAL.h
- Revision:
- 11:1c1ebd0324fa
- Parent:
- 10:fcb9359f0959
- Child:
- 12:f63353af7be8
--- a/LPC2300_HAL.h Thu May 14 14:44:00 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,411 +0,0 @@
-/* mbed Microcontroller Library - LPC2300 HAL
- * Copyright (c) 2007-2008, sford
- *
- * This should be anything specific to abstraction the LPC2300
- *
- * The HAL has no state associated with it. It is just a nice way to poke registers
- * It is still specific to the chip, but a neat interface and a bit more general
- * it is subject ot change and not exposed to the general user
- */
-
-#ifndef MBED_LPC2300_HAL_H
-#define MBED_LPC2300_HAL_H
-
-namespace LPC2300 {
-
-/* Section LPC2300 */
-
-//===================================================================
-// General
-//===================================================================
-
-typedef volatile unsigned int reg32;
-
-#define NOT_CONNECTED (-1)
-
-//===================================================================
-// Pin Connect Block
-//===================================================================
-
-/* Function pin_function
- * Set the port function (0-3)
- */
-void pin_function(int port, int function);
-
-/* Function pin_pullup
- * Set the port resistor to pullup
- */
-void pin_pullup(int port);
-
-/* Function pin_pulldown
- * Set the port resistor to pulldown
- */
-void pin_pulldown(int port);
-
-/* Function pin_pullnone
- * Set the port resistor to none
- */
-void pin_pullnone(int port);
-
-//===================================================================
-// GPIO
-//===================================================================
-
-struct GPIORF {
- volatile unsigned int dir; // 0x00
- volatile unsigned int _nc; // 0x04
- volatile unsigned int _nc2; // 0x08
- volatile unsigned int _nc3; // 0x0C
- volatile unsigned int mask; // 0x10
- volatile unsigned int pin; // 0x14
- volatile unsigned int set; // 0x18
- volatile unsigned int clr; // 0x1C
-};
-
-/* Function gpio_input
- * Set the port GPIO as an input
- */
-void gpio_input(int port);
-
-/* Function gpio_output
- * Set the port GPIO as an output
- */
-void gpio_output(int port);
-
-/* Function gpio_write
- * Write a value to the GPIO port (v & 1)
- */
-void gpio_write(int port, int v);
-
-/* Function gpio_read
- * Read a value from the GPIO port (0 or 1)
- */
-int gpio_read(int port);
-
-//===================================================================
-// GPIO IRQs
-//===================================================================
-
-struct GPIOInterruptsRF {
- reg32 StatR; // 0x00
- reg32 StatF; // 0x04
- reg32 Clr; // 0x08
- reg32 EnR; // 0x0C
- reg32 EnF; // 0x10
-};
-
-/* Function gpio_irq_enable_rising
- * Enable the rising edge interrupt
- */
-void gpio_irq_enable_rising(int port);
-
-/* Function gpio_irq_enable_falling
- * Enable the falling edge interrupt
- */
-void gpio_irq_enable_falling(int port);
-
-/* Function gpio_irq_disable_rising
- * Disable the rising edge interrupt
- */
-void gpio_irq_disable_rising(int port);
-
-/* Function gpio_irq_disable_falling
- * Disable the falling edge interrupt
- */
-void gpio_irq_disable_falling(int port);
-
-/* Function gpio_irq_clear
- * Clear rising and falling interrupt for the port
- */
-void gpio_irq_clear(int port);
-
-int gpio_irq_pending();
-int gpio_irq_pending_rising(int port);
-int gpio_irq_pending_falling(int port);
-
-//===================================================================
-// Analog-to-Digital Converter
-//===================================================================
-
-/* Function adc_poweron
- * Turn on the ADC
- */
-void adc_poweron();
-
-/* Function adc_poweroff
- * Turn off the ADC
- */
-void adc_poweroff();
-
-/* Function adc_init
- * Setup the ADC ready for reading
- */
-void adc_init();
-
-/* Function adc_read
- * Read the value of the ADC (10-bit, id 0-5)
- */
-int adc_read(int id);
-
-//===================================================================
-// Digital-to-Analog Converter
-//===================================================================
-
-/* Function dac_poweron
- * Turn on the DAC
- */
-void dac_poweron();
-
-/* Function dac_poweroff
- * Turn off the DAC
- */
-void dac_poweroff();
-
-/* Function dac_init
- * Setup the DAC ready for writinbg
- */
-void dac_init();
-
-/* Function dac_write
- * Write a value to the DAC (10-bit)
- */
-void dac_write(int value);
-
-/* Function dac_read
- * Read the value currently set as the DAC output (10-bit)
- */
-int dac_read();
-
-//===================================================================
-// PWM
-//===================================================================
-
-struct LPC2368_PWM_RF {
- reg32 IR; // 0x00 - Interrupt Register
- reg32 TCR; // 0x04 - Timer Control Register
- reg32 TC; // 0x08 - Timer Counter
- reg32 PR; // 0x0C - Prescale Register
- reg32 PC; // 0x10 - Prescale Counter
- reg32 MCR; // 0x14 - Match Control Register
- reg32 MR0; // 0x18 - Match Register 0
- reg32 MR1; // 0x1C - Match Register 1
- reg32 MR2; // 0x20 - Match Register 2
- reg32 MR3; // 0x24 - Match Register 3
- reg32 CCR; // 0x28 - Capture Control Register
- reg32 CR0; // 0x2C - Capture Register 1
- reg32 CR1; // 0x30 - Capture Register 2
- reg32 CR2; // 0x34 - Capture Register 3
- reg32 CR3; // 0x38 - Capture Register 4
- reg32 EMR; // 0x3C - External Match Register
- reg32 MR4; // 0x40 - Match Register 4
- reg32 MR5; // 0x44 - Match Register 5
- reg32 MR6; // 0x48 - Match Register 6
- reg32 PCR; // 0x4C - PWM Control Register
- reg32 LER; // 0x50 - Load Enable Register
- reg32 _nc[7]; // 0x54-0x6C
- reg32 CTCR; // 0x70 - Count Control Register
-};
-
-#define LPC2368_PWM ((LPC2368_PWM_RF*)PWM1_BASE_ADDR)
-
-#define TCR_CNT_EN (1 << 0)
-#define TCR_RESET (1 << 1)
-#define TCR_PWM_EN (1 << 3)
-
-//===================================================================
-// SPI Master (SSP)
-//===================================================================
-
-struct SPIRF {
- reg32 CR0; // 0x00
- reg32 CR1; // 0x04
- reg32 DR; // 0x08
- reg32 SR; // 0x0C
- reg32 CPSR; // 0x10
- reg32 IMSC; // 0x14
- reg32 RIS; // 0x18
- reg32 MIS; // 0x1C
- reg32 ICR; // 0x20
- reg32 DMACR; // 0x24
-};
-
-void ssp_format(int id, int bits, int phase, int polarity);
-void ssp_frequency(int id, int hz);
-void ssp_enable(int id);
-void ssp_disable(int id);
-
-
-int ssp_read(int id);
-void ssp_write(int id, int value);
-int ssp_readable(int id);
-int ssp_writeable(int id);
-
-void ssp_poweron(int id);
-void ssp_poweroff(int id);
-
-/*
-int ssp_busy(int id);
-void ssp_clear(int id);
-*/
-
-
-//===================================================================
-// Uart
-//===================================================================
-
-struct UartRF {
- union {
- reg32 RBR; // 0x00 - Receive Buffer Register [DLAB=0]
- reg32 THR; // 0x00 - Transmit Holding Register [DLAB=0]
- reg32 DLL; // 0x00 - Divisor Latch (LSB) [DLAB=1]
- };
- union {
- reg32 DLM; // 0x04 - Divisor Latch (MSB) [DLAB=1]
- reg32 IER; // 0x04 - Interrupt Enable Register [DLAB=0]
- };
- union {
- reg32 IIR; // 0x08 - Interrupt ID Register
- reg32 FCR; // 0x08 - Fifo Control Register
- };
- reg32 LCR; // 0x0C - Line Control Register
- reg32 MCR; // 0x10 - Modem Control Register (UART1 only)
- reg32 LSR; // 0x14 - Line Status Register
- reg32 MSR; // 0x18 - Modem Status Register (UART1 only)
- reg32 SCR; // 0x1C - Scratch Pad Register
- reg32 ACR; // 0x20 - Auto-baud Control Register
- reg32 ICR; // 0x24 - IrDA Control Register (UART3 only)
- reg32 FDR; // 0x28 - Fractional Divider Register
- reg32 _nc; // 0x2C - unused
- reg32 TER; // 0x30 - Transmit Enable Register
-};
-
-enum Parity {
- None = 0,
- Odd,
- Even,
- Forced1,
- Forced0
-};
-
-/* Function uart_poweron
- * Turn on the Uart power
- */
-void uart_poweron(int id);
-
-/* Function uart_poweroff
- * Turn off the Uart power
- */
-void uart_poweroff(int id);
-
-void uart_baud(int id, int baudrate);
-void uart_format(int id, int data_bits, Parity parity, int stop_bits);
-void uart_enable(int id);
-void uart_disable(int id);
-
-int uart_getc(int id);
-void uart_putc(int id, int c);
-int uart_readable(int id);
-int uart_writable(int id);
-
-// I2C
-
-struct I2CRF {
- reg32 I2CONSET; // 0x00 - I2C Control Set Register
- reg32 I2STAT; // 0x04 - I2C Status Register
- reg32 I2DAT; // 0x08 - I2C Data Register
- reg32 I2ADR; // 0x0C - I2C Slave Address Register
- reg32 I2SCLH; // 0x10 - SCH Duty Cycle Register High
- reg32 I2SCLL; // 0x14 - SCL Duty Cycle Register Low
- reg32 I2CONCLR; // 0x18 - I2C Control Clear Register
-};
-
-
-void i2c_poweron(int id);
-void i2c_poweroff(int id);
-void i2c_frequency(int id, int hz);
-void i2c_enable(int id);
-void i2c_conset(int id, int start, int stop, int interrupt, int acknowledge);
-void i2c_conclr(int id, int start, int stop, int interrupt, int acknowledge);
-void i2c_wait_SI(int id);
-void i2c_clear_SI(int id);
-int i2c_status(int id);
-int i2c_start(int id, int address);
-int i2c_write(int id, int value);
-void i2c_stop(int id);
-int i2c_read(int id, int last);
-int i2c_read(int id);
-int i2c_readlast(int id);
-
-// Timer
-
-
-struct TimerRF {
- reg32 ir; // 0x00
- reg32 tcr; // 0x04
- reg32 tc; // 0x08
- reg32 pr; // 0x0C
- reg32 pc; // 0x10
- reg32 mcr; // 0x14
- reg32 mr0; // 0x18
- reg32 mr1; // 0x1C
- reg32 mr2; // 0x20
- reg32 mr3; // 0x24
- reg32 ccr; // 0x28
- reg32 cr0; // 0x2C
- reg32 cr1; // 0x30
- reg32 cr2; // 0x34
- reg32 cr3; // 0x38
- reg32 emr; // 0x3C
- reg32 _nc[12]; // 0x40-0x6C
- reg32 ctcr; // 0x70
-};
-
-/* Function timer_poweron
- * Turn on the Timer power
- */
-void timer_poweron(int id);
-
-/* Function timer_poweroff
- * Turn off the Timer power
- */
-void timer_poweroff(int id);
-
-void timer_start(int id, int hz);
-int timer_read(int id);
-
-//===================================================================
-// VIC
-//===================================================================
-
-struct VicRF {
- reg32 IRQStatus; // 0x000
- reg32 FIQStatus; // 0x004
- reg32 RawIntr; // 0x008
- reg32 IntSelect; // 0x00C
- reg32 IntEnable; // 0x010
- reg32 IntEnClr; // 0x014
- reg32 SoftInt; // 0x018
- reg32 SoftIntClear; // 0x01C
- reg32 Protection; // 0x020
- reg32 SWPriorityMask; // 0x024
- reg32 _nc[54]; // 0x028-0x0FC
- reg32 VectAddr[32]; // 0x100-0x17C
- reg32 _nc2[32]; // 0x180-0x1FC
- reg32 VectPriority[32]; // 0x200-0x27C
- reg32 _nc3[800]; // 0x280-0xEFC
- reg32 Address; // 0xF00
-};
-
-void vic_init();
-void vic_vector(int id, void (*fptr)(void) /*__irq*/ , int priority);
-void vic_enable(int id);
-void vic_disable(int id);
-void vic_priority(int id, int priority);
-void vic_acknowledge();
-
-
-
-} // namespace LPC2300
-
-#endif
-
