The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_SAMR21G18A/TARGET_Atmel/TARGET_SAM_CortexM0P/drivers/sercom/sercom.h@111:4336505e4b1c
mbed library. Release version 164

Who changed what in which revision?

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