24 #if MCU_TYPE == MCU_TYPE_TMS320F28335
25 #include "DSP2833x_Device.h"
26 #include "DSP2833x_Examples.h"
29 #if MCU_TYPE == MCU_TYPE_TMS320F2812
30 #include "DSP281x_Device.h"
31 #include "DSP281x_Examples.h"
34 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
36 #include "sys_common.h"
49 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
50 #define PIN_STARTCONVA (uint32)(1U << 21U)
51 #define PIN_STARTCONVB (uint32)(1U << 20U)
52 #define PIN_STARTCONVC (uint32)(1U << 22U)
54 #define READ_ADC_ALL 0xFF
56 #define MLC_READ_32(addr) *((volatile uint32_t*)BASE_ADDRESS+addr)
72 #if MCU_TYPE == MCU_TYPE_TMS320F28335
73 #pragma DATA_SECTION(AD_dma_res_1, "DMARAML6")
74 volatile int16_t AD_dma_res_1[16];
75 #pragma DATA_SECTION(AD_dma_res_2, "DMARAML6")
76 volatile int16_t AD_dma_res_2[16];
77 #pragma DATA_SECTION(AD_dma_res_3, "DMARAML6")
78 volatile int16_t AD_dma_res_3[16];
81 #if MCU_TYPE == MCU_TYPE_TMS320F2812
82 volatile int16_t AD_dma_res_1[16];
83 volatile int16_t AD_dma_res_2[16];
84 volatile int16_t AD_dma_res_3[16];
87 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
88 volatile int16_t AD_dma_res_1[16];
89 volatile int16_t AD_dma_res_2[16];
90 volatile int16_t AD_dma_res_3[16];
92 t_isrFuncPTR adc_convend_handler;
94 g_dmaCTRL g_dmaCTRLPKT;
105 volatile int16_t* AD_res_1 = AD_dma_res_1;
106 volatile int16_t* AD_res_2 = AD_dma_res_2;
107 volatile int16_t* AD_res_3 = AD_dma_res_3;
118 volatile uint16_t pwr_out_state = 0;
120 volatile uint16_t dbg_state = 0;
127 uint16_t ad_conf = 0;
128 uint16_t ad_soc_conf = 0;
135 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
139 void isr_conv_end(
void){
142 #if MCU_TYPE == MCU_TYPE_TMS320F28335
143 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
146 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
151 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement ISR of ADC conv end
164 g_dmaCTRLPKT.SADD = sadd;
165 g_dmaCTRLPKT.DADD = dadd;
166 g_dmaCTRLPKT.CHCTRL = 0;
167 g_dmaCTRLPKT.FRCNT = 1;
168 g_dmaCTRLPKT.ELCNT = dsize;
169 g_dmaCTRLPKT.ELDOFFSET = 4;
170 g_dmaCTRLPKT.ELSOFFSET = 0;
171 g_dmaCTRLPKT.FRDOFFSET = 0;
172 g_dmaCTRLPKT.FRSOFFSET = 0;
173 g_dmaCTRLPKT.PORTASGN = 4;
174 g_dmaCTRLPKT.RDSIZE = ACCESS_16_BIT;
175 g_dmaCTRLPKT.WRSIZE = ACCESS_16_BIT;
176 g_dmaCTRLPKT.TTYPE = FRAME_TRANSFER ;
177 g_dmaCTRLPKT.ADDMODERD = ADDR_OFFSET;
178 g_dmaCTRLPKT.ADDMODEWR = ADDR_INC1;
179 g_dmaCTRLPKT.AUTOINIT = AUTOINIT_ON;
182 #pragma CODE_STATE(gio_isr_handler, 32)
183 #pragma INTERRUPT(gio_isr_handler, IRQ)
185 void gio_isr_handler(
void){
187 int32_t offset = gioREG->OFF1 - 1U;
191 adc_convend_handler();
197 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
200 void dma_transfer_end(
void){
203 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement DMA transfer end
207 #if MCU_TYPE == MCU_TYPE_TMS320F28335
208 PieCtrlRegs.PIEACK.all = PIEACK_GROUP7;
215 #ifndef TMS570LS3137_CLK
216 #define TMS570LS3137_CLK 180000000
221 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
227 for (i=0;i<(uint32_t)(us*DELAY_1US);i++){
236 void MLC_init_F28335(
void){
238 #if MCU_TYPE == MCU_TYPE_TMS320F28335
241 GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 0x3;
244 GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 0x3;
247 GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 0x3;
249 GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 0x3;
250 GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0x3;
251 GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 0x3;
252 GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 0x3;
253 GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 0x3;
254 GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 0x3;
255 GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 0x3;
256 GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 0x3;
259 GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 0x3;
260 GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 0x3;
261 GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 0x3;
262 GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 0x3;
263 GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 0x3;
264 GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 0x3;
265 GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 0x3;
266 GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 0x3;
267 GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 0x3;
268 GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 0x3;
269 GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 0x3;
270 GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 0x3;
271 GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 0x3;
272 GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 0x3;
273 GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 0x3;
274 GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 0x3;
278 GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 0x3;
279 GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 0x3;
280 GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 0x3;
281 GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 0x3;
282 GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 0x3;
283 GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 0x3;
284 GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 0x3;
285 GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 0x3;
287 GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 0x3;
289 #if USE_256kB_RAM == 1
291 GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0x3;
299 GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0x0;
300 GpioCtrlRegs.GPBDIR.bit.GPIO32 = 0x1;
302 GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0x0;
303 GpioCtrlRegs.GPBDIR.bit.GPIO33 = 0x1;
306 GpioDataRegs.GPBSET.bit.GPIO32 = 0x1;
307 GpioDataRegs.GPBSET.bit.GPIO33 = 0x1;
310 GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0x0;
311 GpioCtrlRegs.GPADIR.bit.GPIO25 = 0x0;
314 GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 0x0;
315 GpioCtrlRegs.GPBDIR.bit.GPIO35 = 0x0;
318 GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 0x0;
319 GpioCtrlRegs.GPADIR.bit.GPIO29 = 0x0;
320 GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 0x0;
321 GpioCtrlRegs.GPADIR.bit.GPIO30 = 0x0;
322 #if USE_256kB_RAM != 1
324 GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0x0;
325 GpioCtrlRegs.GPADIR.bit.GPIO31 = 0x0;
327 GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0x0;
328 GpioCtrlRegs.GPADIR.bit.GPIO28 = 0x0;
332 GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0x1;
333 GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 0x1;
334 GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0x1;
336 GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 0x1;
337 GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 0x1;
338 GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 0x1;
339 GpioCtrlRegs.GPBCTRL.bit.QUALPRD2 = 0x0F;
342 GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 0;
343 GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 0;
344 GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 0;
363 XintfRegs.XTIMING0.bit.XSIZE = 0x3;
366 XintfRegs.XTIMING0.bit.USEREADY = 0x0;
367 XintfRegs.XTIMING0.bit.READYMODE = 0x0;
370 XintfRegs.XTIMING0.bit.XRDLEAD = 0x1;
371 XintfRegs.XTIMING0.bit.XRDACTIVE = 0x3;
372 XintfRegs.XTIMING0.bit.XRDTRAIL = 0x0;
375 XintfRegs.XTIMING0.bit.XWRLEAD = 0x1;
376 XintfRegs.XTIMING0.bit.XWRACTIVE = 0x1;
377 XintfRegs.XTIMING0.bit.XWRTRAIL = 0x2;
380 XintfRegs.XTIMING0.bit.X2TIMING = 0x1;
388 XintfRegs.XTIMING7.bit.XSIZE = 0x3;
391 XintfRegs.XTIMING7.bit.USEREADY = 0x0;
392 XintfRegs.XTIMING7.bit.READYMODE = 0x0;
395 XintfRegs.XTIMING7.bit.XRDLEAD = 0x1;
396 XintfRegs.XTIMING7.bit.XRDACTIVE = 0x1;
397 XintfRegs.XTIMING7.bit.XRDTRAIL = 0x1;
400 XintfRegs.XTIMING7.bit.XWRLEAD = 0x1;
401 XintfRegs.XTIMING7.bit.XWRACTIVE = 0x1;
402 XintfRegs.XTIMING7.bit.XWRTRAIL = 0x1;
405 XintfRegs.XTIMING7.bit.X2TIMING = 0x0;
410 XintfRegs.XINTCNF2.bit.XTIMCLK = 0x1;
414 XintfRegs.XINTCNF2.bit.CLKMODE = 0x1;
418 asm(
" RPT #7 || NOP");
420 #if FORCE_PCB_REV != 0
432 #if ALLOW_XINTF_SPEEDUP == 1
440 XintfRegs.XTIMING0.bit.XRDLEAD = 0x1;
441 XintfRegs.XTIMING0.bit.XRDACTIVE = 0x5;
442 XintfRegs.XTIMING0.bit.XRDTRAIL = 0x0;
445 XintfRegs.XTIMING0.bit.XWRLEAD = 0x1;
446 XintfRegs.XTIMING0.bit.XWRACTIVE = 0x2;
447 XintfRegs.XTIMING0.bit.XWRTRAIL = 0x3;
450 XintfRegs.XTIMING0.bit.X2TIMING = 0x0;
453 asm(
" RPT #7 || NOP");
464 GpioCtrlRegs.GPBMUX2.bit.GPIO61= 0x0;
465 GpioCtrlRegs.GPBDIR.bit.GPIO61 = 0x1;
466 GpioDataRegs.GPBSET.bit.GPIO61 = 0x1;
473 GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0x0;
474 GpioCtrlRegs.GPBDIR.bit.GPIO60 = 0x1;
475 GpioDataRegs.GPBSET.bit.GPIO60 = 0x1;
487 DmaRegs.CH1.CONTROL.bit.RUN = 0;
489 DmaRegs.CH2.CONTROL.bit.RUN = 0;
491 DmaRegs.CH3.CONTROL.bit.RUN = 0;
497 DmaRegs.CH1.CONTROL.bit.RUN = 1;
499 DmaRegs.CH1.MODE.bit.CHINTE = 1;
501 DmaRegs.CH1.MODE.bit.DATASIZE = 0;
504 DmaRegs.CH1.MODE.bit.CONTINUOUS = 1;
506 DmaRegs.CH1.MODE.bit.CHINTMODE = 1;
511 DmaRegs.CH1.MODE.bit.PERINTSEL = 3;
513 DmaRegs.CH1.BURST_SIZE.bit.BURSTSIZE = 15;
515 DmaRegs.CH1.SRC_BURST_STEP = 0;
517 DmaRegs.CH1.DST_BURST_STEP = 1;
519 DmaRegs.CH1.TRANSFER_SIZE = 0;
523 DmaRegs.CH1.DST_ADDR_SHADOW = (Uint32)AD_dma_res_1;
527 DmaRegs.CH1.CONTROL.bit.ERRCLR = 1;
528 DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1;
529 DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1;
532 DmaRegs.CH2.CONTROL.bit.RUN = 1;
534 DmaRegs.CH2.MODE.bit.CHINTE = 1;
536 DmaRegs.CH2.MODE.bit.DATASIZE = 0;
539 DmaRegs.CH2.MODE.bit.CONTINUOUS = 1;
542 DmaRegs.CH2.MODE.bit.CHINTMODE = 1;
547 DmaRegs.CH2.MODE.bit.PERINTSEL = 3;
549 DmaRegs.CH2.BURST_SIZE.bit.BURSTSIZE = 15;
551 DmaRegs.CH2.SRC_BURST_STEP = 0;
553 DmaRegs.CH2.DST_BURST_STEP = 1;
555 DmaRegs.CH2.TRANSFER_SIZE = 0;
559 DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32)AD_dma_res_2;
564 DmaRegs.CH2.CONTROL.bit.ERRCLR = 1;
565 DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1;
566 DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1;
569 DmaRegs.CH3.CONTROL.bit.RUN = 1;
571 DmaRegs.CH3.MODE.bit.CHINTE = 1;
573 DmaRegs.CH3.MODE.bit.DATASIZE = 0;
576 DmaRegs.CH3.MODE.bit.CONTINUOUS = 1;
578 DmaRegs.CH3.MODE.bit.CHINTMODE = 1;
583 DmaRegs.CH3.MODE.bit.PERINTSEL = 3;
585 DmaRegs.CH3.BURST_SIZE.bit.BURSTSIZE = 15;
587 DmaRegs.CH3.SRC_BURST_STEP = 0;
589 DmaRegs.CH3.DST_BURST_STEP = 1;
591 DmaRegs.CH3.TRANSFER_SIZE = 0;
595 DmaRegs.CH3.DST_ADDR_SHADOW = (Uint32)AD_dma_res_3;
599 DmaRegs.CH3.CONTROL.bit.ERRCLR = 1;
600 DmaRegs.CH3.CONTROL.bit.SYNCCLR = 1;
601 DmaRegs.CH3.CONTROL.bit.PERINTCLR = 1;
611 void MLC_init_F2812(
void){
612 #if MCU_TYPE == MCU_TYPE_TMS320F2812
616 GpioMuxRegs.GPDMUX.bit.T2CTRIP_SOCA_GPIOD1 = 0x0;
617 GpioMuxRegs.GPDDIR.bit.GPIOD1 = 0x1;
619 GpioMuxRegs.GPDMUX.bit.T4CTRIP_SOCB_GPIOD6 = 0x0;
620 GpioMuxRegs.GPDDIR.bit.GPIOD6 = 0x1;
623 GpioDataRegs.GPDSET.bit.GPIOD1 = 0x1;
624 GpioDataRegs.GPDSET.bit.GPIOD6 = 0x1;
627 GpioMuxRegs.GPEMUX.bit.XNMI_XINT13_GPIOE2 = 0x0;
628 GpioMuxRegs.GPEDIR.bit.GPIOE2 = 0x0;
631 GpioMuxRegs.GPFMUX.bit.MDXA_GPIOF12 = 0x0;
632 GpioMuxRegs.GPFDIR.bit.GPIOF12 = 0x0;
635 GpioMuxRegs.GPFMUX.bit.MCLKXA_GPIOF8 = 0x0;
636 GpioMuxRegs.GPFDIR.bit.GPIOF8 = 0x0;
637 GpioMuxRegs.GPFMUX.bit.MCLKRA_GPIOF9 = 0x0;
638 GpioMuxRegs.GPFDIR.bit.GPIOF9 = 0x0;
639 GpioMuxRegs.GPFMUX.bit.MFSRA_GPIOF11 = 0x0;
640 GpioMuxRegs.GPFDIR.bit.GPIOF11 = 0x0;
641 GpioMuxRegs.GPFMUX.bit.MFSXA_GPIOF10 = 0x0;
642 GpioMuxRegs.GPFDIR.bit.GPIOF10 = 0x0;
647 GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8 = 0x1;
648 GpioMuxRegs.GPAMUX.bit.CAP2Q2_GPIOA9 = 0x1;
649 GpioMuxRegs.GPAMUX.bit.CAP3QI1_GPIOA10 = 0x1;
662 XintfRegs.XTIMING1.bit.XSIZE = 0x3;
665 XintfRegs.XTIMING1.bit.USEREADY = 0x0;
666 XintfRegs.XTIMING0.bit.READYMODE = 0x0;
669 XintfRegs.XTIMING1.bit.XRDLEAD = 0x1;
670 XintfRegs.XTIMING1.bit.XRDACTIVE = 0x3;
671 XintfRegs.XTIMING1.bit.XRDTRAIL = 0x0;
674 XintfRegs.XTIMING1.bit.XWRLEAD = 0x1;
675 XintfRegs.XTIMING1.bit.XWRACTIVE = 0x2;
676 XintfRegs.XTIMING1.bit.XWRTRAIL = 0x1;
679 XintfRegs.XTIMING1.bit.X2TIMING = 0x1;
687 XintfRegs.XTIMING7.bit.XSIZE = 0x3;
690 XintfRegs.XTIMING7.bit.USEREADY = 0x0;
691 XintfRegs.XTIMING7.bit.READYMODE = 0x0;
694 XintfRegs.XTIMING7.bit.XRDLEAD = 0x1;
695 XintfRegs.XTIMING7.bit.XRDACTIVE = 0x1;
696 XintfRegs.XTIMING7.bit.XRDTRAIL = 0x1;
699 XintfRegs.XTIMING7.bit.XWRLEAD = 0x1;
700 XintfRegs.XTIMING7.bit.XWRACTIVE = 0x1;
701 XintfRegs.XTIMING7.bit.XWRTRAIL = 0x1;
704 XintfRegs.XTIMING7.bit.X2TIMING = 0x0;
709 XintfRegs.XINTCNF2.bit.XTIMCLK = 0x1;
712 XintfRegs.XINTCNF2.bit.CLKMODE = 0x1;
716 asm(
" RPT #7 || NOP");
718 #if FORCE_PCB_REV != 0
730 #if ALLOW_XINTF_SPEEDUP == 1
733 if ((mlc_pcb_rev >
PCB_REV_1) && (mlc_fw_rev > 3)){
737 XintfRegs.XTIMING1.bit.XRDLEAD = 0x1;
738 XintfRegs.XTIMING1.bit.XRDACTIVE = 0x5;
739 XintfRegs.XTIMING1.bit.XRDTRAIL = 0x0;
742 XintfRegs.XTIMING1.bit.XWRLEAD = 0x1;
743 XintfRegs.XTIMING1.bit.XWRACTIVE = 0x2;
744 XintfRegs.XTIMING1.bit.XWRTRAIL = 0x3;
747 XintfRegs.XTIMING1.bit.X2TIMING = 0x0;
750 asm(
" RPT #7 || NOP");
752 DBG_INFO_PUTS(
"Can not setup XINTF to higher speed, FW of CPLD does not allow this. Upgrade to version 4 or higher.");
760 GpioMuxRegs.GPAMUX.bit.TCLKINA_GPIOA12 = 0x0;
761 GpioMuxRegs.GPADIR.bit.GPIOA12 = 0x1;
762 GpioDataRegs.GPASET.bit.GPIOA12 = 0x1;
769 GpioMuxRegs.GPAMUX.bit.TDIRA_GPIOA11 = 0x0;
770 GpioMuxRegs.GPADIR.bit.GPIOA11 = 0x1;
771 GpioDataRegs.GPASET.bit.GPIOA11 = 0x1;
781 void MLC_init_LS3137(
void){
782 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
784 systemREG1->GPREG1 |= 0x80000000;
797 adc_convend_handler = isr_conv_end;
801 vimChannelMap(9,9, &gio_isr_handler);
811 dmaSetCtrlPacket(DMA_CH0, g_dmaCTRLPKT);
815 dmaSetCtrlPacket(DMA_CH1, g_dmaCTRLPKT);
819 dmaSetCtrlPacket(DMA_CH2, g_dmaCTRLPKT);
826 #if MCU_TYPE == MCU_TYPE_TMS320F28335
830 #if MCU_TYPE == MCU_TYPE_TMS320F2812
834 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
857 #if MCU_TYPE == MCU_TYPE_TMS320F28335
858 GpioDataRegs.GPBCLEAR.bit.GPIO60 = 0x1;
861 #if MCU_TYPE == MCU_TYPE_TMS320F2812
862 GpioDataRegs.GPACLEAR.bit.GPIOA11 = 0x1;
865 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
867 gioSetBit(gioPORTA, 1, 0);
874 #if MCU_TYPE == MCU_TYPE_TMS320F28335
875 GpioDataRegs.GPBSET.bit.GPIO60 = 0x1;
878 #if MCU_TYPE == MCU_TYPE_TMS320F2812
879 GpioDataRegs.GPASET.bit.GPIOA11 = 0x1;
882 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
884 gioSetBit(gioPORTA, 1, 1);
890 #if MCU_TYPE == MCU_TYPE_TMS320F28335 || MCU_TYPE == MCU_TYPE_TMS570LS3137
892 #if MCU_TYPE == MCU_TYPE_TMS320F28335
893 return DmaRegs.PRIORITYSTAT.bit.ACTIVESTS;
896 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement DMA transfer progress function
902 #if MCU_TYPE == MCU_TYPE_TMS320F28335
906 DmaRegs.CH1.MODE.bit.PERINTE = 1;
907 DmaRegs.CH2.MODE.bit.PERINTE = 1;
908 DmaRegs.CH3.MODE.bit.PERINTE = 1;
912 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement activation of ADC DMA
917 #if MCU_TYPE == MCU_TYPE_TMS320F28335
920 DmaRegs.CH1.MODE.bit.PERINTE = 0;
921 DmaRegs.CH2.MODE.bit.PERINTE = 0;
922 DmaRegs.CH3.MODE.bit.PERINTE = 0;
926 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement deactivation of ADC DMA
933 #if MCU_TYPE == MCU_TYPE_TMS320F28335
937 PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
943 PieCtrlRegs.PIEIER7.bit.INTx1 = 0x1;
944 PieVectTable.DINTCH1 = handler;
948 PieCtrlRegs.PIEIER7.bit.INTx2 = 0x1;
949 PieVectTable.DINTCH2 = handler;
953 PieCtrlRegs.PIEIER7.bit.INTx3 = 0x1;
954 PieVectTable.DINTCH3 = handler;
964 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
968 dmaSetChEnable(DMA_CH0, DMA_SW);
975 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
978 #if MCU_TYPE == MCU_TYPE_TMS320F28335
982 PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
988 PieCtrlRegs.PIEIER7.bit.INTx1 = 0x0;
992 PieCtrlRegs.PIEIER7.bit.INTx2 = 0x0;
996 PieCtrlRegs.PIEIER7.bit.INTx3 = 0x0;
1010 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1014 PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
1017 PieCtrlRegs.PIEIER1.bit.INTx4 = 0x1;
1019 GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 25;
1021 if (handler == NULL){
1022 PieVectTable.XINT1 = isr_conv_end;
1024 PieVectTable.XINT1 = handler;
1027 XIntruptRegs.XINT1CR.bit.POLARITY = 0;
1028 XIntruptRegs.XINT1CR.bit.ENABLE = 1;
1033 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1036 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement ADC convert ISR
1037 gioEnableNotification(gioPORTA, 5);
1044 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1047 PieCtrlRegs.PIEIER1.bit.INTx4 = 0x0;
1052 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1056 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1064 for (i=0;i<AD_LEN;i++){
1071 AD_dma_res_1[i] = 0;
1072 AD_dma_res_2[i] = 0;
1073 AD_dma_res_3[i] = 0;
1085 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1087 GpioDataRegs.GPBCLEAR.bit.GPIO32 = 0x1;
1088 GpioDataRegs.GPBCLEAR.bit.GPIO33 = 0x1;
1090 GpioDataRegs.GPBCLEAR.bit.GPIO61 = 0x1;
1093 GpioDataRegs.GPBSET.bit.GPIO32 = 0x1;
1094 GpioDataRegs.GPBSET.bit.GPIO33 = 0x1;
1096 GpioDataRegs.GPBSET.bit.GPIO61 = 0x1;
1100 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1102 GpioDataRegs.GPDCLEAR.bit.GPIOD1 = 0x1;
1103 GpioDataRegs.GPDCLEAR.bit.GPIOD6 = 0x1;
1105 GpioDataRegs.GPACLEAR.bit.GPIOA12 = 0x1;
1108 GpioDataRegs.GPDSET.bit.GPIOD1 = 0x1;
1109 GpioDataRegs.GPDSET.bit.GPIOD6 = 0x1;
1111 GpioDataRegs.GPASET.bit.GPIOA12 = 0x1;
1115 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1116 hetREG1->DCLR = (PIN_STARTCONVA | PIN_STARTCONVB | PIN_STARTCONVC);
1118 hetREG1->DSET = (PIN_STARTCONVA | PIN_STARTCONVB | PIN_STARTCONVC);
1123 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1126 GpioDataRegs.GPBCLEAR.bit.GPIO32 = 0x1;
1128 GpioDataRegs.GPBSET.bit.GPIO32 = 0x1;
1131 GpioDataRegs.GPBCLEAR.bit.GPIO33 = 0x1;
1133 GpioDataRegs.GPBSET.bit.GPIO33 = 0x1;
1137 GpioDataRegs.GPBCLEAR.bit.GPIO61 = 0x1;
1139 GpioDataRegs.GPBSET.bit.GPIO61 = 0x1;
1145 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1148 GpioDataRegs.GPDCLEAR.bit.GPIOD1 = 0x1;
1150 GpioDataRegs.GPDSET.bit.GPIOD1 = 0x1;
1153 GpioDataRegs.GPDCLEAR.bit.GPIOD6 = 0x1;
1155 GpioDataRegs.GPDSET.bit.GPIOD6 = 0x1;
1159 GpioDataRegs.GPACLEAR.bit.GPIOA12 = 0x1;
1161 GpioDataRegs.GPASET.bit.GPIOA12 = 0x1;
1167 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1170 hetREG1->DCLR = PIN_STARTCONVA;
1172 hetREG1->DSET = PIN_STARTCONVA;
1175 hetREG1->DCLR = PIN_STARTCONVB;
1177 hetREG1->DSET = PIN_STARTCONVB;
1181 hetREG1->DCLR = PIN_STARTCONVC;
1183 hetREG1->DSET = PIN_STARTCONVC;
1191 void MLC_ADC_setup(
unsigned int os_1,
unsigned int os_2,
unsigned int os_3,
unsigned int rng_1,
unsigned int rng_2,
unsigned int rng_3){
1192 unsigned int old_conf;
1193 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1195 old_conf = PieCtrlRegs.PIEIER1.bit.INTx4;
1196 PieCtrlRegs.PIEIER1.bit.INTx4 = 0x0;
1199 ad_conf = (os_1 | (os_2 << 3) | (os_3 << 6) | (rng_1 << 9) | (rng_2 << 10) | (rng_3 << 11)) | ad_soc_conf;
1204 PieCtrlRegs.PIEIER1.bit.INTx4 = old_conf;
1209 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1217 ad_conf = (os_1 | (os_2 << 3) | (os_3 << 6) | (rng_1 << 9) | (rng_2 << 10) | (rng_3 << 11)) | ad_soc_conf;
1227 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1229 ad_conf = (os_1 | (os_2 << 3) | (os_3 << 6) | (rng_1 << 9) | (rng_2 << 10) | (rng_3 << 11)) | ad_soc_conf;
1240 unsigned int timeout = 0;
1241 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1242 while (GpioDataRegs.GPADAT.bit.GPIO25 == 0x1) timeout++;
1245 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1246 while (GpioDataRegs.GPEDAT.bit.GPIOE2 == 0x1) timeout++;
1249 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1250 while (gioGetBit(gioPORTA, 5) == 0x1) timeout++;
1259 volatile int16_t*
MLC_ADC_read(
volatile int16_t* ad_res, uint16_t ad_addr){
1265 #if USE_FRSTDATA == 1
1269 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1270 while (GpioDataRegs.GPBDAT.bit.GPIO35 == 0x0){
1272 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1273 while (GpioDataRegs.GPFDAT.bit.GPIOF12 == 0x0){
1275 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1276 while (gioGetBit(gioPORTB, 7) == 0x0)
1282 #elif MCU_TYPE != MCU_TYPE_TMS570LS3137
1303 #elif MCU_TYPE != MCU_TYPE_TMS570LS3137
1325 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 && QUICK_READ == 1 && USE_FRSTDATA == 0
1329 dmaSetChEnable(DMA_CH0, DMA_SW);
1332 dmaSetChEnable(DMA_CH1, DMA_SW);
1335 dmaSetChEnable(DMA_CH2, DMA_SW);
1338 dmaSetChEnable(DMA_CH0, DMA_SW);
1339 dmaSetChEnable(DMA_CH1, DMA_SW);
1340 dmaSetChEnable(DMA_CH2, DMA_SW);
1346 while (dmaREG->SWCHENAS & (1U << DMA_CH0 | 1U << DMA_CH1 | 1U << DMA_CH2)){
1367 return AD_res_1_struct;
1371 return AD_res_2_struct;
1375 return AD_res_3_struct;
1394 return (
float)value*range/16384;
1406 unsigned char index = pos;
1423 ad_soc_conf = adsoc;
1424 ad_conf = (ad_conf & 0x0FFF) | adsoc;
1430 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1433 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;
1434 GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0;
1435 GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0;
1437 GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;
1438 GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1;
1439 GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 1;
1441 GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3;
1442 GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3;
1443 GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3;
1448 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1450 GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2 = 1;
1451 GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0 = 1;
1452 GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3 = 1;
1457 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
1459 SpiaRegs.SPIFFTX.all=0xE040;
1460 SpiaRegs.SPIFFRX.all=0x405f;
1461 SpiaRegs.SPIFFCT.all=1;
1464 SpiaRegs.SPICCR.bit.SPISWRESET =0;
1465 SpiaRegs.SPICTL.all =0x0006;
1466 SpiaRegs.SPIBRR =0x0;
1467 SpiaRegs.SPIPRI.bit.FREE = 1;
1468 SpiaRegs.SPICCR.all =0x008F;
1471 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1474 spi2_conf.CS_HOLD = 0;
1475 spi2_conf.DFSEL = 0;
1496 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
1497 SpiaRegs.SPITXBUF=cmd;
1500 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1501 spiTransmitData(spiREG2, &spi2_conf, 1, &cmd);
1508 uint16_t config = 0x8000;
1510 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
1512 SpiaRegs.SPITXBUF=0xF000;
1519 SpiaRegs.SPITXBUF=0xA000;
1522 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1524 spiTransmitData(spiREG2, &spi2_conf, 1, &config);
1527 spiTransmitData(spiREG2, &spi2_conf, 1, &config);
1532 #if DAC_USE_GAINx2 == 1
1535 #if DAC_USE_REF_BUFFER == 1
1538 #if DAC_USE_VCC_AS_REF == 1
1542 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
1543 SpiaRegs.SPITXBUF=config;
1546 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1547 spiTransmitData(spiREG2, &spi2_conf, 1, &config);
1561 for (i=0;i<count;i++){
1563 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
1567 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement better send of buffer with DMA
1572 #if MCU_TYPE == MCU_TYPE_TMS570LS3137
1573 spiTransmitData(spiREG2, &spi2_conf, count, data);
1581 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1585 GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 0x1;
1586 GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 0x1;
1590 ScicRegs.SCICCR.all = 0x0007;
1591 ScicRegs.SCICCR.bit.LOOPBKENA = 0;
1593 ScicRegs.SCICTL1.all =0x0003;
1595 #if USE_SCI_TX_FIFO == 1
1596 ScicRegs.SCIFFTX.bit.SCIFFENA = 1;
1597 ScicRegs.SCIFFTX.bit.TXFIFOXRESET = 0;
1598 ScicRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
1601 #if USE_SCI_RX_FIFO == 1
1602 ScicRegs.SCIFFTX.bit.SCIFFENA = 1;
1603 ScicRegs.SCIFFRX.bit.RXFIFORESET = 0;
1604 ScicRegs.SCIFFRX.bit.RXFIFORESET = 1;
1609 temp = ((150000000 >> 5)/baudrate)-1;
1611 ScicRegs.SCIHBAUD = (temp & 0xFF00)>>8;
1612 ScicRegs.SCILBAUD = (temp & 0x00FF);
1614 ScicRegs.SCICTL1.all =0x0023;
1616 ScicRegs.SCIPRI.bit.SOFT = 0x1;
1619 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1621 GpioMuxRegs.GPGMUX.bit.SCITXDB_GPIOG4 = 0x1;
1622 GpioMuxRegs.GPGMUX.bit.SCIRXDB_GPIOG5 = 0x1;
1625 ScibRegs.SCICCR.all = 0x0007;
1626 ScibRegs.SCICCR.bit.LOOPBKENA = 0;
1628 ScibRegs.SCICTL1.all =0x0003;
1630 #if USE_SCI_TX_FIFO == 1
1631 ScibRegs.SCIFFTX.bit.SCIFFENA = 1;
1632 ScibRegs.SCIFFTX.bit.TXFIFOXRESET = 0;
1633 ScibRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
1636 #if USE_SCI_RX_FIFO == 1
1637 ScibRegs.SCIFFTX.bit.SCIFFENA = 1;
1638 ScibRegs.SCIFFRX.bit.RXFIFORESET = 0;
1639 ScibRegs.SCIFFRX.bit.RXFIFORESET = 1;
1643 #if MCU_TYPE == MCU_TYPE_TMS320F2812 || MCU_TYPE == MCU_TYPE_TMS320F28335
1646 temp = ((150000000 >> 5)/baudrate)-1;
1648 ScibRegs.SCIHBAUD = (temp & 0xFF00)>>8;
1649 ScibRegs.SCILBAUD = (temp & 0x00FF);
1651 ScibRegs.SCICTL1.all =0x0023;
1653 ScibRegs.SCIPRI.bit.SOFT = 0x1;
1659 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1660 #if USE_SCI_RX_FIFO == 0
1661 return ScicRegs.SCIRXST.bit.RXRDY;
1663 return ScicRegs.SCIFFRX.bit.RXFFST;
1667 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1668 #if USE_SCI_RX_FIFO == 0
1669 return ScibRegs.SCIRXST.bit.RXRDY;
1671 return ScibRegs.SCIFFRX.bit.RXFIFST;
1675 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1681 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1682 return ScicRegs.SCICTL2.bit.TXEMPTY;
1685 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1686 return ScibRegs.SCICTL2.bit.TXEMPTY;
1689 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1696 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1698 #if USE_SCI_RX_FIFO == 0
1699 while (ScicRegs.SCIRXST.bit.RXRDY == 0);
1701 while (ScicRegs.SCIFFRX.bit.RXFFST == 0);
1703 return ScicRegs.SCIRXBUF.all;
1706 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1707 #if USE_SCI_RX_FIFO == 0
1708 while (ScibRegs.SCIRXST.bit.RXRDY == 0);
1710 while (ScibRegs.SCIFFRX.bit.RXFIFST == 0);
1712 return ScibRegs.SCIRXBUF.all;
1715 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1724 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1726 #if USE_SCI_TX_FIFO == 0
1727 while (ScicRegs.SCICTL2.bit.TXEMPTY == 0);
1729 while (ScicRegs.SCIFFTX.bit.TXFFST > 0xF);
1731 ScicRegs.SCITXBUF = c;
1734 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1735 #if USE_SCI_TX_FIFO == 0
1736 while (ScibRegs.SCICTL2.bit.TXEMPTY == 0);
1738 while (ScibRegs.SCIFFTX.bit.TXFFST > 0xF);
1740 ScibRegs.SCITXBUF = c;
1743 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1749 #if MCU_TYPE == MCU_TYPE_TMS320F28335
1751 while (!ScicRegs.SCICTL2.bit.TXEMPTY);
1754 #if MCU_TYPE == MCU_TYPE_TMS320F2812
1756 while (!ScibRegs.SCICTL2.bit.TXEMPTY);
1759 #if MCU_TYPE == MCU_TYPE_TMS570LS3137 //TODO: Implement it
1766 while (*str !=
'\0')
1774 pwr_out_state |= pwr ;
1780 pwr_out_state &= ~pwr;
volatile int16_t * MLC_ADC1_read(void)
float MLC_ADC_calc_volt(int16_t value, uint16_t range)
void MLC_SCI_init(uint32_t baudrate)
volatile int16_t * MLC_ADC3_read(void)
void MLC_LCD_write_to(uint16_t pos, char chr)
void MLC_ADC_setup_SOC(uint16_t adsoc)
void MLC_SCI_send_char(char c)
void MLC_ADC_start_one_conv(uint16_t channel)
volatile mlc_adc_result * MLC_ADC3_get_res_strptr(void)
volatile int16_t * MLC_ADC1_get_res_ptr(void)
#define MLC_WRITE(addr, data)
void MLC_LCD_write_str(char *pStr, uint16_t pos)
uint16_t MLC_DMA_active()
void MLC_PWR_on(uint16_t pwr)
void dmaConfigCtrlPacket(uint32 sadd, uint32 dadd, uint32 dsize)
void MLC_SCI_send_str(char *str)
void MLC_DMA_disable_isr(uint16_t channel)
void MLC_DAC_control(uint16_t cmd)
char MLC_SCI_char_avail(void)
volatile int16_t * MLC_ADC2_get_res_ptr(void)
volatile mlc_adc_result * MLC_ADC2_get_res_strptr(void)
void MLC_DBG_clear(uint16_t dbg)
void MLC_PWR_off(uint16_t pwr)
#define DBG_INFO_PUTS(str)
unsigned int MLC_ADC_wait(void)
char MLC_SCI_recv_char(void)
#define AD_SOC_ALL_DEFAULT
volatile int16_t * MLC_ADC3_get_res_ptr(void)
void MLC_DAC_write(uint16_t count)
void MLC_SCI_send_char_wait(char c)
Header file for MLC driver.
void MLC_LCD_clrscr(void)
void MLC_DMA_deactivate()
char MLC_SCI_wait_send(void)
volatile int16_t * MLC_ADC_read(volatile int16_t *ad_res, uint16_t ad_addr)
void MLC_global_disable()
void MLC_ADC_enable_isr(interrupt void *handler)
void MLC_ADC_setup(unsigned int os_1, unsigned int os_2, unsigned int os_3, unsigned int rng_1, unsigned int rng_2, unsigned int rng_3)
void MLC_ADC_start_conv(void)
void MLC_ADC_disable_isr(void)
void MLC_DMA_enable_isr(uint16_t channel, interrupt void *handler)
void MLC_DBG_set(uint16_t dbg)
volatile int16_t * MLC_ADC2_read(void)
mlc_info_t * pMLC_info_struct
volatile mlc_adc_result * MLC_ADC1_get_res_strptr(void)