NXP / Mbed 2 deprecated mcr20_wireless_uart

Dependencies:   fsl_phy_mcr20a fsl_smac mbed-rtos mbed

Fork of mcr20_wireless_uart by Freescale

By default, the application uses broadcast addresses for OTA communication. This way, the application can be directly downloaded and run without any user intervention. The following use case assumes no changes have been done to the project.

  • Two (or more) MCR20A platforms (plugged into the FRDM-K64F Freescale Freedom Development platform) have to be connected to the PC using the mini/micro-USB cables.
  • The code must be downloaded on the platforms via CMSIS-DAP (or other means).
  • After that, two or more TERM applications must be opened, and the serial ports must be configured with the same baud rate as the one in the project (default baud rate is 115200). Other necessary serial configurations are 8 bit, no parity, and 1 stop bit.
  • To start the setup, each platform must be reset, and one of the (user) push buttons found on the MCR20A platform must be pressed. The user can press any of the non-reset buttons on the FRDM-K64F Freescale Freedom Development platform as well. *This initiates the state machine of the application so user can start.

Documentation

SMAC Demo Applications User Guide

Committer:
FSL\B36402
Date:
Thu Mar 05 15:47:28 2015 -0600
Revision:
12:4446d8228309
Parent:
11:e15d0d27f7a5
updates mcr20 drv

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cotigac 10:756e09ed359c 1 /*!
cotigac 10:756e09ed359c 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
cotigac 10:756e09ed359c 3 * All rights reserved.
cotigac 10:756e09ed359c 4 *
cotigac 10:756e09ed359c 5 * \file MCR20Drv.c
cotigac 10:756e09ed359c 6 *
cotigac 10:756e09ed359c 7 * Redistribution and use in source and binary forms, with or without modification,
cotigac 10:756e09ed359c 8 * are permitted provided that the following conditions are met:
cotigac 10:756e09ed359c 9 *
cotigac 10:756e09ed359c 10 * o Redistributions of source code must retain the above copyright notice, this list
cotigac 10:756e09ed359c 11 * of conditions and the following disclaimer.
cotigac 10:756e09ed359c 12 *
cotigac 10:756e09ed359c 13 * o Redistributions in binary form must reproduce the above copyright notice, this
cotigac 10:756e09ed359c 14 * list of conditions and the following disclaimer in the documentation and/or
cotigac 10:756e09ed359c 15 * other materials provided with the distribution.
cotigac 10:756e09ed359c 16 *
cotigac 10:756e09ed359c 17 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
cotigac 10:756e09ed359c 18 * contributors may be used to endorse or promote products derived from this
cotigac 10:756e09ed359c 19 * software without specific prior written permission.
cotigac 10:756e09ed359c 20 *
cotigac 10:756e09ed359c 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
cotigac 10:756e09ed359c 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
cotigac 10:756e09ed359c 23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
cotigac 10:756e09ed359c 24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
cotigac 10:756e09ed359c 25 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
cotigac 10:756e09ed359c 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
cotigac 10:756e09ed359c 27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
cotigac 10:756e09ed359c 28 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
cotigac 10:756e09ed359c 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
cotigac 10:756e09ed359c 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cotigac 10:756e09ed359c 31 */
cotigac 10:756e09ed359c 32
cotigac 10:756e09ed359c 33
cotigac 10:756e09ed359c 34 /*****************************************************************************
cotigac 10:756e09ed359c 35 * INCLUDED HEADERS *
cotigac 10:756e09ed359c 36 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 37 * Add to this section all the headers that this module needs to include. *
cotigac 10:756e09ed359c 38 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 39 *****************************************************************************/
cotigac 10:756e09ed359c 40
cotigac 10:756e09ed359c 41 #include "MCR20Drv.h"
cotigac 10:756e09ed359c 42 #include "MCR20Reg.h"
cotigac 10:756e09ed359c 43
cotigac 10:756e09ed359c 44 #include "EmbeddedTypes.h"
cotigac 10:756e09ed359c 45
cotigac 10:756e09ed359c 46 #include <string.h>
cotigac 10:756e09ed359c 47
cotigac 10:756e09ed359c 48 #include "low_level_RF.h"
cotigac 10:756e09ed359c 49 #include "arm_hal_interrupt.h"
cotigac 10:756e09ed359c 50
cotigac 10:756e09ed359c 51 //#include "arm_hal_phy.h"
cotigac 10:756e09ed359c 52 //#include "driverRFPhy.h"
cotigac 10:756e09ed359c 53 //#include "driverAtmelRFInterface.h"
cotigac 10:756e09ed359c 54 //#include "low_level_RF.h"
cotigac 10:756e09ed359c 55
cotigac 10:756e09ed359c 56 //#include "SPI.h"
cotigac 10:756e09ed359c 57 //#include "fsl_gpio_driver.h"
cotigac 10:756e09ed359c 58 //#include "fsl_os_abstraction.h"
cotigac 10:756e09ed359c 59
cotigac 10:756e09ed359c 60 /*****************************************************************************
cotigac 10:756e09ed359c 61 * PRIVATE VARIABLES *
cotigac 10:756e09ed359c 62 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 63 * Add to this section all the variables and constants that have local *
cotigac 10:756e09ed359c 64 * (file) scope. *
cotigac 10:756e09ed359c 65 * Each of this declarations shall be preceded by the 'static' keyword. *
cotigac 10:756e09ed359c 66 * These variables / constants cannot be accessed outside this module. *
cotigac 10:756e09ed359c 67 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 68 *****************************************************************************/
cotigac 10:756e09ed359c 69
cotigac 10:756e09ed359c 70 uint8_t gXcvrSpiInstance_c = 0;
cotigac 10:756e09ed359c 71
cotigac 10:756e09ed359c 72 static uint32_t mPhyIrqDisableCnt = 1;
cotigac 10:756e09ed359c 73
cotigac 10:756e09ed359c 74 void spi_master_init(uint32_t instance)
cotigac 10:756e09ed359c 75 {
cotigac 10:756e09ed359c 76 }
cotigac 10:756e09ed359c 77
cotigac 10:756e09ed359c 78 void spi_master_configure_speed(uint32_t instance, uint32_t freq)
cotigac 10:756e09ed359c 79 {
sam_grove 11:e15d0d27f7a5 80 spi_speed(freq);
cotigac 10:756e09ed359c 81 }
cotigac 10:756e09ed359c 82
cotigac 10:756e09ed359c 83 void gXcvrAssertCS_d(void) {
cotigac 10:756e09ed359c 84 RF_CS_Set(0);
cotigac 10:756e09ed359c 85 }
cotigac 10:756e09ed359c 86
cotigac 10:756e09ed359c 87 void gXcvrDeassertCS_d(void) {
cotigac 10:756e09ed359c 88 RF_CS_Set(1);
cotigac 10:756e09ed359c 89 }
cotigac 10:756e09ed359c 90
cotigac 10:756e09ed359c 91 #if 0
cotigac 10:756e09ed359c 92 /* GPIO configuration */
cotigac 10:756e09ed359c 93 const gpio_output_pin_user_config_t mXcvrSpiCsCfg = {
cotigac 10:756e09ed359c 94 .pinName = kGpioXcvrSpiCsPin,
cotigac 10:756e09ed359c 95 .config.outputLogic = 1,
cotigac 10:756e09ed359c 96 .config.slewRate = kPortFastSlewRate,
cotigac 10:756e09ed359c 97 #if FSL_FEATURE_PORT_HAS_OPEN_DRAIN
cotigac 10:756e09ed359c 98 .config.isOpenDrainEnabled = false,
cotigac 10:756e09ed359c 99 #endif
cotigac 10:756e09ed359c 100 .config.driveStrength = kPortLowDriveStrength,
cotigac 10:756e09ed359c 101 };
cotigac 10:756e09ed359c 102
cotigac 10:756e09ed359c 103 const gpio_input_pin_user_config_t mXcvrIrqPinCfg = {
cotigac 10:756e09ed359c 104 .pinName = kGpioXcvrIrqPin,
cotigac 10:756e09ed359c 105 .config.isPullEnable = false,
cotigac 10:756e09ed359c 106 .config.pullSelect = kPortPullDown,
cotigac 10:756e09ed359c 107 .config.isPassiveFilterEnabled = false,
cotigac 10:756e09ed359c 108 .config.interrupt = kPortIntDisabled
cotigac 10:756e09ed359c 109 };
cotigac 10:756e09ed359c 110 #endif
cotigac 10:756e09ed359c 111
cotigac 10:756e09ed359c 112 /*****************************************************************************
cotigac 10:756e09ed359c 113 * PUBLIC VARIABLES *
cotigac 10:756e09ed359c 114 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 115 * Add to this section all the variables and constants that have global *
cotigac 10:756e09ed359c 116 * (project) scope. *
cotigac 10:756e09ed359c 117 * These variables / constants can be accessed outside this module. *
cotigac 10:756e09ed359c 118 * These variables / constants shall be preceded by the 'extern' keyword in *
cotigac 10:756e09ed359c 119 * the interface header. *
cotigac 10:756e09ed359c 120 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 121 *****************************************************************************/
cotigac 10:756e09ed359c 122
cotigac 10:756e09ed359c 123 /*****************************************************************************
cotigac 10:756e09ed359c 124 * PRIVATE FUNCTIONS PROTOTYPES *
cotigac 10:756e09ed359c 125 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 126 * Add to this section all the functions prototypes that have local (file) *
cotigac 10:756e09ed359c 127 * scope. *
cotigac 10:756e09ed359c 128 * These functions cannot be accessed outside this module. *
cotigac 10:756e09ed359c 129 * These declarations shall be preceded by the 'static' keyword. *
cotigac 10:756e09ed359c 130 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 131 *****************************************************************************/
cotigac 10:756e09ed359c 132
cotigac 10:756e09ed359c 133 /*****************************************************************************
cotigac 10:756e09ed359c 134 * PRIVATE FUNCTIONS *
cotigac 10:756e09ed359c 135 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 136 * Add to this section all the functions that have local (file) scope. *
cotigac 10:756e09ed359c 137 * These functions cannot be accessed outside this module. *
cotigac 10:756e09ed359c 138 * These definitions shall be preceded by the 'static' keyword. *
cotigac 10:756e09ed359c 139 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 140 *****************************************************************************/
cotigac 10:756e09ed359c 141
cotigac 10:756e09ed359c 142
cotigac 10:756e09ed359c 143 /*****************************************************************************
cotigac 10:756e09ed359c 144 * PUBLIC FUNCTIONS *
cotigac 10:756e09ed359c 145 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 146 * Add to this section all the functions that have global (project) scope. *
cotigac 10:756e09ed359c 147 * These functions can be accessed outside this module. *
cotigac 10:756e09ed359c 148 * These functions shall have their declarations (prototypes) within the *
cotigac 10:756e09ed359c 149 * interface header file and shall be preceded by the 'extern' keyword. *
cotigac 10:756e09ed359c 150 *---------------------------------------------------------------------------*
cotigac 10:756e09ed359c 151 *****************************************************************************/
cotigac 10:756e09ed359c 152
cotigac 10:756e09ed359c 153 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 154 * Name: MCR20Drv_Init
cotigac 10:756e09ed359c 155 * Description: -
cotigac 10:756e09ed359c 156 * Parameters: -
cotigac 10:756e09ed359c 157 * Return: -
cotigac 10:756e09ed359c 158 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 159 void MCR20Drv_Init
cotigac 10:756e09ed359c 160 (
cotigac 10:756e09ed359c 161 void
cotigac 10:756e09ed359c 162 )
cotigac 10:756e09ed359c 163 {
cotigac 10:756e09ed359c 164 #if 0
cotigac 10:756e09ed359c 165 spi_master_init(gXcvrSpiInstance_c);
cotigac 10:756e09ed359c 166 spi_master_configure_speed(gXcvrSpiInstance_c, 8000000);
cotigac 10:756e09ed359c 167
cotigac 10:756e09ed359c 168 /* Override SPI CS pin function. Set pin as GPIO */
cotigac 10:756e09ed359c 169 PORT_HAL_SetMuxMode(g_portBaseAddr[GPIO_EXTRACT_PORT(kGpioXcvrSpiCsPin)],
cotigac 10:756e09ed359c 170 GPIO_EXTRACT_PIN(kGpioXcvrSpiCsPin),
cotigac 10:756e09ed359c 171 kPortMuxAsGpio);
cotigac 10:756e09ed359c 172 GPIO_DRV_OutputPinInit(&mXcvrSpiCsCfg);
cotigac 10:756e09ed359c 173 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 174 #endif
cotigac 10:756e09ed359c 175
cotigac 10:756e09ed359c 176 }
cotigac 10:756e09ed359c 177
cotigac 10:756e09ed359c 178 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 179 * Name: MCR20Drv_DirectAccessSPIWrite
cotigac 10:756e09ed359c 180 * Description: -
cotigac 10:756e09ed359c 181 * Parameters: -
cotigac 10:756e09ed359c 182 * Return: -
cotigac 10:756e09ed359c 183 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 184 void MCR20Drv_DirectAccessSPIWrite
cotigac 10:756e09ed359c 185 (
cotigac 10:756e09ed359c 186 uint8_t address,
cotigac 10:756e09ed359c 187 uint8_t value
cotigac 10:756e09ed359c 188 )
cotigac 10:756e09ed359c 189 {
cotigac 10:756e09ed359c 190 uint16_t txData;
cotigac 10:756e09ed359c 191
cotigac 10:756e09ed359c 192 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 193
cotigac 10:756e09ed359c 194 spi_master_configure_speed(gXcvrSpiInstance_c, 16000000);
cotigac 10:756e09ed359c 195
cotigac 10:756e09ed359c 196 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 197
cotigac 10:756e09ed359c 198 txData = (address & TransceiverSPI_DirectRegisterAddressMask);
cotigac 10:756e09ed359c 199 txData |= value << 8;
cotigac 10:756e09ed359c 200
cotigac 10:756e09ed359c 201 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t *)&txData, NULL, sizeof(txData));
cotigac 10:756e09ed359c 202
cotigac 10:756e09ed359c 203 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 204 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 205 }
cotigac 10:756e09ed359c 206
cotigac 10:756e09ed359c 207 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 208 * Name: MCR20Drv_DirectAccessSPIMultiByteWrite
cotigac 10:756e09ed359c 209 * Description: -
cotigac 10:756e09ed359c 210 * Parameters: -
cotigac 10:756e09ed359c 211 * Return: -
cotigac 10:756e09ed359c 212 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 213 void MCR20Drv_DirectAccessSPIMultiByteWrite
cotigac 10:756e09ed359c 214 (
cotigac 10:756e09ed359c 215 uint8_t startAddress,
cotigac 10:756e09ed359c 216 uint8_t * byteArray,
cotigac 10:756e09ed359c 217 uint8_t numOfBytes
cotigac 10:756e09ed359c 218 )
cotigac 10:756e09ed359c 219 {
cotigac 10:756e09ed359c 220 uint8_t txData;
cotigac 10:756e09ed359c 221
cotigac 10:756e09ed359c 222 if( (numOfBytes == 0) || (byteArray == NULL) )
cotigac 10:756e09ed359c 223 {
cotigac 10:756e09ed359c 224 return;
cotigac 10:756e09ed359c 225 }
cotigac 10:756e09ed359c 226
cotigac 10:756e09ed359c 227 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 228
cotigac 10:756e09ed359c 229 spi_master_configure_speed(gXcvrSpiInstance_c, 16000000);
cotigac 10:756e09ed359c 230
cotigac 10:756e09ed359c 231 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 232
cotigac 10:756e09ed359c 233 txData = (startAddress & TransceiverSPI_DirectRegisterAddressMask);
cotigac 10:756e09ed359c 234
cotigac 10:756e09ed359c 235 spi_master_transfer(gXcvrSpiInstance_c, &txData, NULL, sizeof(txData));
cotigac 10:756e09ed359c 236 spi_master_transfer(gXcvrSpiInstance_c, byteArray, NULL, numOfBytes);
cotigac 10:756e09ed359c 237
cotigac 10:756e09ed359c 238 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 239 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 240 }
cotigac 10:756e09ed359c 241
cotigac 10:756e09ed359c 242 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 243 * Name: MCR20Drv_PB_SPIByteWrite
cotigac 10:756e09ed359c 244 * Description: -
cotigac 10:756e09ed359c 245 * Parameters: -
cotigac 10:756e09ed359c 246 * Return: -
cotigac 10:756e09ed359c 247 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 248 void MCR20Drv_PB_SPIByteWrite
cotigac 10:756e09ed359c 249 (
cotigac 10:756e09ed359c 250 uint8_t address,
cotigac 10:756e09ed359c 251 uint8_t value
cotigac 10:756e09ed359c 252 )
cotigac 10:756e09ed359c 253 {
cotigac 10:756e09ed359c 254 uint32_t txData;
cotigac 10:756e09ed359c 255
cotigac 10:756e09ed359c 256 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 257
cotigac 10:756e09ed359c 258 spi_master_configure_speed(gXcvrSpiInstance_c, 16000000);
cotigac 10:756e09ed359c 259
cotigac 10:756e09ed359c 260 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 261
cotigac 10:756e09ed359c 262 txData = TransceiverSPI_WriteSelect |
cotigac 10:756e09ed359c 263 TransceiverSPI_PacketBuffAccessSelect |
cotigac 10:756e09ed359c 264 TransceiverSPI_PacketBuffByteModeSelect;
cotigac 10:756e09ed359c 265 txData |= (address) << 8;
cotigac 10:756e09ed359c 266 txData |= (value) << 16;
cotigac 10:756e09ed359c 267
cotigac 10:756e09ed359c 268 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t*)&txData, NULL, 3);
cotigac 10:756e09ed359c 269
cotigac 10:756e09ed359c 270 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 271 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 272 }
cotigac 10:756e09ed359c 273
cotigac 10:756e09ed359c 274 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 275 * Name: MCR20Drv_PB_SPIBurstWrite
cotigac 10:756e09ed359c 276 * Description: -
cotigac 10:756e09ed359c 277 * Parameters: -
cotigac 10:756e09ed359c 278 * Return: -
cotigac 10:756e09ed359c 279 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 280 void MCR20Drv_PB_SPIBurstWrite
cotigac 10:756e09ed359c 281 (
cotigac 10:756e09ed359c 282 uint8_t * byteArray,
cotigac 10:756e09ed359c 283 uint8_t numOfBytes
cotigac 10:756e09ed359c 284 )
cotigac 10:756e09ed359c 285 {
cotigac 10:756e09ed359c 286 uint8_t txData;
cotigac 10:756e09ed359c 287
cotigac 10:756e09ed359c 288 if( (numOfBytes == 0) || (byteArray == NULL) )
cotigac 10:756e09ed359c 289 {
cotigac 10:756e09ed359c 290 return;
cotigac 10:756e09ed359c 291 }
cotigac 10:756e09ed359c 292
cotigac 10:756e09ed359c 293 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 294
cotigac 10:756e09ed359c 295 spi_master_configure_speed(gXcvrSpiInstance_c, 16000000);
cotigac 10:756e09ed359c 296
cotigac 10:756e09ed359c 297 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 298
cotigac 10:756e09ed359c 299 txData = TransceiverSPI_WriteSelect |
cotigac 10:756e09ed359c 300 TransceiverSPI_PacketBuffAccessSelect |
cotigac 10:756e09ed359c 301 TransceiverSPI_PacketBuffBurstModeSelect;
cotigac 10:756e09ed359c 302
cotigac 10:756e09ed359c 303 spi_master_transfer(gXcvrSpiInstance_c, &txData, NULL, 1);
cotigac 10:756e09ed359c 304 spi_master_transfer(gXcvrSpiInstance_c, byteArray, NULL, numOfBytes);
cotigac 10:756e09ed359c 305
cotigac 10:756e09ed359c 306 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 307 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 308 }
cotigac 10:756e09ed359c 309
cotigac 10:756e09ed359c 310 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 311 * Name: MCR20Drv_DirectAccessSPIRead
cotigac 10:756e09ed359c 312 * Description: -
cotigac 10:756e09ed359c 313 * Parameters: -
cotigac 10:756e09ed359c 314 * Return: -
cotigac 10:756e09ed359c 315 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 316
cotigac 10:756e09ed359c 317 uint8_t MCR20Drv_DirectAccessSPIRead
cotigac 10:756e09ed359c 318 (
cotigac 10:756e09ed359c 319 uint8_t address
cotigac 10:756e09ed359c 320 )
cotigac 10:756e09ed359c 321 {
cotigac 10:756e09ed359c 322 uint8_t txData;
cotigac 10:756e09ed359c 323 uint8_t rxData;
cotigac 10:756e09ed359c 324
cotigac 10:756e09ed359c 325 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 326
cotigac 10:756e09ed359c 327 spi_master_configure_speed(gXcvrSpiInstance_c, 8000000);
cotigac 10:756e09ed359c 328
cotigac 10:756e09ed359c 329 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 330
cotigac 10:756e09ed359c 331 txData = (address & TransceiverSPI_DirectRegisterAddressMask) |
cotigac 10:756e09ed359c 332 TransceiverSPI_ReadSelect;
cotigac 10:756e09ed359c 333
cotigac 10:756e09ed359c 334 spi_master_transfer(gXcvrSpiInstance_c, &txData, NULL, sizeof(txData));
cotigac 10:756e09ed359c 335 spi_master_transfer(gXcvrSpiInstance_c, NULL, &rxData, sizeof(rxData));
cotigac 10:756e09ed359c 336
cotigac 10:756e09ed359c 337 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 338 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 339
cotigac 10:756e09ed359c 340 return rxData;
cotigac 10:756e09ed359c 341
cotigac 10:756e09ed359c 342 }
cotigac 10:756e09ed359c 343
cotigac 10:756e09ed359c 344 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 345 * Name: MCR20Drv_DirectAccessSPIMultyByteRead
cotigac 10:756e09ed359c 346 * Description: -
cotigac 10:756e09ed359c 347 * Parameters: -
cotigac 10:756e09ed359c 348 * Return: -
cotigac 10:756e09ed359c 349 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 350 uint8_t MCR20Drv_DirectAccessSPIMultiByteRead
cotigac 10:756e09ed359c 351 (
cotigac 10:756e09ed359c 352 uint8_t startAddress,
cotigac 10:756e09ed359c 353 uint8_t * byteArray,
cotigac 10:756e09ed359c 354 uint8_t numOfBytes
cotigac 10:756e09ed359c 355 )
cotigac 10:756e09ed359c 356 {
cotigac 10:756e09ed359c 357 uint8_t txData;
cotigac 10:756e09ed359c 358 uint8_t phyIRQSTS1;
cotigac 10:756e09ed359c 359
cotigac 10:756e09ed359c 360 if( (numOfBytes == 0) || (byteArray == NULL) )
cotigac 10:756e09ed359c 361 {
cotigac 10:756e09ed359c 362 return 0;
cotigac 10:756e09ed359c 363 }
cotigac 10:756e09ed359c 364
cotigac 10:756e09ed359c 365 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 366
cotigac 10:756e09ed359c 367 spi_master_configure_speed(gXcvrSpiInstance_c, 8000000);
cotigac 10:756e09ed359c 368
cotigac 10:756e09ed359c 369 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 370
cotigac 10:756e09ed359c 371 txData = (startAddress & TransceiverSPI_DirectRegisterAddressMask) |
cotigac 10:756e09ed359c 372 TransceiverSPI_ReadSelect;
cotigac 10:756e09ed359c 373
cotigac 10:756e09ed359c 374 spi_master_transfer(gXcvrSpiInstance_c, &txData, &phyIRQSTS1, sizeof(txData));
cotigac 10:756e09ed359c 375 spi_master_transfer(gXcvrSpiInstance_c, NULL, byteArray, numOfBytes);
cotigac 10:756e09ed359c 376
cotigac 10:756e09ed359c 377 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 378 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 379
cotigac 10:756e09ed359c 380 return phyIRQSTS1;
cotigac 10:756e09ed359c 381 }
cotigac 10:756e09ed359c 382
cotigac 10:756e09ed359c 383 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 384 * Name: MCR20Drv_PB_SPIBurstRead
cotigac 10:756e09ed359c 385 * Description: -
cotigac 10:756e09ed359c 386 * Parameters: -
cotigac 10:756e09ed359c 387 * Return: -
cotigac 10:756e09ed359c 388 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 389 uint8_t MCR20Drv_PB_SPIBurstRead
cotigac 10:756e09ed359c 390 (
cotigac 10:756e09ed359c 391 uint8_t * byteArray,
cotigac 10:756e09ed359c 392 uint8_t numOfBytes
cotigac 10:756e09ed359c 393 )
cotigac 10:756e09ed359c 394 {
cotigac 10:756e09ed359c 395 uint8_t txData;
cotigac 10:756e09ed359c 396 uint8_t phyIRQSTS1;
cotigac 10:756e09ed359c 397
cotigac 10:756e09ed359c 398 if( (numOfBytes == 0) || (byteArray == NULL) )
cotigac 10:756e09ed359c 399 {
cotigac 10:756e09ed359c 400 return 0;
cotigac 10:756e09ed359c 401 }
cotigac 10:756e09ed359c 402
cotigac 10:756e09ed359c 403 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 404
cotigac 10:756e09ed359c 405 spi_master_configure_speed(gXcvrSpiInstance_c, 8000000);
cotigac 10:756e09ed359c 406
cotigac 10:756e09ed359c 407 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 408
cotigac 10:756e09ed359c 409 txData = TransceiverSPI_ReadSelect |
cotigac 10:756e09ed359c 410 TransceiverSPI_PacketBuffAccessSelect |
cotigac 10:756e09ed359c 411 TransceiverSPI_PacketBuffBurstModeSelect;
cotigac 10:756e09ed359c 412
cotigac 10:756e09ed359c 413 spi_master_transfer(gXcvrSpiInstance_c, &txData, &phyIRQSTS1, sizeof(txData));
cotigac 10:756e09ed359c 414 spi_master_transfer(gXcvrSpiInstance_c, NULL, byteArray, numOfBytes);
cotigac 10:756e09ed359c 415
cotigac 10:756e09ed359c 416 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 417 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 418
cotigac 10:756e09ed359c 419 return phyIRQSTS1;
cotigac 10:756e09ed359c 420 }
cotigac 10:756e09ed359c 421
cotigac 10:756e09ed359c 422 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 423 * Name: MCR20Drv_IndirectAccessSPIWrite
cotigac 10:756e09ed359c 424 * Description: -
cotigac 10:756e09ed359c 425 * Parameters: -
cotigac 10:756e09ed359c 426 * Return: -
cotigac 10:756e09ed359c 427 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 428 void MCR20Drv_IndirectAccessSPIWrite
cotigac 10:756e09ed359c 429 (
cotigac 10:756e09ed359c 430 uint8_t address,
cotigac 10:756e09ed359c 431 uint8_t value
cotigac 10:756e09ed359c 432 )
cotigac 10:756e09ed359c 433 {
cotigac 10:756e09ed359c 434 uint32_t txData;
cotigac 10:756e09ed359c 435
cotigac 10:756e09ed359c 436 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 437
cotigac 10:756e09ed359c 438 spi_master_configure_speed(gXcvrSpiInstance_c, 16000000);
cotigac 10:756e09ed359c 439
cotigac 10:756e09ed359c 440 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 441
cotigac 10:756e09ed359c 442 txData = TransceiverSPI_IARIndexReg;
cotigac 10:756e09ed359c 443 txData |= (address) << 8;
cotigac 10:756e09ed359c 444 txData |= (value) << 16;
cotigac 10:756e09ed359c 445
cotigac 10:756e09ed359c 446 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t*)&txData, NULL, 3);
cotigac 10:756e09ed359c 447
cotigac 10:756e09ed359c 448 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 449 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 450 }
cotigac 10:756e09ed359c 451
cotigac 10:756e09ed359c 452 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 453 * Name: MCR20Drv_IndirectAccessSPIMultiByteWrite
cotigac 10:756e09ed359c 454 * Description: -
cotigac 10:756e09ed359c 455 * Parameters: -
cotigac 10:756e09ed359c 456 * Return: -
cotigac 10:756e09ed359c 457 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 458 void MCR20Drv_IndirectAccessSPIMultiByteWrite
cotigac 10:756e09ed359c 459 (
cotigac 10:756e09ed359c 460 uint8_t startAddress,
cotigac 10:756e09ed359c 461 uint8_t * byteArray,
cotigac 10:756e09ed359c 462 uint8_t numOfBytes
cotigac 10:756e09ed359c 463 )
cotigac 10:756e09ed359c 464 {
cotigac 10:756e09ed359c 465 uint16_t txData;
cotigac 10:756e09ed359c 466
cotigac 10:756e09ed359c 467 if( (numOfBytes == 0) || (byteArray == NULL) )
cotigac 10:756e09ed359c 468 {
cotigac 10:756e09ed359c 469 return;
cotigac 10:756e09ed359c 470 }
cotigac 10:756e09ed359c 471
cotigac 10:756e09ed359c 472 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 473
cotigac 10:756e09ed359c 474 spi_master_configure_speed(gXcvrSpiInstance_c, 16000000);
cotigac 10:756e09ed359c 475
cotigac 10:756e09ed359c 476 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 477
cotigac 10:756e09ed359c 478 txData = TransceiverSPI_IARIndexReg;
cotigac 10:756e09ed359c 479 txData |= (startAddress) << 8;
cotigac 10:756e09ed359c 480
cotigac 10:756e09ed359c 481 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t*)&txData, NULL, sizeof(txData));
cotigac 10:756e09ed359c 482 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t*)byteArray, NULL, numOfBytes);
cotigac 10:756e09ed359c 483
cotigac 10:756e09ed359c 484 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 485 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 486 }
cotigac 10:756e09ed359c 487
cotigac 10:756e09ed359c 488 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 489 * Name: MCR20Drv_IndirectAccessSPIRead
cotigac 10:756e09ed359c 490 * Description: -
cotigac 10:756e09ed359c 491 * Parameters: -
cotigac 10:756e09ed359c 492 * Return: -
cotigac 10:756e09ed359c 493 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 494 uint8_t MCR20Drv_IndirectAccessSPIRead
cotigac 10:756e09ed359c 495 (
cotigac 10:756e09ed359c 496 uint8_t address
cotigac 10:756e09ed359c 497 )
cotigac 10:756e09ed359c 498 {
cotigac 10:756e09ed359c 499 uint16_t txData;
cotigac 10:756e09ed359c 500 uint8_t rxData;
cotigac 10:756e09ed359c 501
cotigac 10:756e09ed359c 502 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 503
cotigac 10:756e09ed359c 504 spi_master_configure_speed(gXcvrSpiInstance_c, 8000000);
cotigac 10:756e09ed359c 505
cotigac 10:756e09ed359c 506 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 507
cotigac 10:756e09ed359c 508 txData = TransceiverSPI_IARIndexReg | TransceiverSPI_ReadSelect;
cotigac 10:756e09ed359c 509 txData |= (address) << 8;
cotigac 10:756e09ed359c 510
cotigac 10:756e09ed359c 511 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t*)&txData, NULL, sizeof(txData));
cotigac 10:756e09ed359c 512 spi_master_transfer(gXcvrSpiInstance_c, NULL, &rxData, sizeof(rxData));
cotigac 10:756e09ed359c 513
cotigac 10:756e09ed359c 514 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 515 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 516
cotigac 10:756e09ed359c 517 return rxData;
cotigac 10:756e09ed359c 518 }
cotigac 10:756e09ed359c 519
cotigac 10:756e09ed359c 520 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 521 * Name: MCR20Drv_IndirectAccessSPIMultiByteRead
cotigac 10:756e09ed359c 522 * Description: -
cotigac 10:756e09ed359c 523 * Parameters: -
cotigac 10:756e09ed359c 524 * Return: -
cotigac 10:756e09ed359c 525 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 526 void MCR20Drv_IndirectAccessSPIMultiByteRead
cotigac 10:756e09ed359c 527 (
cotigac 10:756e09ed359c 528 uint8_t startAddress,
cotigac 10:756e09ed359c 529 uint8_t * byteArray,
cotigac 10:756e09ed359c 530 uint8_t numOfBytes
cotigac 10:756e09ed359c 531 )
cotigac 10:756e09ed359c 532 {
cotigac 10:756e09ed359c 533 uint16_t txData;
cotigac 10:756e09ed359c 534
cotigac 10:756e09ed359c 535 if( (numOfBytes == 0) || (byteArray == NULL) )
cotigac 10:756e09ed359c 536 {
cotigac 10:756e09ed359c 537 return;
cotigac 10:756e09ed359c 538 }
cotigac 10:756e09ed359c 539
cotigac 10:756e09ed359c 540 ProtectFromMCR20Interrupt();
cotigac 10:756e09ed359c 541
cotigac 10:756e09ed359c 542 spi_master_configure_speed(gXcvrSpiInstance_c, 8000000);
cotigac 10:756e09ed359c 543
cotigac 10:756e09ed359c 544 gXcvrAssertCS_d();
cotigac 10:756e09ed359c 545
cotigac 10:756e09ed359c 546 txData = (TransceiverSPI_IARIndexReg | TransceiverSPI_ReadSelect);
cotigac 10:756e09ed359c 547 txData |= (startAddress) << 8;
cotigac 10:756e09ed359c 548
cotigac 10:756e09ed359c 549 spi_master_transfer(gXcvrSpiInstance_c, (uint8_t*)&txData, NULL, sizeof(txData));
cotigac 10:756e09ed359c 550 spi_master_transfer(gXcvrSpiInstance_c, NULL, byteArray, numOfBytes);
cotigac 10:756e09ed359c 551
cotigac 10:756e09ed359c 552 gXcvrDeassertCS_d();
cotigac 10:756e09ed359c 553 UnprotectFromMCR20Interrupt();
cotigac 10:756e09ed359c 554 }
cotigac 10:756e09ed359c 555
cotigac 10:756e09ed359c 556 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 557 * Name: MCR20Drv_IRQ_PortConfig
cotigac 10:756e09ed359c 558 * Description: -
cotigac 10:756e09ed359c 559 * Parameters: -
cotigac 10:756e09ed359c 560 * Return: -
cotigac 10:756e09ed359c 561 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 562 void MCR20Drv_IRQ_PortConfig
cotigac 10:756e09ed359c 563 (
cotigac 10:756e09ed359c 564 void
cotigac 10:756e09ed359c 565 )
cotigac 10:756e09ed359c 566 {
cotigac 10:756e09ed359c 567 #if 0
cotigac 10:756e09ed359c 568 PORT_HAL_SetMuxMode(g_portBaseAddr[GPIO_EXTRACT_PORT(kGpioXcvrIrqPin)],
cotigac 10:756e09ed359c 569 GPIO_EXTRACT_PIN(kGpioXcvrIrqPin),
cotigac 10:756e09ed359c 570 kPortMuxAsGpio);
cotigac 10:756e09ed359c 571 GPIO_DRV_InputPinInit(&mXcvrIrqPinCfg);
cotigac 10:756e09ed359c 572 #endif
cotigac 10:756e09ed359c 573 }
cotigac 10:756e09ed359c 574
cotigac 10:756e09ed359c 575 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 576 * Name: MCR20Drv_IsIrqPending
cotigac 10:756e09ed359c 577 * Description: -
cotigac 10:756e09ed359c 578 * Parameters: -
cotigac 10:756e09ed359c 579 * Return: -
cotigac 10:756e09ed359c 580 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 581 uint32_t MCR20Drv_IsIrqPending
cotigac 10:756e09ed359c 582 (
cotigac 10:756e09ed359c 583 void
cotigac 10:756e09ed359c 584 )
cotigac 10:756e09ed359c 585 {
cotigac 10:756e09ed359c 586 #if 0
cotigac 10:756e09ed359c 587 if( GPIO_DRV_ReadPinInput(kGpioXcvrIrqPin) )
cotigac 10:756e09ed359c 588 {
cotigac 10:756e09ed359c 589 return FALSE;
cotigac 10:756e09ed359c 590 }
cotigac 10:756e09ed359c 591 return TRUE;
cotigac 10:756e09ed359c 592 #endif
cotigac 10:756e09ed359c 593 return TRUE;
cotigac 10:756e09ed359c 594 }
cotigac 10:756e09ed359c 595
cotigac 10:756e09ed359c 596 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 597 * Name: MCR20Drv_IRQ_Disable
cotigac 10:756e09ed359c 598 * Description: -
cotigac 10:756e09ed359c 599 * Parameters: -
cotigac 10:756e09ed359c 600 * Return: -
cotigac 10:756e09ed359c 601 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 602 void MCR20Drv_IRQ_Disable // TODO
cotigac 10:756e09ed359c 603 (
cotigac 10:756e09ed359c 604 void
cotigac 10:756e09ed359c 605 )
cotigac 10:756e09ed359c 606 {
cotigac 10:756e09ed359c 607 arm_enter_critical();
cotigac 10:756e09ed359c 608
cotigac 10:756e09ed359c 609 if( mPhyIrqDisableCnt == 0 )
cotigac 10:756e09ed359c 610 {
cotigac 10:756e09ed359c 611 // PORT_HAL_SetPinIntMode(g_portBaseAddr[GPIO_EXTRACT_PORT(kGpioXcvrIrqPin)],
cotigac 10:756e09ed359c 612 // GPIO_EXTRACT_PIN(kGpioXcvrIrqPin),
cotigac 10:756e09ed359c 613 // kPortIntDisabled);
cotigac 10:756e09ed359c 614 }
cotigac 10:756e09ed359c 615
cotigac 10:756e09ed359c 616 mPhyIrqDisableCnt++;
cotigac 10:756e09ed359c 617
cotigac 10:756e09ed359c 618 arm_exit_critical();
cotigac 10:756e09ed359c 619 }
cotigac 10:756e09ed359c 620
cotigac 10:756e09ed359c 621 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 622 * Name: MCR20Drv_IRQ_Enable
cotigac 10:756e09ed359c 623 * Description: -
cotigac 10:756e09ed359c 624 * Parameters: -
cotigac 10:756e09ed359c 625 * Return: -
cotigac 10:756e09ed359c 626 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 627 void MCR20Drv_IRQ_Enable // TODO
cotigac 10:756e09ed359c 628 (
cotigac 10:756e09ed359c 629 void
cotigac 10:756e09ed359c 630 )
cotigac 10:756e09ed359c 631 {
cotigac 10:756e09ed359c 632 arm_enter_critical();
cotigac 10:756e09ed359c 633
cotigac 10:756e09ed359c 634 if( mPhyIrqDisableCnt )
cotigac 10:756e09ed359c 635 {
cotigac 10:756e09ed359c 636 mPhyIrqDisableCnt--;
cotigac 10:756e09ed359c 637
cotigac 10:756e09ed359c 638 if( mPhyIrqDisableCnt == 0 )
cotigac 10:756e09ed359c 639 {
cotigac 10:756e09ed359c 640 // PORT_HAL_SetPinIntMode(g_portBaseAddr[GPIO_EXTRACT_PORT(kGpioXcvrIrqPin)],
cotigac 10:756e09ed359c 641 // GPIO_EXTRACT_PIN(kGpioXcvrIrqPin),
cotigac 10:756e09ed359c 642 // kPortIntLogicZero);
cotigac 10:756e09ed359c 643 }
cotigac 10:756e09ed359c 644 }
cotigac 10:756e09ed359c 645
cotigac 10:756e09ed359c 646 arm_exit_critical();
cotigac 10:756e09ed359c 647 }
cotigac 10:756e09ed359c 648
cotigac 10:756e09ed359c 649 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 650 * Name: MCR20Drv_IRQ_IsEnabled
cotigac 10:756e09ed359c 651 * Description: -
cotigac 10:756e09ed359c 652 * Parameters: -
cotigac 10:756e09ed359c 653 * Return: -
cotigac 10:756e09ed359c 654 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 655 uint32_t MCR20Drv_IRQ_IsEnabled
cotigac 10:756e09ed359c 656 (
cotigac 10:756e09ed359c 657 void
cotigac 10:756e09ed359c 658 )
cotigac 10:756e09ed359c 659 {
cotigac 10:756e09ed359c 660 #if 0
cotigac 10:756e09ed359c 661 port_interrupt_config_t mode;
cotigac 10:756e09ed359c 662
cotigac 10:756e09ed359c 663 mode = PORT_HAL_GetPinIntMode(g_portBaseAddr[GPIO_EXTRACT_PORT(kGpioXcvrIrqPin)],
cotigac 10:756e09ed359c 664 GPIO_EXTRACT_PIN(kGpioXcvrIrqPin));
cotigac 10:756e09ed359c 665 return (mode != kPortIntDisabled);
cotigac 10:756e09ed359c 666 #endif
cotigac 10:756e09ed359c 667 return 0;
cotigac 10:756e09ed359c 668 }
cotigac 10:756e09ed359c 669
cotigac 10:756e09ed359c 670 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 671 * Name: MCR20Drv_IRQ_Clear
cotigac 10:756e09ed359c 672 * Description: -
cotigac 10:756e09ed359c 673 * Parameters: -
cotigac 10:756e09ed359c 674 * Return: -
cotigac 10:756e09ed359c 675 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 676 void MCR20Drv_IRQ_Clear
cotigac 10:756e09ed359c 677 (
cotigac 10:756e09ed359c 678 void
cotigac 10:756e09ed359c 679 )
cotigac 10:756e09ed359c 680 {
cotigac 10:756e09ed359c 681 // GPIO_DRV_ClearPinIntFlag(kGpioXcvrIrqPin);
cotigac 10:756e09ed359c 682 }
cotigac 10:756e09ed359c 683
cotigac 10:756e09ed359c 684 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 685 * Name: MCR20Drv_RST_Assert
cotigac 10:756e09ed359c 686 * Description: -
cotigac 10:756e09ed359c 687 * Parameters: -
cotigac 10:756e09ed359c 688 * Return: -
cotigac 10:756e09ed359c 689 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 690 void MCR20Drv_RST_B_Assert
cotigac 10:756e09ed359c 691 (
cotigac 10:756e09ed359c 692 void
cotigac 10:756e09ed359c 693 )
cotigac 10:756e09ed359c 694 {
cotigac 10:756e09ed359c 695 //GPIO_DRV_ClearPinOutput(kGpioXcvrResetPin);
cotigac 10:756e09ed359c 696 }
cotigac 10:756e09ed359c 697
cotigac 10:756e09ed359c 698 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 699 * Name: MCR20Drv_RST_Deassert
cotigac 10:756e09ed359c 700 * Description: -
cotigac 10:756e09ed359c 701 * Parameters: -
cotigac 10:756e09ed359c 702 * Return: -
cotigac 10:756e09ed359c 703 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 704 void MCR20Drv_RST_B_Deassert
cotigac 10:756e09ed359c 705 (
cotigac 10:756e09ed359c 706 void
cotigac 10:756e09ed359c 707 )
cotigac 10:756e09ed359c 708 {
cotigac 10:756e09ed359c 709 //GPIO_DRV_SetPinOutput(kGpioXcvrResetPin);
cotigac 10:756e09ed359c 710 }
cotigac 10:756e09ed359c 711
cotigac 10:756e09ed359c 712 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 713 * Name: MCR20Drv_SoftRST_Assert
cotigac 10:756e09ed359c 714 * Description: -
cotigac 10:756e09ed359c 715 * Parameters: -
cotigac 10:756e09ed359c 716 * Return: -
cotigac 10:756e09ed359c 717 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 718 void MCR20Drv_SoftRST_Assert
cotigac 10:756e09ed359c 719 (
cotigac 10:756e09ed359c 720 void
cotigac 10:756e09ed359c 721 )
cotigac 10:756e09ed359c 722 {
cotigac 10:756e09ed359c 723 MCR20Drv_IndirectAccessSPIWrite(SOFT_RESET, (0x80));
cotigac 10:756e09ed359c 724 }
cotigac 10:756e09ed359c 725
cotigac 10:756e09ed359c 726 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 727 * Name: MCR20Drv_SoftRST_Deassert
cotigac 10:756e09ed359c 728 * Description: -
cotigac 10:756e09ed359c 729 * Parameters: -
cotigac 10:756e09ed359c 730 * Return: -
cotigac 10:756e09ed359c 731 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 732 void MCR20Drv_SoftRST_Deassert
cotigac 10:756e09ed359c 733 (
cotigac 10:756e09ed359c 734 void
cotigac 10:756e09ed359c 735 )
cotigac 10:756e09ed359c 736 {
cotigac 10:756e09ed359c 737 MCR20Drv_IndirectAccessSPIWrite(SOFT_RESET, (0x00));
cotigac 10:756e09ed359c 738 }
cotigac 10:756e09ed359c 739
cotigac 10:756e09ed359c 740 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 741 * Name: MCR20Drv_Soft_RESET
cotigac 10:756e09ed359c 742 * Description: -
cotigac 10:756e09ed359c 743 * Parameters: -
cotigac 10:756e09ed359c 744 * Return: -
cotigac 10:756e09ed359c 745 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 746 void MCR20Drv_Soft_RESET
cotigac 10:756e09ed359c 747 (
cotigac 10:756e09ed359c 748 void
cotigac 10:756e09ed359c 749 )
cotigac 10:756e09ed359c 750 {
cotigac 10:756e09ed359c 751 //assert SOG_RST
cotigac 10:756e09ed359c 752 MCR20Drv_IndirectAccessSPIWrite(SOFT_RESET, (0x80));
cotigac 10:756e09ed359c 753
cotigac 10:756e09ed359c 754 //deassert SOG_RST
cotigac 10:756e09ed359c 755 MCR20Drv_IndirectAccessSPIWrite(SOFT_RESET, (0x00));
cotigac 10:756e09ed359c 756 }
cotigac 10:756e09ed359c 757
cotigac 10:756e09ed359c 758 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 759 * Name: MCR20Drv_RESET
cotigac 10:756e09ed359c 760 * Description: -
cotigac 10:756e09ed359c 761 * Parameters: -
cotigac 10:756e09ed359c 762 * Return: -
cotigac 10:756e09ed359c 763 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 764 void MCR20Drv_RESET
cotigac 10:756e09ed359c 765 (
cotigac 10:756e09ed359c 766 void
cotigac 10:756e09ed359c 767 )
cotigac 10:756e09ed359c 768 {
cotigac 10:756e09ed359c 769 volatile uint32_t delay = 1000;
cotigac 10:756e09ed359c 770 //assert RST_B
cotigac 10:756e09ed359c 771 MCR20Drv_RST_B_Assert();
cotigac 10:756e09ed359c 772
cotigac 10:756e09ed359c 773 // TODO
cotigac 10:756e09ed359c 774 while(delay--);
cotigac 10:756e09ed359c 775
cotigac 10:756e09ed359c 776 //deassert RST_B
cotigac 10:756e09ed359c 777 MCR20Drv_RST_B_Deassert();
cotigac 10:756e09ed359c 778 }
cotigac 10:756e09ed359c 779
cotigac 10:756e09ed359c 780 /*---------------------------------------------------------------------------
cotigac 10:756e09ed359c 781 * Name: MCR20Drv_Set_CLK_OUT_Freq
cotigac 10:756e09ed359c 782 * Description: -
cotigac 10:756e09ed359c 783 * Parameters: -
cotigac 10:756e09ed359c 784 * Return: -
cotigac 10:756e09ed359c 785 *---------------------------------------------------------------------------*/
cotigac 10:756e09ed359c 786 void MCR20Drv_Set_CLK_OUT_Freq
cotigac 10:756e09ed359c 787 (
cotigac 10:756e09ed359c 788 uint8_t freqDiv
cotigac 10:756e09ed359c 789 )
cotigac 10:756e09ed359c 790 {
cotigac 10:756e09ed359c 791 uint8_t clkOutCtrlReg = (freqDiv & cCLK_OUT_DIV_Mask) | cCLK_OUT_EN | cCLK_OUT_EXTEND;
cotigac 10:756e09ed359c 792
cotigac 10:756e09ed359c 793 if(freqDiv == gCLK_OUT_FREQ_DISABLE)
cotigac 10:756e09ed359c 794 {
cotigac 10:756e09ed359c 795 clkOutCtrlReg = (cCLK_OUT_EXTEND | gCLK_OUT_FREQ_4_MHz); //reset value with clock out disabled
cotigac 10:756e09ed359c 796 }
cotigac 10:756e09ed359c 797
cotigac 10:756e09ed359c 798 MCR20Drv_DirectAccessSPIWrite((uint8_t) CLK_OUT_CTRL, clkOutCtrlReg);
cotigac 10:756e09ed359c 799 }
cotigac 10:756e09ed359c 800
cotigac 10:756e09ed359c 801