added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
80:bdf1132a57cf
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 80:bdf1132a57cf 1 /* mbed Microcontroller Library
mbed_official 80:bdf1132a57cf 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 80:bdf1132a57cf 3 *
mbed_official 80:bdf1132a57cf 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 80:bdf1132a57cf 5 * you may not use this file except in compliance with the License.
mbed_official 80:bdf1132a57cf 6 * You may obtain a copy of the License at
mbed_official 80:bdf1132a57cf 7 *
mbed_official 80:bdf1132a57cf 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 80:bdf1132a57cf 9 *
mbed_official 80:bdf1132a57cf 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 80:bdf1132a57cf 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 80:bdf1132a57cf 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 80:bdf1132a57cf 13 * See the License for the specific language governing permissions and
mbed_official 80:bdf1132a57cf 14 * limitations under the License.
mbed_official 80:bdf1132a57cf 15 */
mbed_official 80:bdf1132a57cf 16 #include "mbed_assert.h"
mbed_official 80:bdf1132a57cf 17 #include "analogin_api.h"
mbed_official 80:bdf1132a57cf 18
mbed_official 80:bdf1132a57cf 19 #include "cmsis.h"
mbed_official 80:bdf1132a57cf 20 #include "pinmap.h"
mbed_official 80:bdf1132a57cf 21
mbed_official 80:bdf1132a57cf 22 #define ADC_12BIT_RANGE 0xFFF
mbed_official 80:bdf1132a57cf 23
mbed_official 80:bdf1132a57cf 24 static const PinMap PinMap_ADC[] = {
mbed_official 80:bdf1132a57cf 25 {A0_0, ADC0_0, 0},
mbed_official 80:bdf1132a57cf 26 {A0_1, ADC0_1, 0},
mbed_official 80:bdf1132a57cf 27 {A0_2, ADC0_2, 0},
mbed_official 80:bdf1132a57cf 28 {A0_3, ADC0_3, 0},
mbed_official 80:bdf1132a57cf 29 {A0_4, ADC0_4, 0},
mbed_official 80:bdf1132a57cf 30 {A0_5, ADC0_5, 0},
mbed_official 80:bdf1132a57cf 31 {A1_0, ADC0_6, 0},
mbed_official 80:bdf1132a57cf 32 {A1_1, ADC0_7, 0},
mbed_official 80:bdf1132a57cf 33 {A1_2, ADC0_8, 0},
mbed_official 80:bdf1132a57cf 34 {A1_3, ADC0_9, 0},
mbed_official 80:bdf1132a57cf 35 {A1_4, ADC0_10, 0},
mbed_official 80:bdf1132a57cf 36 {A1_5, ADC0_11, 0},
mbed_official 80:bdf1132a57cf 37 {NC, NC, 0}
mbed_official 80:bdf1132a57cf 38 };
mbed_official 80:bdf1132a57cf 39
mbed_official 80:bdf1132a57cf 40 static const PinMap PinMap_SPI_SCLK[] = {
mbed_official 80:bdf1132a57cf 41 {ADC_SCLK , SPI_3, 0},
mbed_official 80:bdf1132a57cf 42 {NC , NC , 0}
mbed_official 80:bdf1132a57cf 43 };
mbed_official 80:bdf1132a57cf 44
mbed_official 80:bdf1132a57cf 45 static const PinMap PinMap_SPI_MOSI[] = {
mbed_official 80:bdf1132a57cf 46 {ADC_MOSI, SPI_3, 0},
mbed_official 80:bdf1132a57cf 47 {NC , NC , 0}
mbed_official 80:bdf1132a57cf 48 };
mbed_official 80:bdf1132a57cf 49
mbed_official 80:bdf1132a57cf 50 static const PinMap PinMap_SPI_MISO[] = {
mbed_official 80:bdf1132a57cf 51 {ADC_MISO, SPI_3, 0},
mbed_official 80:bdf1132a57cf 52 {NC , NC , 0}
mbed_official 80:bdf1132a57cf 53 };
mbed_official 80:bdf1132a57cf 54
mbed_official 80:bdf1132a57cf 55 static const PinMap PinMap_SPI_SSEL[] = {
mbed_official 80:bdf1132a57cf 56 {ADC_SSEL, SPI_3, 0},
mbed_official 80:bdf1132a57cf 57 {NC , NC , 0}
mbed_official 80:bdf1132a57cf 58 };
mbed_official 80:bdf1132a57cf 59
mbed_official 80:bdf1132a57cf 60 #define ADC_RANGE ADC_12BIT_RANGE
mbed_official 80:bdf1132a57cf 61 int analog_spi_inited = 0;
mbed_official 80:bdf1132a57cf 62
mbed_official 80:bdf1132a57cf 63 void analogin_init(analogin_t *obj, PinName pin) {
mbed_official 80:bdf1132a57cf 64
mbed_official 80:bdf1132a57cf 65 obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
mbed_official 80:bdf1132a57cf 66 MBED_ASSERT(obj->adc != (ADCName)NC);
mbed_official 80:bdf1132a57cf 67 obj->pin = pin;
mbed_official 80:bdf1132a57cf 68 obj->pin_number = pin-600;
mbed_official 80:bdf1132a57cf 69 obj->address = (0x0000 | (pin-600));
mbed_official 80:bdf1132a57cf 70
mbed_official 80:bdf1132a57cf 71 SPIName adc_mosi = (SPIName)pinmap_peripheral(ADC_MOSI, PinMap_SPI_MOSI);
mbed_official 80:bdf1132a57cf 72 SPIName adc_miso = (SPIName)pinmap_peripheral(ADC_MISO, PinMap_SPI_MISO);
mbed_official 80:bdf1132a57cf 73 SPIName adc_sclk = (SPIName)pinmap_peripheral(ADC_SCLK, PinMap_SPI_SCLK);
mbed_official 80:bdf1132a57cf 74 SPIName adc_ssel = (SPIName)pinmap_peripheral(ADC_SSEL, PinMap_SPI_SSEL);
mbed_official 80:bdf1132a57cf 75 SPIName adc_data = (SPIName)pinmap_merge(adc_mosi, adc_miso);
mbed_official 80:bdf1132a57cf 76 SPIName adc_cntl = (SPIName)pinmap_merge(adc_sclk, adc_ssel);
mbed_official 80:bdf1132a57cf 77 obj->adc_spi = (MPS2_SSP_TypeDef*)pinmap_merge(adc_data, adc_cntl);
mbed_official 80:bdf1132a57cf 78
mbed_official 80:bdf1132a57cf 79 if(analog_spi_inited == 0){
mbed_official 80:bdf1132a57cf 80 obj->adc_spi->CR1 = 0;
mbed_official 80:bdf1132a57cf 81 obj->adc_spi->CR0 = SSP_CR0_SCR_DFLT | SSP_CR0_FRF_MOT | SSP_CR0_DSS_16;
mbed_official 80:bdf1132a57cf 82 obj->adc_spi->CPSR = SSP_CPSR_DFLT;
mbed_official 80:bdf1132a57cf 83 obj->adc_spi->IMSC = 0x8;
mbed_official 80:bdf1132a57cf 84 obj->adc_spi->DMACR = 0;
mbed_official 80:bdf1132a57cf 85 obj->adc_spi->CR1 = SSP_CR1_SSE_Msk;
mbed_official 80:bdf1132a57cf 86 obj->adc_spi->ICR = 0x3;
mbed_official 80:bdf1132a57cf 87 analog_spi_inited = 1;
mbed_official 80:bdf1132a57cf 88 }
mbed_official 80:bdf1132a57cf 89
mbed_official 80:bdf1132a57cf 90 pinmap_pinout(ADC_MOSI, PinMap_SPI_MOSI);
mbed_official 80:bdf1132a57cf 91 pinmap_pinout(ADC_MISO, PinMap_SPI_MISO);
mbed_official 80:bdf1132a57cf 92 pinmap_pinout(ADC_SCLK, PinMap_SPI_SCLK);
mbed_official 80:bdf1132a57cf 93 pinmap_pinout(ADC_SSEL, PinMap_SPI_SSEL);
mbed_official 80:bdf1132a57cf 94 pinmap_pinout(pin, PinMap_ADC);
mbed_official 80:bdf1132a57cf 95 }
mbed_official 80:bdf1132a57cf 96
mbed_official 80:bdf1132a57cf 97 static inline uint32_t adc_read(analogin_t *obj) {
mbed_official 80:bdf1132a57cf 98 return 0;
mbed_official 80:bdf1132a57cf 99 }
mbed_official 80:bdf1132a57cf 100
mbed_official 80:bdf1132a57cf 101
mbed_official 80:bdf1132a57cf 102 float analogin_read(analogin_t *obj) {
mbed_official 80:bdf1132a57cf 103 uint32_t value = adc_read(obj);
mbed_official 80:bdf1132a57cf 104 return 0;
mbed_official 80:bdf1132a57cf 105 }
mbed_official 80:bdf1132a57cf 106
mbed_official 80:bdf1132a57cf 107 uint16_t analogin_read_u16(analogin_t *obj) {
mbed_official 80:bdf1132a57cf 108 return 0;
mbed_official 80:bdf1132a57cf 109 }
mbed_official 80:bdf1132a57cf 110