From 4e00ffa69c4b712d34ffce9a4aed5cae352b7d89 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Mon, 9 May 2011 09:05:08 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2943 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/dox/sdc.dox | 103 ++++++++++++++++++++++++++++++++++++ os/hal/platforms/STM32/platform.dox | 43 +++++++++++++-- 2 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 os/hal/dox/sdc.dox diff --git a/os/hal/dox/sdc.dox b/os/hal/dox/sdc.dox new file mode 100644 index 000000000..925b1af8a --- /dev/null +++ b/os/hal/dox/sdc.dox @@ -0,0 +1,103 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @defgroup SDC SDC Driver + * @brief Generic SD Card Driver. + * @details This module implements a generic SDC (Secure Digital Card) driver. + * @pre In order to use the SDC driver the @p HAL_USE_SDC option + * must be enabled in @p halconf.h. + * + * @section sdc_1 Driver State Machine + * The driver implements a state machine internally, not all the driver + * functionalities can be used in any moment, any transition not explicitly + * shown in the following diagram has to be considered an error and shall + * be captured by an assertion (if enabled). + * @if LATEX_PDF + * @dot + digraph example { + size="5, 7"; + rankdir="LR"; + + node [shape=circle, fontname=Sans, fontsize=8, fixedsize="true", width="0.9", height="0.9"]; + edge [fontname=Sans, fontsize=8]; + + stop [label="SDC_STOP\nLow Power"]; + uninit [label="SDC_UNINIT", style="bold"]; + ready [label="SDC_READY\nClock Enabled"]; + connect [label="SDC_CONNECT\nConnecting"]; + active [label="SDC_ACTIVE\nCard Ready"]; + reading [label="SDC_READING\nReading"]; + writing [label="SDC_WRITING\nWriting"]; + + uninit -> stop [label=" sdcInit()", constraint=false]; + stop -> stop [label="\nsdcStop()"]; + stop -> ready [label="\nsdcStart()"]; + ready -> stop [label="\nsdcStop()"]; + ready -> ready [label="\nsdcStart()"]; + ready -> connect [label="\nsdcConnect()"]; + connect -> active [label="\nconnection\nsuccessful"]; + connect -> ready [label="\nconnection\nfailed"]; + active -> ready [label="\nsdcDisconnect()"]; + active -> reading [label="\nsdcRead()"]; + reading -> active [label="\nread finished\nread error"]; + active -> writing [label="\nsdcWrite()"]; + writing -> active [label="\nwrite finished\nwrite error"]; + } + * @enddot + * @else + * @dot + digraph example { + rankdir="LR"; + + node [shape=circle, fontname=Sans, fontsize=8, fixedsize="true", width="0.9", height="0.9"]; + edge [fontname=Sans, fontsize=8]; + + stop [label="SDC_STOP\nLow Power"]; + uninit [label="SDC_UNINIT", style="bold"]; + ready [label="SDC_READY\nClock Enabled"]; + connect [label="SDC_CONNECT\nConnecting"]; + active [label="SDC_ACTIVE\nCard Ready"]; + reading [label="SDC_READING\nReading"]; + writing [label="SDC_WRITING\nWriting"]; + + uninit -> stop [label=" sdcInit()", constraint=false]; + stop -> stop [label="\nsdcStop()"]; + stop -> ready [label="\nsdcStart()"]; + ready -> stop [label="\nsdcStop()"]; + ready -> ready [label="\nsdcStart()"]; + ready -> connect [label="\nsdcConnect()"]; + connect -> active [label="\nconnection\nsuccessful"]; + connect -> ready [label="\nconnection\nfailed"]; + active -> ready [label="\nsdcDisconnect()"]; + active -> reading [label="\nsdcRead()"]; + reading -> active [label="\nread finished\nread error"]; + active -> writing [label="\nsdcWrite()"]; + writing -> active [label="\nwrite finished\nwrite error"]; + } + * @enddot + * @endif + * + * @section sdc_2 SDC Operations. + * This driver allows to read or write single or multiple 512 bytes blocks + * on a SD Card. + * + * @ingroup IO + */ diff --git a/os/hal/platforms/STM32/platform.dox b/os/hal/platforms/STM32/platform.dox index b2d9583e4..1963e625e 100644 --- a/os/hal/platforms/STM32/platform.dox +++ b/os/hal/platforms/STM32/platform.dox @@ -62,7 +62,7 @@ * - Programmable ADC interrupt priority level. * - Programmable DMA bus priority for each DMA channel. * - Programmable DMA interrupt priority for each DMA channel. - * - Programmable DMA error hook for each DMA channel. + * - Programmable DMA error hook. * . * @ingroup STM32_DRIVERS */ @@ -119,6 +119,25 @@ * @ingroup STM32_DRIVERS */ +/** + * @defgroup STM32_ICU STM32 ICU Support + * @details The STM32 ICU driver uses the TIMx peripherals. + * + * @section stm32_icu_1 Supported HW resources + * - TIM1. + * - TIM2. + * - TIM3. + * - TIM4. + * - TIM5. + * . + * @section stm32_icu_2 STM32 ICU driver implementation features + * - Each timer can be independently enabled and programmed. Unused + * peripherals are left in low power mode. + * - Programmable TIMx interrupts priority level. + * . + * @ingroup STM32_DRIVERS + */ + /** * @defgroup STM32_PAL STM32 PAL Support * @details The STM32 PAL driver uses the GPIO peripherals. @@ -189,6 +208,24 @@ * @ingroup STM32_DRIVERS */ +/** + * @defgroup STM32_SDC STM32 SDC Support + * @details The STM32 SDC driver uses the SDIO peripheral. + * + * @section stm32_sdc_1 Supported HW resources + * - SDIO. + * - DMA2. + * . + * @section stm32_sdc_2 STM32 SDC driver implementation features + * - Clock stop for reduced power usage when the driver is in stop state. + * - Programmable interrupt priority. + * - DMA is used for receiving and transmitting. + * - Programmable DMA bus priority for each DMA channel. + * - Programmable DMA error hook. + * . + * @ingroup STM32_DRIVERS + */ + /** * @defgroup STM32_SERIAL STM32 Serial Support * @details The STM32 Serial driver uses the USART/UART peripherals in a @@ -232,7 +269,7 @@ * - DMA is used for receiving and transmitting. * - Programmable DMA bus priority for each DMA channel. * - Programmable DMA interrupt priority for each DMA channel. - * - Programmable DMA error hook for each DMA channel. + * - Programmable DMA error hook. * . * @ingroup STM32_DRIVERS */ @@ -259,7 +296,7 @@ * - DMA is used for receiving and transmitting. * - Programmable DMA bus priority for each DMA channel. * - Programmable DMA interrupt priority for each DMA channel. - * - Programmable DMA error hook for each DMA channel. + * - Programmable DMA error hook. * . * @ingroup STM32_DRIVERS */ -- cgit v1.2.3