1 //###########################################################################
2 //
3 // FILE:   F2837xD_GlobalPrototypes.h
4 //
5 // TITLE:  Global prototypes for F2837xD Examples
6 //
7 //###########################################################################
8 // $TI Release: F2837xD Support Library v3.05.00.00 $
9 // $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
10 // $Copyright:
11 // Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
12 //
13 // Redistribution and use in source and binary forms, with or without
14 // modification, are permitted provided that the following conditions
15 // are met:
16 //
17 //   Redistributions of source code must retain the above copyright
18 //   notice, this list of conditions and the following disclaimer.
19 //
20 //   Redistributions in binary form must reproduce the above copyright
21 //   notice, this list of conditions and the following disclaimer in the
22 //   documentation and/or other materials provided with the
23 //   distribution.
24 //
25 //   Neither the name of Texas Instruments Incorporated nor the names of
26 //   its contributors may be used to endorse or promote products derived
27 //   from this software without specific prior written permission.
28 //
29 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 // $
41 //###########################################################################
42 
43 #ifndef F2837xD_GLOBALPROTOTYPES_H
44 #define F2837xD_GLOBALPROTOTYPES_H
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 //
51 // Function Prototypes (Shared)
52 //
53 extern void EnableInterrupts(void);
54 extern void InitAPwm1Gpio(void);
55 extern void InitCAN(void);
56 extern void InitECap(void);
57 extern void InitECapGpio(void);
58 extern void InitECap1Gpio(Uint16 pin);
59 extern void InitECap2Gpio(Uint16 pin);
60 extern void InitECap3Gpio(Uint16 pin);
61 extern void InitECap4Gpio(Uint16 pin);
62 extern void InitECap5Gpio(Uint16 pin);
63 extern void InitECap6Gpio(Uint16 pin);
64 extern void InitEQep1Gpio(void);
65 extern void InitEQep2Gpio(void);
66 extern void InitEQep3Gpio(void);
67 extern void InitEPwmGpio(void);
68 extern void InitEPwm1Gpio(void);
69 extern void InitEPwm2Gpio(void);
70 extern void InitEPwm3Gpio(void);
71 extern void InitEPwm4Gpio(void);
72 extern void InitEPwm5Gpio(void);
73 extern void InitEPwm6Gpio(void);
74 extern void InitEPwm7Gpio(void);
75 extern void InitEPwm8Gpio(void);
76 extern void InitEPwm9Gpio(void);
77 extern void InitEPwm10Gpio(void);
78 extern void InitEPwm11Gpio(void);
79 extern void InitEPwm12Gpio(void);
80 extern void InitPeripheralClocks(void);
81 extern void DisablePeripheralClocks(void);
82 extern void InitPieCtrl(void);
83 extern void InitPieVectTable(void);
84 extern void InitSpi(void);
85 extern void InitSpiGpio(void);
86 extern void InitSpiaGpio(void);
87 extern void InitSysCtrl(void);
88 extern void InitSysPll(Uint16 clock_source, Uint16 imult, Uint16 fmult,
89                        Uint16 divsel);
90 extern void InitAuxPll(Uint16 clock_source, Uint16 imult, Uint16 fmult,
91                        Uint16 divsel);
92 
93 #define KickDog ServiceDog     // For compatibility with previous versions
94 extern void ServiceDog(void);
95 extern void DisableDog(void);
96 
97 extern Uint16 CsmUnlock(void);
98 extern void SysIntOsc1Sel (void);
99 extern void SysIntOsc2Sel (void);
100 extern void SysXtalOscSel (void);
101 
102 extern void AuxIntOsc2Sel (void);
103 extern void AuxXtalOscSel (void);
104 extern void AuxAuxClkSel (void);
105 
106 extern void SetDBGIER(Uint16 dbgier);
107 
108 //
109 //                 CAUTION
110 // This function MUST be executed out of RAM. Executing it
111 // out of OTP/Flash will yield unpredictable results
112 //
113 extern void InitFlash(void);
114 extern void InitFlash_Bank0(void);
115 extern void InitFlash_Bank1(void);
116 extern void FlashOff(void);
117 extern void FlashOff_Bank0(void);
118 extern void FlashOff_Bank1(void);
119 extern void SeizeFlashPump(void);
120 extern void SeizeFlashPump_Bank0(void);
121 extern void SeizeFlashPump_Bank1(void);
122 extern void ReleaseFlashPump(void);
123 
124 //
125 //LPM functions in F2837xD_SysCtrl.c
126 //
127 void IDLE();
128 void STANDBY();
129 void HALT();
130 void HIB();
131 
132 //
133 //ADC functions
134 //
135 extern void AdcSetMode(Uint16 adc, Uint16 resolution, Uint16 signalmode);
136 extern void CalAdcINL(Uint16 adc);
137 
138 //
139 // DMA Functions
140 //
141 extern void DMAInitialize(void);
142 
143 //
144 // DMA Channel 1
145 //
146 extern void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,
147                              volatile Uint16 *DMA_Source);
148 extern void DMACH1AddrConfig32bit(volatile Uint32 *DMA_Dest,
149                                   volatile Uint32 *DMA_Source);
150 extern void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
151 extern void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
152 extern void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize,
153                              int16 deswstep);
154 extern void DMACH1ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot,
155                              Uint16 cont, Uint16 synce, Uint16 syncsel,
156                              Uint16 ovrinte, Uint16 datasize,
157                              Uint16 chintmode,
158                              Uint16 chinte);
159 extern void StartDMACH1(void);
160 
161 //
162 // DMA Channel 2
163 //
164 extern void DMACH2AddrConfig(volatile Uint16 *DMA_Dest,
165                              volatile Uint16 *DMA_Source);
166 extern void DMACH2AddrConfig32bit(volatile Uint32 *DMA_Dest,
167                                   volatile Uint32 *DMA_Source);
168 extern void DMACH2BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
169 extern void DMACH2TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
170 extern void DMACH2WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize,
171                              int16 deswstep);
172 extern void DMACH2ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot,
173                              Uint16 cont, Uint16 synce, Uint16 syncsel,
174                              Uint16 ovrinte, Uint16 datasize,
175                              Uint16 chintmode,
176                              Uint16 chinte);
177 extern void StartDMACH2(void);
178 
179 //
180 // DMA Channel 3
181 //
182 extern void DMACH3AddrConfig(volatile Uint16 *DMA_Dest,
183                              volatile Uint16 *DMA_Source);
184 extern void DMACH3AddrConfig32bit(volatile Uint32 *DMA_Dest,
185                                   volatile Uint32 *DMA_Source);
186 extern void DMACH3BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
187 extern void DMACH3TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
188 extern void DMACH3WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize,
189                              int16 deswstep);
190 extern void DMACH3ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot,
191                              Uint16 cont, Uint16 synce, Uint16 syncsel,
192                              Uint16 ovrinte, Uint16 datasize,
193                              Uint16 chintmode,
194                              Uint16 chinte);
195 extern void StartDMACH3(void);
196 
197 //
198 // DMA Channel 4
199 //
200 extern void DMACH4AddrConfig(volatile Uint16 *DMA_Dest,
201                              volatile Uint16 *DMA_Source);
202 extern void DMACH4AddrConfig32bit(volatile Uint32 *DMA_Dest,
203                                   volatile Uint32 *DMA_Source);
204 extern void DMACH4BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
205 extern void DMACH4TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
206 extern void DMACH4WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize,
207                              int16 deswstep);
208 extern void DMACH4ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot,
209                              Uint16 cont, Uint16 synce, Uint16 syncsel,
210                              Uint16 ovrinte, Uint16 datasize,
211                              Uint16 chintmode,
212                              Uint16 chinte);
213 extern void StartDMACH4(void);
214 
215 //
216 // DMA Channel 5
217 //
218 extern void DMACH5AddrConfig(volatile Uint16 *DMA_Dest,
219                              volatile Uint16 *DMA_Source);
220 extern void DMACH5AddrConfig32bit(volatile Uint32 *DMA_Dest,
221                                   volatile Uint32 *DMA_Source);
222 extern void DMACH5BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
223 extern void DMACH5TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
224 extern void DMACH5WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize,
225                              int16 deswstep);
226 extern void DMACH5ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot,
227                              Uint16 cont, Uint16 synce, Uint16 syncsel,
228                              Uint16 ovrinte, Uint16 datasize,
229                              Uint16 chintmode,
230                              Uint16 chinte);
231 extern void StartDMACH5(void);
232 
233 //
234 // DMA Channel 6
235 //
236 extern void DMACH6AddrConfig(volatile Uint16 *DMA_Dest,
237                              volatile Uint16 *DMA_Source);
238 extern void DMACH6AddrConfig32bit(volatile Uint32 *DMA_Dest,
239                                   volatile Uint32 *DMA_Source);
240 extern void DMACH6BurstConfig(Uint16 bsize,Uint16 srcbstep, int16 desbstep);
241 extern void DMACH6TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
242 extern void DMACH6WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize,
243                              int16 deswstep);
244 extern void DMACH6ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot,
245                              Uint16 cont, Uint16 synce, Uint16 syncsel,
246                              Uint16 ovrinte, Uint16 datasize,
247                              Uint16 chintmode,
248                              Uint16 chinte);
249 extern void StartDMACH6(void);
250 
251 //
252 //GPIO Functions
253 //
254 extern void InitGpio();
255 extern void GPIO_SetupPinMux(Uint16 gpioNumber, Uint16 cpu, Uint16 muxPosition);
256 extern void GPIO_SetupPinOptions(Uint16 gpioNumber, Uint16 output, Uint16 flags);
257 extern void GPIO_SetupLock(Uint16 gpioNumber, Uint16 flags);
258 extern void GPIO_SetupXINT1Gpio(Uint16 gpioNumber);
259 extern void GPIO_SetupXINT2Gpio(Uint16 gpioNumber);
260 extern void GPIO_SetupXINT3Gpio(Uint16 gpioNumber);
261 extern void GPIO_SetupXINT4Gpio(Uint16 gpioNumber);
262 extern void GPIO_SetupXINT5Gpio(Uint16 gpioNumber);
263 extern void GPIO_SelectIpcInt(Uint16 newFlag);
264 extern void GPIO_EnableUnbondedIOPullupsFor100Pin(void);
265 extern void GPIO_EnableUnbondedIOPullupsFor100Pin(void);
266 extern void GPIO_EnableUnbondedIOPullups(void);
267 Uint16 GPIO_ReadPin(Uint16 gpioNumber);
268 void GPIO_WritePin(Uint16 gpioNumber, Uint16 outVal);
269 
270 //
271 //IPC Functions
272 //
273 extern void InitIpc();
274 extern Uint64 ReadIpcTimer();
275 extern void SendIpcData(void *data, Uint16 word_length, Uint16 flag);
276 extern void RecvIpcData(void *recv_buf, Uint16 word_length);
277 extern void FillIpcSendData(Uint16 fill_data);
278 extern void SendIpcCommand(Uint32 command, Uint32 address, Uint32 data,
279                            Uint16 flag);
280 extern void SendIpcFlag(Uint16 flag);
281 extern void AckIpcFlag(Uint16 flag);
282 extern void CancelIpcFlag(Uint16 flag);
283 extern void WaitForIpcFlag(Uint16 flag);
284 extern void WaitForIpcAck(Uint16 flag);
285 extern void IpcSync(Uint16 flag);
286 
287 //
288 // CAN Functions
289 //
290 extern void CanGpioPinMuxing(Uint32 ulBase, Uint16 canTxRxPin);
291 extern void CanAGpioConfig(Uint16 canaTxRxPin);
292 extern void CanBGpioConfig(Uint16 canbTxRxPin);
293 extern void CanModuleClkSelect(Uint32 ulBase, Uint16 ucSource);
294 
295 //
296 // I2C Functions
297 //
298 extern void I2cAGpioConfig(Uint16 I2caDataClkPin);
299 extern void I2cBGpioConfig(Uint16 I2cbDataClkPin);
300 
301 //
302 // McBSP functions
303 // McBSPA
304 //
305 extern void InitMcbspa(void);
306 extern void InitMcbspaInt(void);
307 extern void InitMcbspa8bit(void);
308 extern void InitMcbspa12bit(void);
309 extern void InitMcbspa16bit(void);
310 extern void InitMcbspa20bit(void);
311 extern void InitMcbspa24bit(void);
312 extern void InitMcbspa32bit(void);
313 extern void InitMcbspaGpio(void);
314 extern void delay_loop(void);
315 
316 //
317 // McBSPB
318 //
319 extern void InitMcbspb(void);
320 extern void InitMcbspbInt(void);
321 extern void InitMcbspb8bit(void);
322 extern void InitMcbspb12bit(void);
323 extern void InitMcbspb16bit(void);
324 extern void InitMcbspb20bit(void);
325 extern void InitMcbspb24bit(void);
326 extern void InitMcbspb32bit(void);
327 extern void InitMcbspbGpio(void);
328 
329 //
330 //Temp Sensor Functions
331 //
332 extern void InitTempSensor(float32 vrefhi_voltage);
333 extern int16 GetTemperatureC(int16 sensorSample);
334 extern int16 GetTemperatureK(int16 sensorSample);
335 
336 //
337 // External symbols created by the linker cmd file
338 // DSP28 examples will use these to relocate code from one LOAD location
339 // in Flash to a different RUN location in internal
340 // RAM
341 //
342 extern Uint16 RamfuncsLoadStart;
343 extern Uint16 RamfuncsLoadEnd;
344 extern Uint16 RamfuncsLoadSize;
345 extern Uint16 RamfuncsRunStart;
346 extern Uint16 RamfuncsRunEnd;
347 extern Uint16 RamfuncsRunSize;
348 
349 //
350 // External Boot ROM variable definitions
351 //
352 extern Uint16 EmuBMode;
353 extern Uint16 EmuBootPins;
354 
355 #ifdef __cplusplus
356 }
357 #endif /* extern "C" */
358 
359 #endif   // - end of F2837xD_GLOBALPROTOTYPES_H
360 
361 //
362 // End of file
363 //
364