mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
screamer
Date:
Tue Aug 02 14:07:36 2016 +0000
Revision:
144:423e1876dc07
Parent:
15:a81a8d6c1dfe
Added targets.json file for the supported targets in the release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 15:a81a8d6c1dfe 1 /**
mbed_official 15:a81a8d6c1dfe 2 * \file
mbed_official 15:a81a8d6c1dfe 3 *
mbed_official 15:a81a8d6c1dfe 4 * \brief SAM Serial Peripheral Interface Driver
mbed_official 15:a81a8d6c1dfe 5 *
mbed_official 15:a81a8d6c1dfe 6 * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
mbed_official 15:a81a8d6c1dfe 7 *
mbed_official 15:a81a8d6c1dfe 8 * \asf_license_start
mbed_official 15:a81a8d6c1dfe 9 *
mbed_official 15:a81a8d6c1dfe 10 * \page License
mbed_official 15:a81a8d6c1dfe 11 *
mbed_official 15:a81a8d6c1dfe 12 * Redistribution and use in source and binary forms, with or without
mbed_official 15:a81a8d6c1dfe 13 * modification, are permitted provided that the following conditions are met:
mbed_official 15:a81a8d6c1dfe 14 *
mbed_official 15:a81a8d6c1dfe 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 15:a81a8d6c1dfe 16 * this list of conditions and the following disclaimer.
mbed_official 15:a81a8d6c1dfe 17 *
mbed_official 15:a81a8d6c1dfe 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 15:a81a8d6c1dfe 19 * this list of conditions and the following disclaimer in the documentation
mbed_official 15:a81a8d6c1dfe 20 * and/or other materials provided with the distribution.
mbed_official 15:a81a8d6c1dfe 21 *
mbed_official 15:a81a8d6c1dfe 22 * 3. The name of Atmel may not be used to endorse or promote products derived
mbed_official 15:a81a8d6c1dfe 23 * from this software without specific prior written permission.
mbed_official 15:a81a8d6c1dfe 24 *
mbed_official 15:a81a8d6c1dfe 25 * 4. This software may only be redistributed and used in connection with an
mbed_official 15:a81a8d6c1dfe 26 * Atmel microcontroller product.
mbed_official 15:a81a8d6c1dfe 27 *
mbed_official 15:a81a8d6c1dfe 28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
mbed_official 15:a81a8d6c1dfe 29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
mbed_official 15:a81a8d6c1dfe 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
mbed_official 15:a81a8d6c1dfe 31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
mbed_official 15:a81a8d6c1dfe 32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 15:a81a8d6c1dfe 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
mbed_official 15:a81a8d6c1dfe 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
mbed_official 15:a81a8d6c1dfe 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
mbed_official 15:a81a8d6c1dfe 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
mbed_official 15:a81a8d6c1dfe 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
mbed_official 15:a81a8d6c1dfe 38 * POSSIBILITY OF SUCH DAMAGE.
mbed_official 15:a81a8d6c1dfe 39 *
mbed_official 15:a81a8d6c1dfe 40 * \asf_license_stop
mbed_official 15:a81a8d6c1dfe 41 *
mbed_official 15:a81a8d6c1dfe 42 */
mbed_official 15:a81a8d6c1dfe 43 /*
mbed_official 15:a81a8d6c1dfe 44 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
mbed_official 15:a81a8d6c1dfe 45 */
mbed_official 15:a81a8d6c1dfe 46
mbed_official 15:a81a8d6c1dfe 47 #ifndef SERCOM_H_INCLUDED
mbed_official 15:a81a8d6c1dfe 48 #define SERCOM_H_INCLUDED
mbed_official 15:a81a8d6c1dfe 49
mbed_official 15:a81a8d6c1dfe 50 #include <compiler.h>
mbed_official 15:a81a8d6c1dfe 51 #include <system.h>
mbed_official 15:a81a8d6c1dfe 52 #include <clock.h>
mbed_official 15:a81a8d6c1dfe 53 #include <system_interrupt.h>
mbed_official 15:a81a8d6c1dfe 54 #include "sercom_pinout.h"
mbed_official 15:a81a8d6c1dfe 55
mbed_official 15:a81a8d6c1dfe 56 #ifdef __cplusplus
mbed_official 15:a81a8d6c1dfe 57 extern "C" {
mbed_official 15:a81a8d6c1dfe 58 #endif
mbed_official 15:a81a8d6c1dfe 59
mbed_official 15:a81a8d6c1dfe 60 #if (SAMD10) || (SAMD11)
mbed_official 15:a81a8d6c1dfe 61
mbed_official 15:a81a8d6c1dfe 62 #if (SERCOM0_GCLK_ID_SLOW == SERCOM1_GCLK_ID_SLOW && \
mbed_official 15:a81a8d6c1dfe 63 SERCOM0_GCLK_ID_SLOW == SERCOM2_GCLK_ID_SLOW)
mbed_official 15:a81a8d6c1dfe 64 # define SERCOM_GCLK_ID SERCOM0_GCLK_ID_SLOW
mbed_official 15:a81a8d6c1dfe 65 #else
mbed_official 15:a81a8d6c1dfe 66 # error "SERCOM modules must share the same slow GCLK channel ID."
mbed_official 15:a81a8d6c1dfe 67 #endif
mbed_official 15:a81a8d6c1dfe 68
mbed_official 15:a81a8d6c1dfe 69 #else
mbed_official 15:a81a8d6c1dfe 70
mbed_official 15:a81a8d6c1dfe 71 #if (SERCOM0_GCLK_ID_SLOW == SERCOM1_GCLK_ID_SLOW && \
mbed_official 15:a81a8d6c1dfe 72 SERCOM0_GCLK_ID_SLOW == SERCOM2_GCLK_ID_SLOW && \
mbed_official 15:a81a8d6c1dfe 73 SERCOM0_GCLK_ID_SLOW == SERCOM3_GCLK_ID_SLOW)
mbed_official 15:a81a8d6c1dfe 74 # define SERCOM_GCLK_ID SERCOM0_GCLK_ID_SLOW
mbed_official 15:a81a8d6c1dfe 75 #else
mbed_official 15:a81a8d6c1dfe 76 # error "SERCOM modules must share the same slow GCLK channel ID."
mbed_official 15:a81a8d6c1dfe 77 #endif
mbed_official 15:a81a8d6c1dfe 78
mbed_official 15:a81a8d6c1dfe 79 #endif
mbed_official 15:a81a8d6c1dfe 80
mbed_official 15:a81a8d6c1dfe 81 #if (0x1ff >= REV_SERCOM)
mbed_official 15:a81a8d6c1dfe 82 # define FEATURE_SERCOM_SYNCBUSY_SCHEME_VERSION_1
mbed_official 15:a81a8d6c1dfe 83 #elif (0x400 >= REV_SERCOM)
mbed_official 15:a81a8d6c1dfe 84 # define FEATURE_SERCOM_SYNCBUSY_SCHEME_VERSION_2
mbed_official 15:a81a8d6c1dfe 85 #else
mbed_official 15:a81a8d6c1dfe 86 # error "Unknown SYNCBUSY scheme for this SERCOM revision"
mbed_official 15:a81a8d6c1dfe 87 #endif
mbed_official 15:a81a8d6c1dfe 88
mbed_official 15:a81a8d6c1dfe 89 /**
mbed_official 15:a81a8d6c1dfe 90 * \brief sercom asynchronous operation mode
mbed_official 15:a81a8d6c1dfe 91 *
mbed_official 15:a81a8d6c1dfe 92 * Select sercom asynchronous operation mode
mbed_official 15:a81a8d6c1dfe 93 */
mbed_official 15:a81a8d6c1dfe 94 enum sercom_asynchronous_operation_mode {
mbed_official 15:a81a8d6c1dfe 95 SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC = 0,
mbed_official 15:a81a8d6c1dfe 96 SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL,
mbed_official 15:a81a8d6c1dfe 97 };
mbed_official 15:a81a8d6c1dfe 98
mbed_official 15:a81a8d6c1dfe 99 /**
mbed_official 15:a81a8d6c1dfe 100 * \brief sercom asynchronous samples per bit
mbed_official 15:a81a8d6c1dfe 101 *
mbed_official 15:a81a8d6c1dfe 102 * Select number of samples per bit
mbed_official 15:a81a8d6c1dfe 103 */
mbed_official 15:a81a8d6c1dfe 104 enum sercom_asynchronous_sample_num {
mbed_official 15:a81a8d6c1dfe 105 SERCOM_ASYNC_SAMPLE_NUM_3 = 3,
mbed_official 15:a81a8d6c1dfe 106 SERCOM_ASYNC_SAMPLE_NUM_8 = 8,
mbed_official 15:a81a8d6c1dfe 107 SERCOM_ASYNC_SAMPLE_NUM_16 = 16,
mbed_official 15:a81a8d6c1dfe 108 };
mbed_official 15:a81a8d6c1dfe 109
mbed_official 15:a81a8d6c1dfe 110 enum status_code sercom_set_gclk_generator(
mbed_official 15:a81a8d6c1dfe 111 const enum gclk_generator generator_source,
mbed_official 15:a81a8d6c1dfe 112 const bool force_change);
mbed_official 15:a81a8d6c1dfe 113
mbed_official 15:a81a8d6c1dfe 114 enum status_code _sercom_get_sync_baud_val(
mbed_official 15:a81a8d6c1dfe 115 const uint32_t baudrate,
mbed_official 15:a81a8d6c1dfe 116 const uint32_t external_clock,
mbed_official 15:a81a8d6c1dfe 117 uint16_t *const baudval);
mbed_official 15:a81a8d6c1dfe 118
mbed_official 15:a81a8d6c1dfe 119 enum status_code _sercom_get_async_baud_val(
mbed_official 15:a81a8d6c1dfe 120 const uint32_t baudrate,
mbed_official 15:a81a8d6c1dfe 121 const uint32_t peripheral_clock,
mbed_official 15:a81a8d6c1dfe 122 uint16_t *const baudval,
mbed_official 15:a81a8d6c1dfe 123 enum sercom_asynchronous_operation_mode mode,
mbed_official 15:a81a8d6c1dfe 124 enum sercom_asynchronous_sample_num sample_num);
mbed_official 15:a81a8d6c1dfe 125
mbed_official 15:a81a8d6c1dfe 126 uint32_t _sercom_get_default_pad(
mbed_official 15:a81a8d6c1dfe 127 Sercom *const sercom_module,
mbed_official 15:a81a8d6c1dfe 128 const uint8_t pad);
mbed_official 15:a81a8d6c1dfe 129
mbed_official 15:a81a8d6c1dfe 130 uint8_t _sercom_get_sercom_inst_index(
mbed_official 15:a81a8d6c1dfe 131 Sercom *const sercom_instance);
mbed_official 15:a81a8d6c1dfe 132 #ifdef __cplusplus
mbed_official 15:a81a8d6c1dfe 133 }
mbed_official 15:a81a8d6c1dfe 134 #endif
mbed_official 15:a81a8d6c1dfe 135
mbed_official 15:a81a8d6c1dfe 136 #endif //__SERCOM_H_INCLUDED