You are on page 1of 12

HNG DN CONFIG HARDWARE CHO B TH VIN TCP/IP STACK DNG CCS V MPLAB.

2. MPLAB: _ phn trc mnh gii thiu cc bn cch config HW cho b th vin TCP/IP do CCS chnh sa li cho trnh bin dch ca mnh. phn ny mnh xin hng dn cc bn cch config HW cho b th vin TCP/IP gc ca Microchip v trnh bin dch mnh s dng l MPLAB C30 cho dng PIC24 v cng tng t cho PIC18 vi trnh dch MPLAB C18. +Bc 1: Khng nh b CCS TCP/IP, b th vin TCP/IP Stack ca Microchip cung cp y cc dng VXL do bn cn phi bit mnh cn c g trc khi thc hin 1 ng dng vi b Microchip TCP/IP Stack. Theo file help ca Microchip th nhng file bn cn cho 1 project l : . HardwareProfile.h : File ny gm cc thng s cu hnh phn cng . TCPIPConfig.h : File ny gm cc thng s cho ng dng ca bn nh a ch IP, MAC, cc giao thc s dng trong project. File ny c th to bng phn mm TCP/IP Config Wizard do Microchip cung cp . . Cc file dng cho cc giao thc ca bn. + Bc 2: Khi nm c th bn c th bt u bc vo vic cu hnh. u tin cc bn to 1 th mc test trong ci th vin Microchip. Sau chng ta s bt u vi file TCPIPConfig.h trc cc bn to 1 file trng vi tn nh vy v lu vo th mc test. Sau bt phn mm TCP/IP Config Wizard ln ( nm trong th mc Utilities ca TCP/IP Stack).

Cc bn chn nh hnh v file lu cu hnh ny l file TCPIPENC28 trong th mc Config ca example Demo App. Cc bn c nguyn vy sau khi to xong chng ta s copy ni dung ny n file TCPIPConfig.h trong th mc test ca chng ta.

Tip theo cc bn chn Next th chng trnh yu cu bn chn giao thc trong ng dng ca bn. y mnh chn giao thc TCP.

Tip chng trnh yu cu bn c chn cc example trong project ca mnh khng, nu mun thm example no th cc bn check vo example .

Tip theo l cc module support cho ng dng ca bn nh DHCP (T cp IP cho board), DNS( Phn gii tn min).. Cc bn c th la chn sau cho ph hp vi ng dng ca mnh. K tip l a ch IP v a ch MAC ca board.

V cui cng l b nh m cho cc giao thc. Vy l xong cc bn cu hnh c cc thng s yu cu cho cc ng dng ca mnh sau cc bn copy n vo file TCPIPConfig.h th mc test. + Bc 3 : Tip theo l file config hardware ca board . Cc bn copy file HardwareProfile.h trong th mc Demo App vo th mc test ca mnh. Bt file ny ln cc bn s thy nu cc bn s dng board ca Mirochip cung cp th s chnh MPLAB theo cc thng s n yu cu, cn khng th to file HWP YOUR_BOARD.h v nh ngha board ca mnh vo . Cc bn to 1 th mc Configs trong th mc test v trong cc bn to 1 file HWP YOUR_BOARD.h. Bt file ny ln v chng ta bt u tham kho cc v d trong th mc App Demo/Configs cu hnh cho board ca mnh. y mnh s cu hnh cho PIC24FJ128GA010 ( v n c trong example ca Protues d cho chng ta trong vic test code ). y mnh tham kho file HWP EX16_ENC28 C30, nu l PIC18 cc bn c th tham kho file HWP PIC18EX_ENC28.h .

#ifndef HARDWARE_PROFILE_H #define HARDWARE_PROFILE_H #include "Compiler.h" #define EXPLORER_16 #if defined(THIS_IS_STACK_APPLICATION) _CONFIG2(FNOSC_PRIPLL & POSCMOD_XT) //Config _CONFIG1(JTAGEN_OFF & FWDTEN_OFF) #endif #define MAXIMUM_PIC_FREQ (32000000ul) // Tan so thach anh #define GetSystemClock() (MAXIMUM_PIC_FREQ) // Hz #define GetInstructionClock() (GetSystemClock()/2) #define GetPeripheralClock() (GetSystemClock()/2) #define ENC_CS_TRIS (TRISDbits.TRISD14) #define ENC_CS_IO (LATDbits.LATD14) // Cc chn SPI SCK, SDI, SDO s c nh ngha trong hm InitializeBoard() ca file main.c hoc mc nh s l module SPI 1 tr 1 s loi . #define ENC_SPI_IF (IFS0bits.SPI1IF) #define ENC_SSPBUF (SPI1BUF) #define ENC_SPISTAT (SPI1STAT) #define ENC_SPISTATbits (SPI1STATbits) #define ENC_SPICON1 (SPI1CON1) #define ENC_SPICON1bits (SPI1CON1bits) #define ENC_SPICON2 (SPI1CON2) #define LCD_DATA_TRIS (*((volatile unsigned char*)&TRISE)) #define LCD_DATA_IO (*((volatile unsigned char*)&LATE)) #define LCD_RD_WR_TRIS (TRISDbits.TRISD5) #define LCD_RD_WR_IO (LATDbits.LATD5) #define LCD_RS_TRIS (TRISBbits.TRISB15) #define LCD_RS_IO (LATBbits.LATB15) #define LCD_E_TRIS (TRISDbits.TRISD4) #define LCD_E_IO (LATDbits.LATD4) #define UBRG U2BRG #define UMODE U2MODE #define USTA U2STA #define BusyUART() BusyUART2() #define CloseUART() CloseUART2()

#define ConfigIntUART(a) ConfigIntUART2(a) #define DataRdyUART() DataRdyUART2() #define OpenUART(a,b,c) OpenUART2(a,b,c) #define ReadUART() ReadUART2() #define WriteUART(a) WriteUART2(a) #define getsUART(a,b,c) getsUART2(a,b,c) #define putsUART(a) putsUART2((unsigned int*)a) #define getcUART() getcUART2() #define putcUART(a) do{while(BusyUART()); WriteUART(a); while(BusyUART()); }while(0) #define putrsUART(a) putrsUART2(a) #endif // #ifndef HARDWARE_PROFILE_H +Bc 4: Vy l xong vic nh ngha gi chng ta bt u to project tn test trong th mc test.Sau khi to xong cc bn nhn phi vo project va to v chn build option , chn mplab c30, click vo mc add trong preprocessor macro v nh vo YOUR_BOARD nh hnh mc ch chng trnh bit bn chn file cu hnh phn cng no.

Tip cc bn chn th Directories v chn Include Search Path trong show directories for . Cc bn chn New v nh ng dn l . , sau tip tc chn New v tr ti th mc ng dn ci t th vin Microchip\Microchip\Include

Sau cc bn to cu trc th mc cho project nh hnh.

_ V bt u vic add cc file th vin vo : + Source file : Trong th mc TCPIP Stack ca phn Source file cc bn add cc file trong mc Microchip/TCPIPStack vo v b bt 1 s file giao thc khng cn thit cho ng dng ca mnh. Lu nn b bt v 1 s file s gy li khi bin dch. + Header file : Trong th mc TCPIP Stack ca phn Header file cc bn add cc file header trong mc Microchip/Include/TCPIPStack vo v cng b bt 1 s file khng cn thit. Cc bn add tip vo file TCPIPConfig.h v HardwareProfile.h m chng ta va to ban ny.Trong phn Header file cc bn add vo file HWP YOUR_BOARD.h. + Library : Cc bn add vo 2 file nm trong th mc Microchip/TCP IP Stack. _ Sau khi add ng nh yu cu cc bn c cu trc th mc nh sau:

+ Bc 5: Cc bn to 1 file test.c trong th mc Source file v y l file chng trnh chng ta cn vit. Do TCPIP Stack l 1 b th vin ln v

vy lm vic vi n chng ta cn thc hin hm main theo cc trnh t m Microchip ra khi to board v cc giao thc. u tin chng ta gi hm khi to cc phn cng trn board thit lp giao tip SPI vi ENC28J60 v 1 s IO khc nu c. Tip l hm TickInit(), InitAppConfig() config cc thng s cho ng dng Ethernet ca chng ta, v cui cng l hm StackInit() khi to TCPIP Stack. Trong chng trnh lp chng ta s chy 2 hm StackTask v StackApplication(), chc nng 2 hm ny dng bt cc gi tin v load cc module ca cc giao thc .V y l code ca mnh sau khi tham kho file MainDemo.c. ng dng ny s t nhn IP t router ca bn v hin th a ch IP m router cp cho board ln LCD. #define THIS_IS_STACK_APPLICATION #include "TCPIP Stack/TCPIP.h" APP_CONFIG AppConfig; static unsigned short wOriginalAppConfigChecksum; // Checksum of the ROM defaults for AppConfig BYTE AN0String[8]; static void InitAppConfig(void); static void InitializeBoard(void); static void ProcessIO(void); void _ISR __attribute__((__no_auto_psv__)) _AddressError(void) { Nop(); Nop(); } void _ISR __attribute__((__no_auto_psv__)) _StackError(void) { Nop(); Nop(); } int main() { BYTE IPDigit[4]; static DWORD dwLastIP = 0; BYTE i; BYTE j; BYTE LCDPos=16; InitializeBoard(); LCDInit();

DelayMs(100); strcpypgm2ram((char*)LCDText, "TCPStack " TCPIP_STACK_VERSION " " " "); LCDUpdate(); TickInit(); InitAppConfig(); StackInit(); while(1) { StackTask(); StackApplications(); if(dwLastIP != AppConfig.MyIPAddr.Val) { dwLastIP = AppConfig.MyIPAddr.Val; for(i = 0; i < sizeof(IP_ADDR); i++) { uitoa((WORD)AppConfig.MyIPAddr.v[i], IPDigit); for(j = 0; j < strlen((char*)IPDigit); j++) { LCDText[LCDPos++] = IPDigit[j]; } if(i == sizeof(IP_ADDR)-1) break; LCDText[LCDPos++] = '.'; } if(LCDPos < 32u) LCDText[LCDPos] = 0; LCDUpdate(); LCDPos=16; } } } static void InitializeBoard(void) { CLKDIVbits.RCDIV = 0; ENC_CS_IO = 1; ENC_CS_TRIS = 0; }

static ROM BYTE SerializedMACAddress[6] = {MY_DEFAULT_MAC_BYTE1, MY_DEFAULT_MAC_BYTE2, MY_DEFAULT_MAC_BYTE3, MY_DEFAULT_MAC_BYTE4, MY_DEFAULT_MAC_BYTE5, MY_DEFAULT_MAC_BYTE6}; static void InitAppConfig(void) { memset((void*)&AppConfig, 0x00, sizeof(AppConfig)); AppConfig.Flags.bIsDHCPEnabled = TRUE; AppConfig.Flags.bInConfigMode = TRUE; memcpypgm2ram((void*)&AppConfig.MyMACAddr, (ROM void*)SerializedMACAddress, sizeof(AppConfig.MyMACAddr)); AppConfig.MyIPAddr.Val = MY_DEFAULT_IP_ADDR_BYTE1 | MY_DEFAULT_IP_ADDR_BYTE2<<8ul | MY_DEFAULT_IP_ADDR_BYTE3<<16ul | MY_DEFAULT_IP_ADDR_BYTE4<<24ul; AppConfig.DefaultIPAddr.Val = AppConfig.MyIPAddr.Val; AppConfig.MyMask.Val = MY_DEFAULT_MASK_BYTE1 | MY_DEFAULT_MASK_BYTE2<<8ul | MY_DEFAULT_MASK_BYTE3<<16ul | MY_DEFAULT_MASK_BYTE4<<24ul; AppConfig.DefaultMask.Val = AppConfig.MyMask.Val; AppConfig.MyGateway.Val = MY_DEFAULT_GATE_BYTE1 | MY_DEFAULT_GATE_BYTE2<<8ul | MY_DEFAULT_GATE_BYTE3<<16ul | MY_DEFAULT_GATE_BYTE4<<24ul; AppConfig.PrimaryDNSServer.Val = MY_DEFAULT_PRIMARY_DNS_BYTE1 | MY_DEFAULT_PRIMARY_DNS_BYTE2<<8ul | MY_DEFAULT_PRIMARY_DNS_BYTE3<<16ul | MY_DEFAULT_PRIMARY_DNS_BYTE4<<24ul; AppConfig.SecondaryDNSServer.Val = MY_DEFAULT_SECONDARY_DNS_BYTE1 | MY_DEFAULT_SECONDARY_DNS_BYTE2<<8ul | MY_DEFAULT_SECONDARY_DNS_BYTE3<<16ul | MY_DEFAULT_SECONDARY_DNS_BYTE4<<24ul; memcpypgm2ram(AppConfig.NetBIOSName, (ROM void*)MY_DEFAULT_HOST_NAME, 16); FormatNetBIOSName(AppConfig.NetBIOSName);

} _ T y cc bn c th trin khai cc ng dng c th vi th vin TCP/IP Stack ca Microchip thng qua cc code mu. i vi PIC18,16 cc bn cng config tng t nh PIC24 v trong cc hm khi to trong chng trnh chnh cc bn copy phn code c nh ngha #if(__18CXX) u .

You might also like