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