PIC32MZ-serial.h
1 void _mon_putc(char c);
2 
3 #define BAUD_GEN(sysclk, baud) ((sysclk / (16 * baud)) - 1)
4 
5 #ifdef MICROCHIP_PIC32
6 #if defined (__32MZ2048ECH144__) || defined(__32MZ2048ECM144__) || defined(__32MZ2048EFM144__)
7  /* Code generated from Harmony example then exported using Window -> PIC32 Memory View -> Configuration Bits into system_config.h */
8  #define SYS_CLK_FREQ 200000000ul
9  #define SYS_CLK_BUS_PERIPHERAL_2 100000000ul
10 
11  /* PIC32MZ2048EFM144 Configuration Bit Settings */
12 
13  /*** DEVCFG0 ***/
14  #pragma config DEBUG = OFF
15  #pragma config JTAGEN = OFF
16  #pragma config ICESEL = ICS_PGx2
17  #pragma config TRCEN = OFF
18  #pragma config BOOTISA = MIPS32
19  #pragma config FECCCON = OFF_UNLOCKED
20  #pragma config FSLEEP = OFF
21  #pragma config DBGPER = PG_ALL
22  #pragma config SMCLR = MCLR_NORM
23  #pragma config SOSCGAIN = GAIN_2X
24  #pragma config SOSCBOOST = ON
25  #pragma config POSCGAIN = GAIN_2X
26  #pragma config POSCBOOST = ON
27  #pragma config EJTAGBEN = NORMAL
28  #pragma config CP = OFF
29 
30  /*** DEVCFG1 ***/
31  #pragma config FNOSC = SPLL
32  #pragma config DMTINTV = WIN_127_128
33  #pragma config FSOSCEN = OFF
34  #pragma config IESO = OFF
35  #pragma config POSCMOD = EC
36  #pragma config OSCIOFNC = OFF
37  #pragma config FCKSM = CSECME
38  #pragma config WDTPS = PS1048576
39  #pragma config WDTSPGM = STOP
40  #pragma config FWDTEN = OFF
41  #pragma config WINDIS = NORMAL
42  #pragma config FWDTWINSZ = WINSZ_25
43  #pragma config DMTCNT = DMT31
44  #pragma config FDMTEN = OFF
45 
46  /*** DEVCFG2 ***/
47  #pragma config FPLLIDIV = DIV_3
48  #pragma config FPLLRNG = RANGE_5_10_MHZ
49  #pragma config FPLLICLK = PLL_POSC
50  #pragma config FPLLMULT = MUL_50
51  #pragma config FPLLODIV = DIV_2
52  #pragma config UPLLFSEL = FREQ_24MHZ
53 
54  /*** DEVCFG3 ***/
55  #pragma config USERID = 0xffff
56  #pragma config FMIIEN = ON
57  #pragma config FETHIO = ON
58  #pragma config PGL1WAY = ON
59  #pragma config PMDL1WAY = ON
60  #pragma config IOL1WAY = ON
61  #pragma config FUSBIDIO = ON
62 
63  /*** BF1SEQ0 ***/
64  #pragma config TSEQ = 0x0000
65  #pragma config CSEQ = 0xffff
66 
67  /* #pragma config statements should precede project file includes. */
68  /* Use project enums instead of #define for ON and OFF. */
69 
70  #include <xc.h>
71 #endif
72 #endif
73 
74 static void init_serial(unsigned int sysClk) {
75 #ifdef MICROCHIP_PIC32
76 #if defined (__32MZ2048ECH144__) || defined(__32MZ2048ECM144__) || defined(__32MZ2048EFM144__)
77  /* This is for pin B14 which is connected to the USB to UART connector J11 located under Ethernet connector */
78 
79  /* Setup UART2 */
80 #ifdef SYS_CLK_BUS_PERIPHERAL_2
81  U2BRG = BAUD_GEN(SYS_CLK_BUS_PERIPHERAL_2, 115200);
82 #else
83  if (sysClk > 100000000)
84  sysClk /= 2;
85  U2BRG = BAUD_GEN(sysClk, 115200);
86 #endif
87  ANSELBCLR = 0x4000;
88  ANSELGCLR = 0x0040;
89  RPB14R = 0x02;
90  U2RXR = 0x01;
91  U2MODE = 0x8000;
92  U2STA = 0x400;
93 #endif
94 #endif
95  (void)sysClk;
96 }