mbed library sources with internal temperature sensor for nucleo f401

Committer:
elessair
Date:
Sat Jan 17 18:03:58 2015 +0000
Revision:
0:7e2bd16f80af
nucleo f401re internal temperature added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:7e2bd16f80af 1 /* mbed Microcontroller Library
elessair 0:7e2bd16f80af 2 * Copyright (c) 2006-2013 ARM Limited
elessair 0:7e2bd16f80af 3 *
elessair 0:7e2bd16f80af 4 * Licensed under the Apache License, Version 2.0 (the "License");
elessair 0:7e2bd16f80af 5 * you may not use this file except in compliance with the License.
elessair 0:7e2bd16f80af 6 * You may obtain a copy of the License at
elessair 0:7e2bd16f80af 7 *
elessair 0:7e2bd16f80af 8 * http://www.apache.org/licenses/LICENSE-2.0
elessair 0:7e2bd16f80af 9 *
elessair 0:7e2bd16f80af 10 * Unless required by applicable law or agreed to in writing, software
elessair 0:7e2bd16f80af 11 * distributed under the License is distributed on an "AS IS" BASIS,
elessair 0:7e2bd16f80af 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
elessair 0:7e2bd16f80af 13 * See the License for the specific language governing permissions and
elessair 0:7e2bd16f80af 14 * limitations under the License.
elessair 0:7e2bd16f80af 15 */
elessair 0:7e2bd16f80af 16 #include "SPI.h"
elessair 0:7e2bd16f80af 17
elessair 0:7e2bd16f80af 18 #if DEVICE_SPI
elessair 0:7e2bd16f80af 19
elessair 0:7e2bd16f80af 20 namespace mbed {
elessair 0:7e2bd16f80af 21
elessair 0:7e2bd16f80af 22 SPI::SPI(PinName mosi, PinName miso, PinName sclk, PinName _unused) :
elessair 0:7e2bd16f80af 23 _spi(),
elessair 0:7e2bd16f80af 24 _bits(8),
elessair 0:7e2bd16f80af 25 _mode(0),
elessair 0:7e2bd16f80af 26 _hz(1000000) {
elessair 0:7e2bd16f80af 27 spi_init(&_spi, mosi, miso, sclk, NC);
elessair 0:7e2bd16f80af 28 spi_format(&_spi, _bits, _mode, 0);
elessair 0:7e2bd16f80af 29 spi_frequency(&_spi, _hz);
elessair 0:7e2bd16f80af 30 }
elessair 0:7e2bd16f80af 31
elessair 0:7e2bd16f80af 32 void SPI::format(int bits, int mode) {
elessair 0:7e2bd16f80af 33 _bits = bits;
elessair 0:7e2bd16f80af 34 _mode = mode;
elessair 0:7e2bd16f80af 35 SPI::_owner = NULL; // Not that elegant, but works. rmeyer
elessair 0:7e2bd16f80af 36 aquire();
elessair 0:7e2bd16f80af 37 }
elessair 0:7e2bd16f80af 38
elessair 0:7e2bd16f80af 39 void SPI::frequency(int hz) {
elessair 0:7e2bd16f80af 40 _hz = hz;
elessair 0:7e2bd16f80af 41 SPI::_owner = NULL; // Not that elegant, but works. rmeyer
elessair 0:7e2bd16f80af 42 aquire();
elessair 0:7e2bd16f80af 43 }
elessair 0:7e2bd16f80af 44
elessair 0:7e2bd16f80af 45 SPI* SPI::_owner = NULL;
elessair 0:7e2bd16f80af 46
elessair 0:7e2bd16f80af 47 // ignore the fact there are multiple physical spis, and always update if it wasnt us last
elessair 0:7e2bd16f80af 48 void SPI::aquire() {
elessair 0:7e2bd16f80af 49 if (_owner != this) {
elessair 0:7e2bd16f80af 50 spi_format(&_spi, _bits, _mode, 0);
elessair 0:7e2bd16f80af 51 spi_frequency(&_spi, _hz);
elessair 0:7e2bd16f80af 52 _owner = this;
elessair 0:7e2bd16f80af 53 }
elessair 0:7e2bd16f80af 54 }
elessair 0:7e2bd16f80af 55
elessair 0:7e2bd16f80af 56 int SPI::write(int value) {
elessair 0:7e2bd16f80af 57 aquire();
elessair 0:7e2bd16f80af 58 return spi_master_write(&_spi, value);
elessair 0:7e2bd16f80af 59 }
elessair 0:7e2bd16f80af 60
elessair 0:7e2bd16f80af 61 } // namespace mbed
elessair 0:7e2bd16f80af 62
elessair 0:7e2bd16f80af 63 #endif