Xsens / Mbed 2 deprecated MTi-1_fwu_example

Dependencies:   mbed-rtos mbed

Committer:
tjerkhofmeijer
Date:
Tue Nov 24 13:35:07 2015 +0100
Revision:
0:6fca643f1aff
Initial publication of embedded firmware updater example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tjerkhofmeijer 0:6fca643f1aff 1 /*!
tjerkhofmeijer 0:6fca643f1aff 2 * \file
tjerkhofmeijer 0:6fca643f1aff 3 * \copyright Copyright (C) Xsens Technologies B.V., 2015.
tjerkhofmeijer 0:6fca643f1aff 4 *
tjerkhofmeijer 0:6fca643f1aff 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
tjerkhofmeijer 0:6fca643f1aff 6 * use this file except in compliance with the License. You may obtain a copy
tjerkhofmeijer 0:6fca643f1aff 7 * of the License at
tjerkhofmeijer 0:6fca643f1aff 8 *
tjerkhofmeijer 0:6fca643f1aff 9 * http://www.apache.org/licenses/LICENSE-2.0
tjerkhofmeijer 0:6fca643f1aff 10 *
tjerkhofmeijer 0:6fca643f1aff 11 * Unless required by applicable law or agreed to in writing, software
tjerkhofmeijer 0:6fca643f1aff 12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
tjerkhofmeijer 0:6fca643f1aff 13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
tjerkhofmeijer 0:6fca643f1aff 14 * License for the specific language governing permissions and limitations
tjerkhofmeijer 0:6fca643f1aff 15 * under the License.
tjerkhofmeijer 0:6fca643f1aff 16 */
tjerkhofmeijer 0:6fca643f1aff 17 #include "mtssp_spi_driver.h"
tjerkhofmeijer 0:6fca643f1aff 18 #include <string.h>
tjerkhofmeijer 0:6fca643f1aff 19 #include "board.h"
tjerkhofmeijer 0:6fca643f1aff 20
tjerkhofmeijer 0:6fca643f1aff 21
tjerkhofmeijer 0:6fca643f1aff 22 /*! \class MtsspSpiDriver
tjerkhofmeijer 0:6fca643f1aff 23 \brief Implementation of MtsspDriver for communicating over SPI.
tjerkhofmeijer 0:6fca643f1aff 24
tjerkhofmeijer 0:6fca643f1aff 25 The low level SPI driver is provided by the mbed platform.
tjerkhofmeijer 0:6fca643f1aff 26 */
tjerkhofmeijer 0:6fca643f1aff 27
tjerkhofmeijer 0:6fca643f1aff 28
tjerkhofmeijer 0:6fca643f1aff 29 /*! \brief Constructor
tjerkhofmeijer 0:6fca643f1aff 30 */
tjerkhofmeijer 0:6fca643f1aff 31 MtsspSpiDriver::MtsspSpiDriver()
tjerkhofmeijer 0:6fca643f1aff 32 {
tjerkhofmeijer 0:6fca643f1aff 33 m_chipSelect = new DigitalOut(MT_nCS, 1);
tjerkhofmeijer 0:6fca643f1aff 34 *m_chipSelect = 1;
tjerkhofmeijer 0:6fca643f1aff 35 wait(0.1);
tjerkhofmeijer 0:6fca643f1aff 36 m_spi = new SPI(MT_MOSI, MT_MISO, MT_SCLK);
tjerkhofmeijer 0:6fca643f1aff 37
tjerkhofmeijer 0:6fca643f1aff 38 m_spi->frequency(1000000);
tjerkhofmeijer 0:6fca643f1aff 39 m_spi->format(8, 3);
tjerkhofmeijer 0:6fca643f1aff 40 }
tjerkhofmeijer 0:6fca643f1aff 41
tjerkhofmeijer 0:6fca643f1aff 42
tjerkhofmeijer 0:6fca643f1aff 43 /*! \brief Destructor
tjerkhofmeijer 0:6fca643f1aff 44 */
tjerkhofmeijer 0:6fca643f1aff 45 MtsspSpiDriver::~MtsspSpiDriver()
tjerkhofmeijer 0:6fca643f1aff 46 {
tjerkhofmeijer 0:6fca643f1aff 47 delete m_chipSelect;
tjerkhofmeijer 0:6fca643f1aff 48 delete m_spi;
tjerkhofmeijer 0:6fca643f1aff 49 }
tjerkhofmeijer 0:6fca643f1aff 50
tjerkhofmeijer 0:6fca643f1aff 51
tjerkhofmeijer 0:6fca643f1aff 52 /*! \brief Perform a blocking write transfer over SPI
tjerkhofmeijer 0:6fca643f1aff 53 \param opcode Opcode to use
tjerkhofmeijer 0:6fca643f1aff 54 \param data Pointer to data to be written
tjerkhofmeijer 0:6fca643f1aff 55 \param dataLength Number of data bytes to write
tjerkhofmeijer 0:6fca643f1aff 56 */
tjerkhofmeijer 0:6fca643f1aff 57 void MtsspSpiDriver::write(uint8_t opcode, uint8_t const* data, int dataLength)
tjerkhofmeijer 0:6fca643f1aff 58 {
tjerkhofmeijer 0:6fca643f1aff 59 *m_chipSelect = 0;
tjerkhofmeijer 0:6fca643f1aff 60 m_spi->write(opcode);
tjerkhofmeijer 0:6fca643f1aff 61 m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 62 m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 63 m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 64
tjerkhofmeijer 0:6fca643f1aff 65 for (int i = 0; i < dataLength; i++)
tjerkhofmeijer 0:6fca643f1aff 66 {
tjerkhofmeijer 0:6fca643f1aff 67 m_spi->write(data[i]);
tjerkhofmeijer 0:6fca643f1aff 68 }
tjerkhofmeijer 0:6fca643f1aff 69
tjerkhofmeijer 0:6fca643f1aff 70 *m_chipSelect = 1;
tjerkhofmeijer 0:6fca643f1aff 71 }
tjerkhofmeijer 0:6fca643f1aff 72
tjerkhofmeijer 0:6fca643f1aff 73
tjerkhofmeijer 0:6fca643f1aff 74 /*! \brief Perform a blocking read transfer over SPI
tjerkhofmeijer 0:6fca643f1aff 75 \param opcode Opcode to use
tjerkhofmeijer 0:6fca643f1aff 76 \param data Pointer to result buffer
tjerkhofmeijer 0:6fca643f1aff 77 \param dataLength Number of data bytes to read
tjerkhofmeijer 0:6fca643f1aff 78 */
tjerkhofmeijer 0:6fca643f1aff 79 void MtsspSpiDriver::read(uint8_t opcode, uint8_t* data, int dataLength)
tjerkhofmeijer 0:6fca643f1aff 80 {
tjerkhofmeijer 0:6fca643f1aff 81 *m_chipSelect = 0;
tjerkhofmeijer 0:6fca643f1aff 82
tjerkhofmeijer 0:6fca643f1aff 83 m_spi->write(opcode);
tjerkhofmeijer 0:6fca643f1aff 84 m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 85 m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 86 m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 87
tjerkhofmeijer 0:6fca643f1aff 88 for (int i = 0; i < dataLength; i++)
tjerkhofmeijer 0:6fca643f1aff 89 {
tjerkhofmeijer 0:6fca643f1aff 90 data[i] = m_spi->write(0);
tjerkhofmeijer 0:6fca643f1aff 91 }
tjerkhofmeijer 0:6fca643f1aff 92 *m_chipSelect = 1;
tjerkhofmeijer 0:6fca643f1aff 93 }
tjerkhofmeijer 0:6fca643f1aff 94
tjerkhofmeijer 0:6fca643f1aff 95
tjerkhofmeijer 0:6fca643f1aff 96 /*! \brief Perform a blocking write transfer over SPI
tjerkhofmeijer 0:6fca643f1aff 97 \param data Pointer to data to be written
tjerkhofmeijer 0:6fca643f1aff 98 \param dataLength Number of data bytes to write
tjerkhofmeijer 0:6fca643f1aff 99 */
tjerkhofmeijer 0:6fca643f1aff 100 void MtsspSpiDriver::writeRaw(uint8_t const* data, int dataLength)
tjerkhofmeijer 0:6fca643f1aff 101 {
tjerkhofmeijer 0:6fca643f1aff 102 *m_chipSelect = 0;
tjerkhofmeijer 0:6fca643f1aff 103 for (int i = 0; i < dataLength; i++)
tjerkhofmeijer 0:6fca643f1aff 104 {
tjerkhofmeijer 0:6fca643f1aff 105 m_spi->write(data[i]);
tjerkhofmeijer 0:6fca643f1aff 106 }
tjerkhofmeijer 0:6fca643f1aff 107 *m_chipSelect = 1;
tjerkhofmeijer 0:6fca643f1aff 108 }