ChibiOS/RT Architecture - Reference Manual - Guides |
00001 /* 00002 ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio. 00003 00004 This file is part of ChibiOS/RT. 00005 00006 ChibiOS/RT is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 ChibiOS/RT is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program. If not, see <http://www.gnu.org/licenses/>. 00018 00019 --- 00020 00021 A special exception to the GPL can be applied should you wish to distribute 00022 a combined work that includes ChibiOS/RT, without being obliged to provide 00023 the source code for any proprietary components. See the file exception.txt 00024 for full details of how and when the exception can be applied. 00025 */ 00026 00027 /** 00028 * @file templates/spi_lld.c 00029 * @brief SPI Driver subsystem low level driver source template. 00030 * 00031 * @addtogroup SPI_LLD 00032 * @{ 00033 */ 00034 00035 #include "ch.h" 00036 #include "hal.h" 00037 00038 #if CH_HAL_USE_SPI || defined(__DOXYGEN__) 00039 00040 /*===========================================================================*/ 00041 /* Driver exported variables. */ 00042 /*===========================================================================*/ 00043 00044 /*===========================================================================*/ 00045 /* Driver local variables. */ 00046 /*===========================================================================*/ 00047 00048 /*===========================================================================*/ 00049 /* Driver local functions. */ 00050 /*===========================================================================*/ 00051 00052 /*===========================================================================*/ 00053 /* Driver interrupt handlers. */ 00054 /*===========================================================================*/ 00055 00056 /*===========================================================================*/ 00057 /* Driver exported functions. */ 00058 /*===========================================================================*/ 00059 00060 /** 00061 * @brief Low level SPI driver initialization. 00062 */ 00063 void spi_lld_init(void) { 00064 00065 } 00066 00067 /** 00068 * @brief Configures and activates the SPI peripheral. 00069 * 00070 * @param[in] spip pointer to the @p SPIDriver object 00071 */ 00072 void spi_lld_start(SPIDriver *spip) { 00073 00074 if (spip->spd_state == SPI_STOP) { 00075 /* Clock activation.*/ 00076 } 00077 /* Configuration.*/ 00078 } 00079 00080 /** 00081 * @brief Deactivates the SPI peripheral. 00082 * 00083 * @param[in] spip pointer to the @p SPIDriver object 00084 */ 00085 void spi_lld_stop(SPIDriver *spip) { 00086 00087 } 00088 00089 /** 00090 * @brief Asserts the slave select signal and prepares for transfers. 00091 * 00092 * @param[in] spip pointer to the @p SPIDriver object 00093 */ 00094 void spi_lld_select(SPIDriver *spip) { 00095 00096 } 00097 00098 /** 00099 * @brief Deasserts the slave select signal. 00100 * @details The previously selected peripheral is unselected. 00101 * 00102 * @param[in] spip pointer to the @p SPIDriver object 00103 */ 00104 void spi_lld_unselect(SPIDriver *spip) { 00105 00106 } 00107 00108 /** 00109 * @brief Ignores data on the SPI bus. 00110 * @details This function transmits a series of idle words on the SPI bus and 00111 * ignores the received data. This function can be invoked even 00112 * when a slave select signal has not been yet asserted. 00113 * 00114 * @param[in] spip pointer to the @p SPIDriver object 00115 * @param[in] n number of words to be ignored 00116 */ 00117 void spi_lld_ignore(SPIDriver *spip, size_t n) { 00118 00119 } 00120 00121 /** 00122 * @brief Exchanges data on the SPI bus. 00123 * @details This function performs a simultaneous transmit/receive operation. 00124 * @note The buffers are organized as uint8_t arrays for data sizes below or 00125 * equal to 8 bits else it is organized as uint16_t arrays. 00126 * 00127 * @param[in] spip pointer to the @p SPIDriver object 00128 * @param[in] n number of words to be exchanged 00129 * @param[in] txbuf the pointer to the transmit buffer 00130 * @param[out] rxbuf the pointer to the receive buffer 00131 */ 00132 void spi_lld_exchange(SPIDriver *spip, size_t n, 00133 const void *txbuf, void *rxbuf) { 00134 00135 } 00136 00137 /** 00138 * @brief Sends data ever the SPI bus. 00139 * @note The buffers are organized as uint8_t arrays for data sizes below or 00140 * equal to 8 bits else it is organized as uint16_t arrays. 00141 * 00142 * @param[in] spip pointer to the @p SPIDriver object 00143 * @param[in] n number of words to send 00144 * @param[in] txbuf the pointer to the transmit buffer 00145 */ 00146 void spi_lld_send(SPIDriver *spip, size_t n, const void *txbuf) { 00147 00148 } 00149 00150 /** 00151 * @brief Receives data from the SPI bus. 00152 * @note The buffers are organized as uint8_t arrays for data sizes below or 00153 * equal to 8 bits else it is organized as uint16_t arrays. 00154 * 00155 * @param[in] spip pointer to the @p SPIDriver object 00156 * @param[in] n number of words to receive 00157 * @param[out] rxbuf the pointer to the receive buffer 00158 */ 00159 void spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf) { 00160 00161 } 00162 00163 #endif /* CH_HAL_USE_SPI */ 00164 00165 /** @} */