Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-dev by
SPISlave.h
00001 /* mbed Microcontroller Library 00002 * Copyright (c) 2006-2013 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef MBED_SPISLAVE_H 00017 #define MBED_SPISLAVE_H 00018 00019 #include "platform.h" 00020 00021 #if DEVICE_SPISLAVE 00022 00023 #include "spi_api.h" 00024 00025 namespace mbed { 00026 00027 /** A SPI slave, used for communicating with a SPI Master device 00028 * 00029 * The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz 00030 * 00031 * Example: 00032 * @code 00033 * // Reply to a SPI master as slave 00034 * 00035 * #include "mbed.h" 00036 * 00037 * SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel 00038 * 00039 * int main() { 00040 * device.reply(0x00); // Prime SPI with first reply 00041 * while(1) { 00042 * if(device.receive()) { 00043 * int v = device.read(); // Read byte from master 00044 * v = (v + 1) % 0x100; // Add one to it, modulo 256 00045 * device.reply(v); // Make this the next reply 00046 * } 00047 * } 00048 * } 00049 * @endcode 00050 */ 00051 class SPISlave { 00052 00053 public: 00054 00055 /** Create a SPI slave connected to the specified pins 00056 * 00057 * mosi or miso can be specfied as NC if not used 00058 * 00059 * @param mosi SPI Master Out, Slave In pin 00060 * @param miso SPI Master In, Slave Out pin 00061 * @param sclk SPI Clock pin 00062 * @param ssel SPI chip select pin 00063 */ 00064 SPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel); 00065 00066 /** Configure the data transmission format 00067 * 00068 * @param bits Number of bits per SPI frame (4 - 16) 00069 * @param mode Clock polarity and phase mode (0 - 3) 00070 * 00071 * @code 00072 * mode | POL PHA 00073 * -----+-------- 00074 * 0 | 0 0 00075 * 1 | 0 1 00076 * 2 | 1 0 00077 * 3 | 1 1 00078 * @endcode 00079 */ 00080 void format(int bits, int mode = 0); 00081 00082 /** Set the spi bus clock frequency 00083 * 00084 * @param hz SCLK frequency in hz (default = 1MHz) 00085 */ 00086 void frequency(int hz = 1000000); 00087 00088 /** Polls the SPI to see if data has been received 00089 * 00090 * @returns 00091 * 0 if no data, 00092 * 1 otherwise 00093 */ 00094 int receive(void); 00095 00096 /** Retrieve data from receive buffer as slave 00097 * 00098 * @returns 00099 * the data in the receive buffer 00100 */ 00101 int read(void); 00102 00103 /** Fill the transmission buffer with the value to be written out 00104 * as slave on the next received message from the master. 00105 * 00106 * @param value the data to be transmitted next 00107 */ 00108 void reply(int value); 00109 00110 protected: 00111 spi_t _spi; 00112 00113 int _bits; 00114 int _mode; 00115 int _hz; 00116 }; 00117 00118 } // namespace mbed 00119 00120 #endif 00121 00122 #endif
Generated on Tue Jul 12 2022 18:56:14 by
