Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
CC1312R1_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
* ======== CC1312R1_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
#include <ti/drivers/pin/PINCC26XX.h>
46
47
#include <ti/drivers/Board.h>
48
49
#include "Board.h"
50
51
52
/*
53
* ======== CC1312R1_LAUNCHXL_sendExtFlashByte ========
54
*/
55
void
CC1312R1_LAUNCHXL_sendExtFlashByte(PIN_Handle pinHandle, uint8_t
byte
)
56
{
57
uint8_t i;
58
59
/* SPI Flash CS */
60
PIN_setOutputValue(pinHandle, IOID_20, 0);
61
62
for
(i = 0; i < 8; i++) {
63
PIN_setOutputValue(pinHandle, IOID_10, 0);
/* SPI Flash CLK */
64
65
/* SPI Flash MOSI */
66
PIN_setOutputValue(pinHandle, IOID_9, (
byte
>> (7 - i)) & 0x01);
67
PIN_setOutputValue(pinHandle, IOID_10, 1);
/* SPI Flash CLK */
68
69
/*
70
* Waste a few cycles to keep the CLK high for at
71
* least 45% of the period.
72
* 3 cycles per loop: 8 loops @ 48 Mhz = 0.5 us.
73
*/
74
CPUdelay(8);
75
}
76
77
PIN_setOutputValue(pinHandle, IOID_10, 0);
/* CLK */
78
PIN_setOutputValue(pinHandle, IOID_20, 1);
/* CS */
79
80
/*
81
* Keep CS high at least 40 us
82
* 3 cycles per loop: 700 loops @ 48 Mhz ~= 44 us
83
*/
84
CPUdelay(700);
85
}
86
87
/*
88
* ======== CC1312R1_LAUNCHXL_wakeUpExtFlash ========
89
*/
90
void
CC1312R1_LAUNCHXL_wakeUpExtFlash
(
void
)
91
{
92
PIN_Config extFlashPinTable[] = {
93
/* SPI Flash CS */
94
IOID_20 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL |
95
PIN_INPUT_DIS | PIN_DRVSTR_MED,
96
PIN_TERMINATE
97
};
98
PIN_State extFlashPinState;
99
PIN_Handle extFlashPinHandle = PIN_open(&extFlashPinState, extFlashPinTable);
100
101
/*
102
* To wake up we need to toggle the chip select at
103
* least 20 ns and ten wait at least 35 us.
104
*/
105
106
/* Toggle chip select for ~20ns to wake ext. flash */
107
PIN_setOutputValue(extFlashPinHandle, IOID_20, 0);
108
/* 3 cycles per loop: 1 loop @ 48 Mhz ~= 62 ns */
109
CPUdelay(1);
110
PIN_setOutputValue(extFlashPinHandle, IOID_20, 1);
111
/* 3 cycles per loop: 560 loops @ 48 Mhz ~= 35 us */
112
CPUdelay(560);
113
114
PIN_close(extFlashPinHandle);
115
}
116
117
/*
118
* ======== CC1312R1_LAUNCHXL_shutDownExtFlash ========
119
*/
120
void
CC1312R1_LAUNCHXL_shutDownExtFlash
(
void
)
121
{
122
/*
123
* To be sure we are putting the flash into sleep and not waking it,
124
* we first have to make a wake up call
125
*/
126
CC1312R1_LAUNCHXL_wakeUpExtFlash
();
127
128
PIN_Config extFlashPinTable[] = {
129
/* SPI Flash CS*/
130
IOID_20 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL |
131
PIN_INPUT_DIS | PIN_DRVSTR_MED,
132
/* SPI Flash CLK */
133
IOID_10 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL |
134
PIN_INPUT_DIS | PIN_DRVSTR_MED,
135
/* SPI Flash MOSI */
136
IOID_9 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL |
137
PIN_INPUT_DIS | PIN_DRVSTR_MED,
138
/* SPI Flash MISO */
139
IOID_8 | PIN_INPUT_EN | PIN_PULLDOWN,
140
PIN_TERMINATE
141
};
142
PIN_State extFlashPinState;
143
PIN_Handle extFlashPinHandle = PIN_open(&extFlashPinState, extFlashPinTable);
144
145
uint8_t extFlashShutdown = 0xB9;
146
147
CC1312R1_LAUNCHXL_sendExtFlashByte(extFlashPinHandle, extFlashShutdown);
148
149
PIN_close(extFlashPinHandle);
150
}
151
152
/*
153
* ======== Board_initHook ========
154
* Called by Board_init() to perform board-specific initialization.
155
*/
156
void
Board_initHook()
157
{
158
CC1312R1_LAUNCHXL_shutDownExtFlash
();
159
}
CC1312R1_LAUNCHXL_shutDownExtFlash
void CC1312R1_LAUNCHXL_shutDownExtFlash(void)
Turn off the external flash on LaunchPads.
Definition
CC1312R1_LAUNCHXL_fxns.c:120
CC1312R1_LAUNCHXL_wakeUpExtFlash
void CC1312R1_LAUNCHXL_wakeUpExtFlash(void)
Wake up the external flash present on the board files.
Definition
CC1312R1_LAUNCHXL_fxns.c:90
arch
platform
simplelink
cc13xx-cc26xx
launchpad
cc1312r1
CC1312R1_LAUNCHXL_fxns.c
Generated on
for Contiki-NG by
1.17.0