mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

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

Committer:
mbed_official
Date:
Fri Jul 17 09:15:10 2015 +0100
Revision:
592:a274ee790e56
Parent:
579:53297373a894
Synchronized with git revision e7144f83a8d75df80c4877936b6ffe552b0be9e6

Full URL: https://github.com/mbedmicro/mbed/commit/e7144f83a8d75df80c4877936b6ffe552b0be9e6/

More API implementation for SAMR21

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 579:53297373a894 1 #ifndef SERCOM_H_INCLUDED
mbed_official 579:53297373a894 2 #define SERCOM_H_INCLUDED
mbed_official 579:53297373a894 3
mbed_official 579:53297373a894 4 #include <compiler.h>
mbed_official 579:53297373a894 5 #include <system.h>
mbed_official 579:53297373a894 6 #include <clock.h>
mbed_official 579:53297373a894 7 #include <system_interrupt.h>
mbed_official 579:53297373a894 8 #include "sercom_pinout.h"
mbed_official 579:53297373a894 9
mbed_official 579:53297373a894 10 #ifdef __cplusplus
mbed_official 579:53297373a894 11 extern "C" {
mbed_official 579:53297373a894 12 #endif
mbed_official 579:53297373a894 13
mbed_official 579:53297373a894 14 #if (SAMD10) || (SAMD11)
mbed_official 579:53297373a894 15
mbed_official 579:53297373a894 16 #if (SERCOM0_GCLK_ID_SLOW == SERCOM1_GCLK_ID_SLOW && \
mbed_official 579:53297373a894 17 SERCOM0_GCLK_ID_SLOW == SERCOM2_GCLK_ID_SLOW)
mbed_official 579:53297373a894 18 # define SERCOM_GCLK_ID SERCOM0_GCLK_ID_SLOW
mbed_official 579:53297373a894 19 #else
mbed_official 579:53297373a894 20 # error "SERCOM modules must share the same slow GCLK channel ID."
mbed_official 579:53297373a894 21 #endif
mbed_official 579:53297373a894 22
mbed_official 579:53297373a894 23 #else
mbed_official 579:53297373a894 24
mbed_official 579:53297373a894 25 #if (SERCOM0_GCLK_ID_SLOW == SERCOM1_GCLK_ID_SLOW && \
mbed_official 579:53297373a894 26 SERCOM0_GCLK_ID_SLOW == SERCOM2_GCLK_ID_SLOW && \
mbed_official 579:53297373a894 27 SERCOM0_GCLK_ID_SLOW == SERCOM3_GCLK_ID_SLOW)
mbed_official 579:53297373a894 28 # define SERCOM_GCLK_ID SERCOM0_GCLK_ID_SLOW
mbed_official 579:53297373a894 29 #else
mbed_official 579:53297373a894 30 # error "SERCOM modules must share the same slow GCLK channel ID."
mbed_official 579:53297373a894 31 #endif
mbed_official 579:53297373a894 32
mbed_official 579:53297373a894 33 #endif
mbed_official 579:53297373a894 34
mbed_official 579:53297373a894 35 #if (0x1ff >= REV_SERCOM)
mbed_official 579:53297373a894 36 # define FEATURE_SERCOM_SYNCBUSY_SCHEME_VERSION_1
mbed_official 579:53297373a894 37 #elif (0x2ff >= REV_SERCOM)
mbed_official 579:53297373a894 38 # define FEATURE_SERCOM_SYNCBUSY_SCHEME_VERSION_2
mbed_official 579:53297373a894 39 #else
mbed_official 579:53297373a894 40 # error "Unknown SYNCBUSY scheme for this SERCOM revision"
mbed_official 579:53297373a894 41 #endif
mbed_official 579:53297373a894 42
mbed_official 579:53297373a894 43 /**
mbed_official 579:53297373a894 44 * \brief sercom asynchronous operation mode
mbed_official 579:53297373a894 45 *
mbed_official 579:53297373a894 46 * Select sercom asynchronous operation mode
mbed_official 579:53297373a894 47 */
mbed_official 579:53297373a894 48 enum sercom_asynchronous_operation_mode {
mbed_official 579:53297373a894 49 SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC = 0,
mbed_official 579:53297373a894 50 SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL,
mbed_official 579:53297373a894 51 };
mbed_official 579:53297373a894 52
mbed_official 579:53297373a894 53 /**
mbed_official 579:53297373a894 54 * \brief sercom asynchronous samples per bit
mbed_official 579:53297373a894 55 *
mbed_official 579:53297373a894 56 * Select number of samples per bit
mbed_official 579:53297373a894 57 */
mbed_official 579:53297373a894 58 enum sercom_asynchronous_sample_num {
mbed_official 579:53297373a894 59 SERCOM_ASYNC_SAMPLE_NUM_3 = 3,
mbed_official 579:53297373a894 60 SERCOM_ASYNC_SAMPLE_NUM_8 = 8,
mbed_official 579:53297373a894 61 SERCOM_ASYNC_SAMPLE_NUM_16 = 16,
mbed_official 579:53297373a894 62 };
mbed_official 579:53297373a894 63
mbed_official 579:53297373a894 64 enum status_code sercom_set_gclk_generator(
mbed_official 579:53297373a894 65 const enum gclk_generator generator_source,
mbed_official 579:53297373a894 66 const bool force_change);
mbed_official 579:53297373a894 67
mbed_official 579:53297373a894 68 enum status_code _sercom_get_sync_baud_val(
mbed_official 579:53297373a894 69 const uint32_t baudrate,
mbed_official 579:53297373a894 70 const uint32_t external_clock,
mbed_official 579:53297373a894 71 uint16_t *const baudval);
mbed_official 579:53297373a894 72
mbed_official 579:53297373a894 73 enum status_code _sercom_get_async_baud_val(
mbed_official 579:53297373a894 74 const uint32_t baudrate,
mbed_official 579:53297373a894 75 const uint32_t peripheral_clock,
mbed_official 579:53297373a894 76 uint16_t *const baudval,
mbed_official 579:53297373a894 77 enum sercom_asynchronous_operation_mode mode,
mbed_official 579:53297373a894 78 enum sercom_asynchronous_sample_num sample_num);
mbed_official 579:53297373a894 79
mbed_official 579:53297373a894 80 uint32_t _sercom_get_default_pad(
mbed_official 579:53297373a894 81 Sercom *const sercom_module,
mbed_official 579:53297373a894 82 const uint8_t pad);
mbed_official 579:53297373a894 83
mbed_official 579:53297373a894 84 uint8_t _sercom_get_sercom_inst_index(
mbed_official 579:53297373a894 85 Sercom *const sercom_instance);
mbed_official 579:53297373a894 86 #ifdef __cplusplus
mbed_official 579:53297373a894 87 }
mbed_official 579:53297373a894 88 #endif
mbed_official 579:53297373a894 89
mbed_official 579:53297373a894 90 #endif //__SERCOM_H_INCLUDED