Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
CC26X2R1_LAUNCHXL_fxns.c
1
/*
2
* Copyright (c) 2018-2019, Texas Instruments Incorporated
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
*
9
* * Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
*
12
* * Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* * Neither the name of Texas Instruments Incorporated nor the names of
17
* its contributors may be used to endorse or promote products derived
18
* from this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
/*
34
* =================== CC26X2R1_LAUNCHXL_fxns.c ============================
35
* This file contains the board-specific initialization functions.
36
*/
37
38
#include <stdbool.h>
39
#include <stddef.h>
40
#include <stdint.h>
41
42
#include <ti/devices/DeviceFamily.h>
43
#include DeviceFamily_constructPath(driverlib/ioc.h)
44
#include DeviceFamily_constructPath(driverlib/cpu.h)
45
46
#include <ti/drivers/pin/PINCC26XX.h>
47
48
#include <ti/drivers/Board.h>
49
50
#include "Board.h"
51
52
53
/*
54
* ======== CC26X2R1_LAUNCHXL_sendExtFlashByte ========
55
*/
56
void
CC26X2R1_LAUNCHXL_sendExtFlashByte(PIN_Handle pinHandle, uint8_t
byte
)
57
{
58
uint8_t i;
59
60
/* SPI Flash CS */
61
PIN_setOutputValue(pinHandle, IOID_20, 0);
62
63
for
(i = 0; i < 8; i++) {
64
PIN_setOutputValue(pinHandle, IOID_10, 0);
/* SPI Flash CLK */
65
66
/* SPI Flash MOSI */
67
PIN_setOutputValue(pinHandle, IOID_9, (
byte
>> (7 - i)) & 0x01);
68
PIN_setOutputValue(pinHandle, IOID_10, 1);
/* SPI Flash CLK */
69
70
/*
71
* Waste a few cycles to keep the CLK high for at
72
* least 45% of the period.
73
* 3 cycles per loop: 8 loops @ 48 Mhz = 0.5 us.
74
*/
75
CPUdelay(8);
76
}
77
78
PIN_setOutputValue(pinHandle, IOID_10, 0);
/* CLK */
79
PIN_setOutputValue(pinHandle, IOID_20, 1);
/* CS */
80
81
/*
82
* Keep CS high at least 40 us
83
* 3 cycles per loop: 700 loops @ 48 Mhz ~= 44 us
84
*/
85
CPUdelay(700);
86
}
87
88
/*
89
* ======== CC26X2R1_LAUNCHXL_wakeUpExtFlash ========
90
*/
91
void
CC26X2R1_LAUNCHXL_wakeUpExtFlash
(
void
)
92
{
93
PIN_Config extFlashPinTable[] = {
94
/* SPI Flash CS */
95
IOID_20 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL |
96
PIN_INPUT_DIS | PIN_DRVSTR_MED,
97
PIN_TERMINATE
98
};
99
PIN_State extFlashPinState;
100
PIN_Handle extFlashPinHandle = PIN_open(&extFlashPinState, extFlashPinTable);
101
102
/*
103
* To wake up we need to toggle the chip select at
104
* least 20 ns and ten wait at least 35 us.
105
*/
106
107
/* Toggle chip select for ~20ns to wake ext. flash */
108
PIN_setOutputValue(extFlashPinHandle, IOID_20, 0);
109
/* 3 cycles per loop: 1 loop @ 48 Mhz ~= 62 ns */
110
CPUdelay(1);
111
PIN_setOutputValue(extFlashPinHandle, IOID_20, 1);
112
/* 3 cycles per loop: 560 loops @ 48 Mhz ~= 35 us */
113
CPUdelay(560);
114
115
PIN_close(extFlashPinHandle);
116
}
117
118
/*
119
* ======== CC26X2R1_LAUNCHXL_shutDownExtFlash ========
120
*/
121
void
CC26X2R1_LAUNCHXL_shutDownExtFlash
(
void
)
122
{
123
/*
124
* To be sure we are putting the flash into sleep and not waking it,
125
* we first have to make a wake up call
126
*/
127
CC26X2R1_LAUNCHXL_wakeUpExtFlash
();
128
129
PIN_Config extFlashPinTable[] = {
130
/* SPI Flash CS*/
131
IOID_20 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL |
132
PIN_INPUT_DIS | PIN_DRVSTR_MED,
133
/* SPI Flash CLK */
134
IOID_10 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL |
135
PIN_INPUT_DIS | PIN_DRVSTR_MED,
136
/* SPI Flash MOSI */
137
IOID_9 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL |
138
PIN_INPUT_DIS | PIN_DRVSTR_MED,
139
/* SPI Flash MISO */
140
IOID_8 | PIN_INPUT_EN | PIN_PULLDOWN,
141
PIN_TERMINATE
142
};
143
PIN_State extFlashPinState;
144
PIN_Handle extFlashPinHandle = PIN_open(&extFlashPinState, extFlashPinTable);
145
146
uint8_t extFlashShutdown = 0xB9;
147
148
CC26X2R1_LAUNCHXL_sendExtFlashByte(extFlashPinHandle, extFlashShutdown);
149
150
PIN_close(extFlashPinHandle);
151
}
152
153
/*
154
* ======== Board_initHook ========
155
* Called by Board_init() to perform board-specific initialization.
156
*/
157
void
Board_initHook()
158
{
159
CC26X2R1_LAUNCHXL_shutDownExtFlash
();
160
}
CC26X2R1_LAUNCHXL_shutDownExtFlash
void CC26X2R1_LAUNCHXL_shutDownExtFlash(void)
Shut down the external flash present on the board files.
Definition
CC26X2R1_LAUNCHXL_fxns.c:121
CC26X2R1_LAUNCHXL_wakeUpExtFlash
void CC26X2R1_LAUNCHXL_wakeUpExtFlash(void)
Wake up the external flash present on the board files.
Definition
CC26X2R1_LAUNCHXL_fxns.c:91
arch
platform
simplelink
cc13xx-cc26xx
launchpad
cc26x2r1
CC26X2R1_LAUNCHXL_fxns.c
Generated on
for Contiki-NG by
1.17.0