基于LPC900单片机的射频数传模块开发
LPC900系列单片机I2C总线一主多从通信实例
LPC900 I2C1.ὖ䗄I2C 㒓 PHILIPS ⱘˈϔ⾡⫼Ѣ 䚼IC ⱘ ϸ㒓І㸠 㒓 䆂DŽ I2C 㒓Ёҙ䳔㽕SDA˄І㸠 㒓˅ SCL˄І㸠 䩳㒓˅ ҹ ⦄ Ͼ ӊП䯈ЏҢ ⱘ䗮 DŽ I2C 㒓Ϟ㽕 ⦄ 㛑ⱘ 䴲 ˈ 䳔㽕 㒓ϞĀ ϞāⳌ 㛑ⱘI2C 㢃⠛ 㸠њˈ 7ԡ Ё 䖒128ϾDŽI2Cⱘ䗮 䗳⥛гҸҎ⒵ ˈ ⱘI2C䗮 䖒100Kbit/sˈ 䗳 䖒400 Kbit/sˈ ⱘ催䗳 䖒 њ3.4Mbit/sDŽPHILIPS Ҫ կњ⾡㉏䴲 Є ⱘI2C 㢃⠛ˈ䖭ḋ њI2Cⱘ ⫼㣗 DŽ䖭ѯ ⫼㢃⠛ PCF8563˄ 䩳˅ǃPCF8576˄LCD偅 ˅ǃLM75˄⏽ Ӵ ˅ǃCAT24WC02˄E2PROM˅ㄝㄝDŽℸ ˈ䖬 ӫ ⱘMCUг I2C䗮 ッ ˈ PHILIPS ⱘLPC900 FLASH㋏ ⠛ ⱘ 䚼 њI2C䗮 ッ DŽ ҹLPC900 ⠛ Ў՟ˈⓨ⼎ I2C 㒓Ёⱘ䗮 ⫼DŽ16㛮ҹϞⱘLPC900㋏ ⠛ Ёϔ㠀䛑 I2C䗮 ッ ˈ P89LPC916 ~P89LPC936ㄝDŽℸI2C䗮 ッ ⬅⹀ӊ⬉䏃 կⱘˈ 㗠䗮 䴴ˈ㗠Ϩ 㓪 г䴲 ㅔ DŽℸ ϔ㠀 I2C䗮 ッ ⱘ ⠛ 㛑ЎЏ Փ⫼ˈ㗠LPC900㋏ ⠛ ϡҙ ҹЎЏ ӊˈг ҹЎҢ ӊDŽ ՟Ё ⓨ⼎њLPC900ЎЏ Ң ӊⱘ ⫼DŽ2. 偠⬉䏃՟Ё䗝⫼њϝ⠛P89LPC932 ⠛ ⓨ⼎I2Cⱘ䗮 䖛DŽ Ё1⠛ЎЏ ˈ2⠛ЎҢ DŽ ⹀ӊ⬉䏃 1 ⼎DŽ1 P89LPC932 I2CϔЏ Ң䗮 ⬉䏃ЎњՓ⬉䏃⏙ њˈ⬉䏃 Ёⳕ⬹њP89LPC932Ё≵ ⫼ ⱘ 㛮DŽP89LPC932ЁI/O P1.3 P1.2Ў ⫼ッ ˈ ⫼I2C䗮 ˈP1.3ЎSDAˈP1.2ЎSCLˈ Ё 䆹䆒㕂Ў ⓣ DŽP89LPC932ⱘ䆺㒚䌘 䇋 㗗ljP89LPC932 FLASH ⠛ Փ⫼ NJDŽ⬉䏃ЁR7ˈR8ЎI2C 㒓ⱘϞ ⬉䰏ˈ ԧ⬉䏃Ё 䗖 䇗 DŽ䗝 Ϟ ⬉䰏㽕㗗㰥ⱘ ㋴Џ㽕Ўկ⬉⬉⑤ǃ 㒓Ϟⱘ⬉ 䖲 ӊ DŽ ljI2C 㒓 䆂NJЁ㾘 ˈ կ⬉⬉ Ѣ2Vˈ☠⬉⌕Ў3mA ˈ䕧 Ԣ⬉ ϡ催Ѣ0.4VDŽ ⬉䏃Ёկ⬉⬉ Ў3V±10%ˈ 㗠Ϟ ⬉䰏ⱘ Ў(3.3-0.4)/0.003=967ӨDŽϞ ⬉䰏ⱘ ϡ㛑䖛 ˈ ЎϞ ⬉䰏RϢ 㒓Ϟⱘ⬉ C ⱘRC⬉䏃ⱘ 䯈 ˈ њ 㒓Ң催⬉ Ԣ⬉ ⱘ䖛⏵ 䯈ˈ 㗠 њ䗮 䗳⥛DŽ 䗳 ЁSDAˈSCL ⱘҢԢ 催ⱘ䖛⏵ 䯈 䆹ϡ Ѣ300nSˈP89LPC932ッ 䕧 ⬉ Ў15pˈ 㗠Ϟ ⬉䰏ⱘ Ў300nS/˄0.7*15p*3˅=9.52KӨDŽ ⬉䏃ЁR7ˈR8 Ў5KӨDŽ⬅ѢP89LPC932 ⠛ Ё 䚼RC 㤵⑤ 䚼Ϟ⬉ ԡˈ ⬉䏃Ёⳕ⬹њϔ㠀51 ⠛ 䳔㽕ⱘ ԡ⬉䏃ˈ 㗠⬉䏃↨䕗ㅔ DŽ3. 㓪3ˊ1䆒䅵Ⳃ ⌕՟㽕䖒 ⱘ ϟ ˖z Џ 䗕10 㡖 Ң 1ˈ 䗕 ↩ LED00DŽz Ң 1 ⱘ 㑺 ⱘ 㸼↨䕗ˈℷ⹂ LED10DŽz Џ 䇋∖Ң 1 䗕 DŽz Ң 䇋∖ˈ 䗕10 㡖 Џ ˈ 䗕 ↩ LED11DŽz Џ ⱘ Ϣ㑺 ⱘ 㸼↨䕗ˈℷ⹂ LED01DŽz Џ 䗕10 㡖 Ң 2ˈ 䗕 ↩ LED00DŽz Ң 2 ⱘ 㑺 ⱘ 㸼↨䕗ˈℷ⹂ LED20DŽz Џ 䇋∖Ң 2 䗕 DŽz Ң 䇋∖ˈ 䗕10 㡖 Џ ˈ 䗕 ↩ LED21DŽz Џ ⱘ Ϣ㑺 ⱘ 㸼↨䕗ˈℷ⹂ LED01DŽ ⦃䖤㸠ˈ 䖤㸠ℷ⹂ˈ ҹⳟ LED ⱘ䮾 DŽҢ㗠 ҹ䗮䖛LEDⱘ䮾 ℷ⹂䖤㸠DŽҢ Ё ⌕Ң Џ ⌕ ⌕ 2ǃ 3 4 ⼎DŽ 2Ё㒭 њҢ 1ⱘЁ ⱘ⌕ DŽ 3㒭 њҢ 1ⱘЏ ⌕ DŽ 4㒭 њЏ ⱘ ⌕ DŽҢ 1 Ң 2ⱘ⌕ Ⳍ ˈ ℸҙ㒭 Ң 1ⱘ ⌕ DŽЏ Ң 1 Ң 2ⱘ Ⳍ㉏Ԑˈ 㗠 ⌕ ЁҙҹĀ Ң 2䖯㸠 ā㸼⼎DŽ3ˊ2㓪㽕⚍P89LPC932 䗮䖛 ⱘ 䖒 I2C 㒓䖯㸠 ⱘⳂⱘDŽ Ё⍝ ⱘ 6Ͼˈ ЎI2CON˄I2C ˅ǃI2DAT˄ ˅ǃI2STAT˄⢊ ˅ǃI2ADR˄ ˅ǃI2SCLH˄ ぎ↨ 催 㡖˅ǃI2SCLL˄SCL ぎ↨ Ԣ 㡖˅DŽ䖭䞠㒭 I2CON ⱘ 㛑 䗄ˈ 㸼1 ⼎DŽI2C䗮 ⱘ 4⾡˖z Џ 䗕 z Џ z Ң z Ң 䗕 ↣ⱘ䗮 䛑 ⬅Џ 䍋ⱘDŽ ԧЎЏ 䗕䍋 ӊˈ✊ 䗕㽕 ⱘҢ 䇏 ҸDŽ Ң ㄨ ˈ䖯㸠Ⳍ DŽ Џ 䗕 ˈ ⬅Џ 䗕 Ң ˈҢ ↣ ϔ 㡖 䗕 ㄨ Ⳍ Џ DŽ Џ ˈ ⬅Ң 䗕 Џ ⱘˈЏ ↣ ϔϾ 㡖 䗕 ㄨ Ⳍ Ң DŽ Џ ЎЏ 䗕 ˈҢ ЎҢ DŽ Џ ЎЏ ˈҢ ЎҢ 䗕 DŽ䗮 ↩ˈЏ 䗕 ℶ ˈ㒧 DŽI2Cⱘ䗮 Ḑ 㒇 4 ⼎DŽ㸼 , &76543210-I2EN STA STO SI AA-CRSEL z I2EN˖I2C Փ㛑ԡz STA˖䍋 ԡz STO˖ ℶ ԡz SI˖I2CЁ ԡz AA˖ ㄨ ԡz CRSEL˖SCL 䩳䗝 ԡAA/A5 I2C䗮 Ḑҹϟ 㒇 I2C䗮 䆒䅵㽕⚍DŽI2C䗮 ⱘℹ偸Ў˖a) ッ ˈSDA SCL 乏Ў ⓣ DŽb) I2SCLH I2SCLLˈ 䆒㕂ϡҙ⍝ ぎ↨ˈг⍝ 㒓ⱘ䗮䗳⥛ˈ䅵ㅫ Ўf PCLK/˄2 *˄I2SCLH+I2SCLL˅˅DŽc) I2CONЎ0x44ˈ Փ㛑I2C 㒓ǃ 䆌 ㄨǃՓ㛑 䚼SCL ⫳ DŽЏҹϡ䆒㕂 ㄨԡˈԚҢ 乏䆒㕂 ㄨԡDŽd)Ң Ё䖬㽕䆒㕂Ⳍ ⱘҢ ˈ ⊩ Ң I2ADRЁDŽⱘ Ԣԡ 䗮⫼䇗⫼ԡDŽ㕂ԡ ˈ 䗮⫼ 䖯㸠䆚 DŽe) I2CҹЁ 䗮 ˈ 㽕㕂ԡEI2C EADŽ 偠ЁҢ ҹЁ 䖯㸠䗮 ⱘDŽI2C䗮 䆒䅵㽕⚍˖a)↣䗮 ⱘ䍋 ӊ ℶ ӊ ⬅Џ 䍋ˈҢ 䋳䋷ⲥ Џ DŽ䍋ӊ ℶ ӊ 䗮䖛㕂ԡI2CONЁⱘSTA STOԡ䖒 ⱘDŽb) Џ 㦋 㒓ˈ 䗕 ӊ ˈ ⱘ 䗕 䗮䖛I2DAT䖒 ⱘDŽc)↣ 䗕 䆹 䆶⢊ I2STATẔ 䗕⢊ ҹ䖯㸠ϟϔℹ DŽd)↣䗮 ↩ Џ Ң 䆹䞞 㒓DŽ4.⑤ ⏙ ⏙ 4.1 Џ ˄C51⠜˅/*********************************************************** ӊ ˖I2CMaster.c*⠜ : ゟ ⠛ ⷨお* 㛑:LPC900I2C 㒓ⓨ⼎ ˄Џ ˅* :2004/12/28**********************************************************/#include"reg932.h"#include"hi2c_c51.h"// I2CЏ 䕃ӊ ӊ#define uchar unsigned char#define SLA VE10x60// НҢ 1#define SLA VE20x50// НҢ 2// Н 㸼ˈЏҢ Ⳍ ˈ 䗕 㸼 䗕ˈ 㸼 ⱘℷ⹂uchar code DataTab[10]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10};sbit LED=P0^2;sbit LED1=P0^3;void Delay(int);void event_loop(void);void main(){uchar buff[10];// Н 㓧uchar i,err;P1M1=0x0C;// НSDA˄P13˅ SCL˄P12˅Ў ⓣ P1M2=0x0C;P0M1=0x00;// НLED偅 ЎP0M2=0x0C;LED=1;// 䮾ϔϟLEDDelay(1000);LED=0;while(1){event_loop();// џӊ ⦃}}/******************************************************************** ⿄˖event_loop* 㛑˖џӊ ⦃*******************************************************************/void event_loop(void){uchar i,err;Delay(1000);ISendStrExt(SLA VE1,DataTab,10);// Ң 1 䍋 LED=~LED;Delay(1000);if(IRcvStrExt(SLA VE1,buff,10))// Ң 1 䍋䇏 {err=0;for(i=0;i<10;i++) // ⱘ ヺ 㸼if(buff[i]!=DataTab[i]) {err=1;}if(!err) {LED1=~LED1;}//ℷ⹂ LED1㸼⼎for(i=0;i<10;i++) //⏙ぎ{buff[i]=0;}Delay(1000);}ISendStrExt(SLA VE2,DataTab,10);// Ң 2 䍋 LED=~LED;Delay(1000);if(IRcvStrExt(SLA VE2,buff,10))// Ң 2 䍋䇏 {err=0;for(i=0;i<10;i++) // ⱘ ヺ 㸼 {if(buff[i]!=DataTab[i]) {err=1;}}if(!err) {LED1=~LED1;}//ℷ⹂ LED1㸼⼎for(i=0;i<10;i++) //⏙ぎ{buff[i]=0;}}}/******************************************************************** ⿄˖Delay* 㛑˖* ˖i*******************************************************************/void Delay(int i){int j;while(i>0){for(j=0;j<=1000;j++);i--;}} ⏙ 4.2 Ң ˄C51⠜˅/*********************************************************** ӊ ˖I2CSlave.c*⠜ : ゟ ⠛ ⷨお* 㛑:LPC900I2C 㒓ⓨ⼎ ˄Ң ˅* :2004/12/28**********************************************************/#include "reg932.h"#include"hi2csla_c51.h"// I2C䕃ӊ Ң ӊ#define uchar unsigned char#define SLA VE_ADDR0x50//Ң ˈ2ϾҢ 䆹ϡ sbit LED=P0^2;sbit LED1=P0^3;void Delay(uchar);// Н 㸼ˈЏҢ Ⳍ ˈҹ ℷ⹂uchar code DataTab[10]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10}; bit ReadFlag=0; // Н䇏bit SendFlag=0; // Н 䗕uchar buff[10],index;// Н 㓧 ㋶/******************************************************************** ⿄˖I2c_Int* 㛑˖I2CЁ*******************************************************************/ void I2c_Int(void) interrupt 6 //I2CЁ ⧚{switch(I2STAT){case RDSLA://Џ 䍋䇏 index=0;while(1){// 䗕 ˈ Џif( SendByte(DataTab[index])==0)break;index++;if(index>=10)break;}SendFlag=1; //㕂 䗕 ˈ㸼⼎ 䗕 ↩break;case WRSLA://Џ 䍋 index=0;while(1)// Џ 䗕ⱘ{if( RcvByte(buff+index)==0 ) break;index++;if(index>=10)break;}ReadFlag=1;//㕂䇏 ˈ㸼⼎break;default:break;}I2CON =0x44;//䞞 㒓}void main()uchar i,err;P1M1=0x0C;// НSDA˄P13˅ SCL˄P12˅Ў ⓣ P1M2=0x0C;P0M1=0x00;// НLED偅 ЎP0M2=0x0C;;EI2C=1;// 䆌I2CЁEA=1;SetBus(SLA VE_ADDR);//䆒ЎҢindex=0;LED=1;// 䮾ϔϟLEDDelay(255);LED=0;while(1){if(SendFlag)// 䗕 LED1㸼⼎{LED1=~LED1;SendFlag=0;}err=0;if(ReadFlag)// 㸠{for(i=0;i<10;i++)// ⱘ ヺ 㸼{if(buff[i]!=DataTab[i])err=1;}if(!err) LED=~LED;//ℷ⹂ LED㸼⼎for(i=0;i<10;i++)//⏙ぎ{buff[i]=0;}ReadFlag=0;}}}/******************************************************************** ⿄˖delay* 㛑˖* ˖i*******************************************************************/void Delay(uchar i)int j;while(i>0){for(j=0;j<=669;j++);i--;}} ⏙ 4.3 Џ ˄ASM⠜˅;**********************************************************; ӊ ˖I2CMaster.asm;⠜ : ゟ ⠛ ⷨお; 㛑:LPC900I2C 㒓ⓨ⼎ ˄Џ ˅; :2004/12/28;**********************************************************; НP89LPC932ⱘI2CⳌ ⱘ НI2ADR DATA0DBHI2DAT DATA0DAHI2CON DATA0D8HI2STAT DATA0D9HI2SCLH DATA0DDHI2SCLL DATA0DCHSTA BIT I2CON.5SI BIT I2CON.3; НP89LPC932ⱘ䚼 ⡍⅞P0M1 DATA84HP0M2 DATA85HP1M1 DATA91HP1M2DATA92H;Ў䕃ӊ Н 䞣ACK BIT10H ; ㄨ ԡSLA DATA50H; ӊҢSUBA DATA51H; ӊNUMBYTE DATA52H;䇏ˋ ⱘ 㡖;Փ⫼ Н 䞣˖SDA EQU P1.3SCL EQU P1.2MTD EQU30H; 䗕 㓧 佪 (㓧 30Hˉ3FH) MRD EQU40H; 㓧 佪 (㓧 40ˉ4FH) LED BIT P0.2LED1BIT P0.3; Н ӊSLA VE1EQU60HSLA VE2EQU50H;-----------------------------------------------------------------------------------------ORG 0000HAJMP MAINORG0080HMAIN: MOV P1M1,#0CH; НSDA˄P13˅ SCL˄P12˅Ў ⓣ MOV P1M2,#0CHMOV P0M1,#00H; НLED偅 ЎMOV P0M2,#0CHSETB LED; 䮾ϔϟLEDCALL DELAYCLR LEDMOV DPTR,#DATATAB; 㸼 䗕㓧MOV R0,#MTDMOV R7,#10MAIN_CPYDATA:CLR AMOVC A,@A+DPTRMOV @R0,AINC R0INC DPTRDJNZ R7,MAIN_CPYDATAMAIN_L1:CALL DELAYMOV SLA,#SLA VE1MOV NUMBYTE,#10LCALL IWRNBYTEEXT; Ң 1 䍋 CPL LEDCALL DELAYLCALL IRDNBYTEEXT ; Ң 1 䍋䇏 JZ MAIN_L2MOV DPTR,#DATATABMOV R0,#MRDMOV R7,#10MAIN_CMP1:CLR ACLR CMOVC A,@A+DPTR;↨䕗 ⱘ Ϣ 㸼Ёⱘϔ㟈SUBB A,@R0JNZ MAIN_L2MOV @R0,#0;⏙䳊 㓧INC DPTRINC R0DJNZ R7,MAIN_CMP1CPL LED1 ; ℷ⹂ LED1CALL DELAYMAIN_L2:MOV SLA,#SLA VE2MOV NUMBYTE,#10LCALL IWRNBYTEEXT; Ң 2 䍋 CPL LEDCALL DELAYLCALL IRDNBYTEEXT; Ң 2 䍋䇏 JZ MAIN_L1MOV DPTR,#DATATABMOV R0,#MRDMOV R7,#10MAIN_CMP2:CLR A;↨䕗 ⱘ Ϣ 㸼Ёⱘϔ㟈MOVC A,@A+DPTRSUBB A,@R0JNZ MAIN_L1MOV @R0,#0INC DPTRINC R0DJNZ R7,MAIN_CMP2CPL LED1 ; ℷ⹂ LED1CALL DELAYSJMP MAIN_L1;**********************************************************; ˖DELAY; 㛑: ;**********************************************************DELAY: MOV R7,#30DELAY_L1:MOV R6,#0DELAY_L2:MOV R5,#0DJNZ R5,$DJNZ R6,DELAY_L2DJNZ R7,DELAY_L1RETDATATAB: DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,10H ;䆒㕂 㸼$INCLUDE(HI2C_ASM.INC); P89LPC932⹀ӊI2C䕃ӊ END ⏙ 4.4 Ң ˄ASM⠜˅;**********************************************************; ӊ ˖I2CSlave.asm;⠜ : ゟ ⠛ ⷨお; 㛑:LPC900I2C 㒓ⓨ⼎ ˄Ң ˅; :2004/12/28;**********************************************************; НP89LPC932ⱘI2CⳌ ⱘ НI2ADR DATA0DBHI2DAT DATA0DAHI2CON DATA0D8HI2STAT DATA0D9HI2SCLH DATA0DDHI2SCLL DATA0DCHSI BIT I2CON.3IEN1DATA0E8HEI2C BIT IEN1.0; НP89LPC932ⱘ䚼 ⡍⅞P0M1DATA84HP0M2DATA85HP1M1DATA91HP1M2DATA92HSLA VE_ADDR DATA50H; НҢ ˈ2ϾҢ 䆹ϡWRSLA EQU60H; Ң ӊⱘ 㒓⢊ ˄䖯 ℸ⢊ ⫼RCVBYTE 㒓 ˅RDSLA EQU0A8H;䇏Ң ӊⱘ 㒓⢊ ˄䖯 ℸ⢊ ⫼SENDBYTE 䗕 ˅MRD EQU 30H ; Н 䗕㓧 30H-3AHRFLAG BIT10H ; Н䇏SFLAG BIT11H; Н 䗕ACK BIT 12H ; Н䖨LED BIT P0.2LED1BIT P0.3;-----------------------------------------------------------------------------------------ORG 0000HAJMP MAINORG 0033HAJMP I2C_ISRORG 0100HMAIN:MOV P1M1,#0CH; НSDA˄P13˅ SCL˄P12˅Ў ⓣ MOV P1M2,#0CHMOV P0M1,#00H; НLED偅 ЎMOV P0M2,#0CHCLR RFLAG ; 䇏 Ў䳊CLR SFLAG; Ў䳊MOV A,#SLA VE_ADDRLCALL SETBUS; ҢSETB EASETB EI2C; I2CЁSETB LED; 䮾ϔϟLEDCALL DELAYCLR LEDMAIN_L1:JNB SFLAG,MAIN_L2;㢹 䗕 㕂ԡ, 㸠ϟ䴶ⱘCPL LED1; LED1CLR SFLAGMAIN_L2:JNB RFLAG,MAIN_L1;䇏 㕂ԡ 䖯㸠 ⱘℷ⹂MOV DPTR,#DATATAB; 䩜 㸼佪MOV R0,#MRDMOV R7,#10;↨䕗10 㡖MAIN_CMP1:CLR AMOVC A,@A+DPTR; 㸼MOV R1,AMOV A,@R0XRL A,R1JNZ MAIN_CMP_E ; 䇃 䏇䕀INC DPTRINC R0DJNZ R7,MAIN_CMP1CPL LED; ℷ⹂ LEDMAIN_CMP_E:CLR RFLAGSJMP MAIN_L1;**********************************************************; ˖I2C_ISR; 㛑:I2CЁ ;**********************************************************I2C_ISR:MOV A,I2STATCJNE A,#WRSLA,I2C_ISR_N1; Ё ⢊ ЎSLA+WMOV R0,#MRDMOV R7,#10; 10 㡖I2C_ISR_L1:LCALL RCVBYTE ; Џ ⱘJNB ACK,I2C_ISR_EMOV @R0,AINC R0DJNZ R7,I2C_ISR_L1SETB RFLAGSJMP I2C_ISR_EI2C_ISR_N1:CJNE A,#RDSLA,I2C_ISR_E; Ё ⢊ ЎSLA+RMOV DPTR,#DATATABMOV R7,#10; 䗕10 㡖I2C_ISR_L2:CLR AMOVC A,@A+DPTRLCALL SENDBYTE; Џ 䗕JNB ACK,I2C_ISR_EINC DPTRDJNZ R7,I2C_ISR_L2SETB SFLAGI2C_ISR_E:MOV I2CON,#44H;䞞 㒓RETI;**********************************************************; ˖DELAY; 㛑: ;**********************************************************DELAY:MOV R7,#10DELAY_L1:MOV R6,#0DELAY_L2:MOV R5,#0DJNZ R5,$DJNZ R6,DELAY_L2DJNZ R7,DELAY_L1RETDATATAB: DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,10H; Н 㸼$INCLUDE(HI2Csla_ASM.INC); I2CҢ 䕃ӊENDϸϾҢ Փ⫼Ⳍ ⱘ ˈ Փ⫼Ё 䆹 䜡ϡ ⱘ 㒭ϡ ⱘҢ DŽ Ё 䗮䖛 НҢ 䞣SLA VE_ADDR ⹂ Ң ⱘDŽ䇏㗙 ҹ䖯ϔℹ ˈ Ң ⱘ 䞣ҹ䗖 ϡ⫼ⱘ ⫼ DŽԚ ⫼Ё ϔ⚍ 䆹⊼ ⱘ ˈҢ ⱘ䆒㕂ϡ㛑Ϣ 㒓Ϟ Ҫ ӊⱘ 䞡 DŽ㗠Ϩ Ң ӊⱘ ϡ㛑䆒㕂ⱘˈ ℸ 䗝⫼Ң ӊ 㽕⊼ Ң ϡ㛑 さDŽ ゟ Ў⫼ կњLPC900㋏ ⠛ ⱘI2C䕃ӊ ˈҢ㗠 䕏њ⫼ 㓪 ⱘ 䞣DŽ ՟ Փ⫼њℸ䕃ӊ DŽ՟ ⼎њP89LPC900㋏ ⠛ I2C䗮 ЁϔЏ Ңⱘ ⫼DŽ⬅ѢLPC900 ⠛ 㕂I2C⬉䏃ˈ 㗠 ⱘ㓪 ㅔ ˈ㗠Ϩ 䴴DŽLPC900 ⠛ 䖬 ҹ⫼I2C䗮 ЁⱘҢ ӊˈ 㗠 ⫼䴲 ♉⌏DŽℸ ˈLPC900㋏ ⠛ 䲚 њӫ ⱘ 㛑䚼ӊˈ㗠Ϩ կҢ8㛮DIP 28㛮ⱘPLCCㄝЄ ⱘ 㺙 ˈ ҹ⒵䎇 ⾡ ǃ㒓䏃 ぎ䯈 䰤 㗠 㽕∖催 㛑ǃ催 䴴 ⱘ ⫼DŽ5. 㗗 ⤂z ljLPC900㋏ Flash ⠛ ⫼ NJϞゟ ㄝ㓪㨫 Ҁ㟾ぎ㟾 ⠜⼒z ljLPC900㋏ FLASH ⠛ I2C䕃ӊ NJ/download/downs.asp?ID=1164z ljI2C 䆂 NJ/download/downs.asp?ID=780。
基于单片机和射频芯片实现的短距离无线数据传输系统
收稿日期:2008-08-05作者简介:黄丽军(1971-),女,福建莆田人,福建广播电视大学理工系讲师。
一、引言随着无线通信技术的发展,无线数据的采集与传输的应用领域在不断的扩大。
在工业测控方面,有些测量点比较分散使得有线线路的铺设及维护均需较高的代价;或者对于运动构件上的传感器信号的采集,使得有线传输数据不可靠、甚至不可能,因此采用无线数据传送技术进行数据通信是现代测控数传系统的发展趋势。
应用无线收发模块的短距离无线通信以其特有的抗干扰能力强、可靠性高、安全性好、受地理条件限制少、安装施工简便灵活等特点,在许多领域都有着广阔的应用前景。
本文旨在设计一个基于51单片机和RF 的短距离无线数传系统。
为了达到系统要求,本文主控芯片选择Atmel 公司的AT89LV51,实现对无线射频模块数据传输的控制。
由于无线收发芯片的厂商和种类比较多,考虑到功耗、灵敏度、抗干扰能力、传输速度等参数,经过对各个厂家的无线收发芯片进行评估,最终选用Nordic 公司的nRF401射频收发芯片,通过在国际通用的ISM 频段实现数据的短距离无线传输。
二、无线数传系统硬件组成本系统的工作原理是:首先通过传感器将现场各采集点信号转换为电信号,经过模/数转换器ADC 的采样、量化、编码后转换成数字信号,送到51单片机内进行初步处理,再通过nRF401无线数据传输芯片以无线方式将有效数据发送给主控制计算机的接收端,通过nRF401芯片接收到有效数据传递到51单片机,再控制单片机的串行口将数据送入上位计算机,上位机采用以VB 语言编写的控制程序完成数据显示以及对有效数据的进一步处理的任务。
为了满足安全可靠,有足够抗干扰能力,经济合理,方便使用的设计要求,采用了模块化设计思想。
在整个模块化设计中,模块与模块之间的结构如图2-1所示:图2-1无线数传系统组成框图摘要:本文详细介绍了基于AT89LV51单片机和nRF401射频芯片实现的测控系统中多个采集点的数据采集和无线数据传送系统的硬件和软件实现方案。
对LPC900系列单片机在射频数传模块中的研究
对LPC900系列单片机在射频数传模块中的研究对LPC900系列单片机在射频数传模块中的研究当前许多应用领域都采用无线方式进行数据传输,无线数据传输是指利用无线传输模块将工业现场设备输出的各种物理量进行远程传输,如果传输的是开关量,也可以做到远程设备遥测遥控。
无线数传设备DTD433可以提供高稳定、高可靠、低成本的数据传输。
它提供了透明的RS232/RS485接口,具有安装维护方便、绕射能力强、组网结构灵活、大范围覆盖等特点,适合于点多而分散、地理环境复杂等应用场合。
该设备提供点对点通信,也可以实现点对多点通信,不需要编写程序,不需要布线。
一般电工调试也可以通过。
无线数据传输设备广泛应用于无线数传领域,典型应用包括遥控、遥感、遥测系统中的数据采集、检测、报警、过程控制等环节。
1 射频数传模块开发平台的构建建立软硬件开发平台是模块开发的首要任务,比较了几种射频数传模块方案,最后决定采用由LPC900系列FLASH单片机和CC1000射频传输芯片为主芯片的开发方案。
1.1 主芯片简介LPC2900 FLASH单片机是恩智浦半导体(NXP Semiconductors)(由飞利浦创建的独立半导体公司)发布了LPC2900系列微控制器,进一步扩展了其ARM7和ARM9微控制器业界最广泛的生产线。
恩智浦LPC2900基于广受欢迎的、高性能的ARM968E-S处理器,针对工业、医疗、发动机控制和汽车电子行业内的应用,为设计师提供一个具有高成本效益、灵活的、低功耗的解决方案。
CC1000是根据Chipcon公司的SmartRF 技术,在0.35μm CMOS 工艺下制造的一种理想的超高频单片收发通信芯片。
它的工作频带在315、868及915MHz,但CC1000很容易通过编程使其工作在300~1000MHz范围内。
它具有低电压(2.3~3.6V),极低的功耗,可编程输出功率(-20~10dBm),高灵敏度(一般-109dBm),小尺寸(TSSOP-28封装),集成了位同步器等特点。
LPC900系列单片机Flash的字节编程方法
LPC900系列单片机Flash的字节编程方法一、 概述LPC900系列单片机是PHILIPS公司推出的一款高速、低功耗的小管脚单片机,包括P89LPC932、P89LPC930/931、P89LPC920/921/922、P89LPC912/913/914、P89LPC906/907/908、P89LPC901/902/903,它们的特性基本一致,只是内部资源、管脚和价格有所不同。
LPC932具有512字节的片内EEPROM,可用来保存用户的数据,其它芯片没有片内EEPROM,但是它们的Flash具有字节擦除编程特性,可直接用来保存用户的数据,代替片内EEPROM。
二、 字节擦除编程操作方法LPC900系列单片机的字节擦除编程特性允许Flash程序存储器用作数据存储器,使用V DD电压来执行编程和擦除算法,Flash编程/擦除操作执行时间小于2ms。
以下是各芯片的Flash大小和扇区/页规格:P89LPC930/931是4KB/8KB的Flash,Flash扇区大小为1K字节,页为64字节;P89LPC920/921/922是2KB/4KB/8KB的Flash,Flash扇区大小为1K字节,页为64字节;P89LPC912/913/914均为1KB的Flash,Flash扇区大小为256字节,页为64字节;P89LPC906/907/908、P89LPC901/902/903均为1KB的Flash,Flash扇区大小为256字节,页为16字节。
字节擦除编程实际是应用固件(IAP-Litie)控制来实现的,即通过使用4个SFR来实现,1个控制/状态寄存器--FMCON,1个数据寄存器--FMDATA,2个地址寄存器--FMADRH、FMADRL。
1.IAP-Lite简介P89LPC900系列单片机(除LPC932)支持IAP-Lite编程和擦除功能,未加密扇区中的任何字节都可通过MOVC指令访问,因此,未加密扇区可用作非易失性数据存储器。
毕业设计基于单片机的射频卡读写器的设计毕业论文
摘要本文介绍了以AT89C52单片机作为微控制器,以射频技术为核心,基于PHILIPS公司MF-RC500模块的IC卡读写器,阐述了该系统的组成、工作原理以及相应的软硬件设计。
本文阐述了IC卡技术的基本原理,并对其读卡器在工程上的设计和开发作了研究。
论文描述了IC卡系统的发展和现状,通过对射频识别技术原理的研究,揭示了射频IC 卡系统的工作原理。
介绍了Type A 型常用的卡片MF1 IC S50和对应读卡器的设计方法和电路 (使用专用射频读卡集成芯片RC500),并详细阐述了系统各个模块的组成和原理,给出了天线的设计规范,然后根据课题要求详细介绍了自主设计的一款Type A 型读卡器的核心部件—射频模块的实现方案和具体电路。
最后介绍了系统设计的软件部分,重点介绍了RC500的主要特性以及与Mifare1非接触IC卡数据通信的一些重要模块,最后介绍了系统设计的软件部分和相关PCB电路图,并实际测试证明该读写器完成了基本功能,运行稳定。
关键词:AT89C52;MF-RC500;IC读写器;S50AbstractWith micro-computer AT89C52 as controller, the radio frequency technology as core, this paper describes the system’s composition、work principle and design of hardware and software of contactless IC card read-write device base on MF-RC500 of PHILIPS Company .This paper introduces the basic principle of the contactless IC card technology and the application of IC card reader. First the paper describes the development and the status quo of the IC cards system. Then the work principle of the radio frequency IC card system is discovered through studying the principium of the radio frequency technology. Whereafter, the paper introduces the card MF1 IC S50 what is usually used in the cards of Type A, the design method and the circuit of the card reader device (the device use the radio frequence chip reader module RC500), and in detail analyzes the principle of every module, simply Points to the design rules of the antenna circuit. Then, the paper in detail introduces the implement project about circuit and program of the kemel components of a Type A IC cards reader, the RF module, what is completely made by do-it-yourself.In the end, the paper introduces the software of the system, and the main property and basic intruction set of a contactless IC card reader RC500 based on Philips’MIFARE1 are introduced. And some ideals and methods of programme about the basilic module with data communication between the cards and RC500 are presented. Finally, introduced the system design part of the software and the PCB circuit diagram, and the actual test results show that the reader to complete the basic functions, stable operation .The Read-Write Device is stabilized through test.Keywords:AT89C52;MF-RC500;IC Read-Write Device;S50目录摘要 (I)Abstract (II)1 绪论 (1)1.1 射频技术发展及对未来的展望 (1)1.1.1物流管理 (1)1.1.2 商品防伪 (2)1.1.3 门禁 (2)1.1.4 军事领域 (3)1.2 射频设别技术的优点 (3)1.3 课题研究任务及工作安排 (4)2 RFID系统的相关理论 (5)2.1 MIFARE射频卡概述及现状 (5)2.1.1 接触式与非接触式IC卡之比较 (5)2.1.2 非接触卡的优点 (5)2.1.3 MIFARE非接触式IC卡的标准 (6)2.1.4 非接触射频卡的应用前景 (7)2.2 射频卡的结构 (7)2.2.1 MIFARE卡工作原理 (7)2.2.2 MIFARE卡的组成及存储结构 (8)2.2.3 MIFARE特性 (11)3 MFRC500芯片 (12)3.1 RC500芯片的简介 (12)3.2 MFRC500内部结构 (12)3.3 MFRC500引脚说明 (16)3.4 芯片主要特性及应用 (17)3.5 读写器的基本原理简介 (18)4 读写器硬件设计与制作 (19)4.1 读写器总体构思 (19)4.2 MCU主控模块 (19)4.2.1 单片机简介 (19)4.2.2 单片机的分类 (21)4.2.3 单片机的工作过程 (22)4.2.4 单片机的硬件特性 (22)4.2.5 STC89C52RC单片机的介绍 (22)4.3 射频接口模块 (26)4.4 天线设计部分 (27)4.4.1 高频滤波电路 (27)4.4.2 天线及匹配电路 (28)4.4.3 接收电路 (29)4.5 电源与存储模块 (30)4.5.1 电源电路 (30)4.5.2 存储电路 (30)4.6 时钟与RS-232接口模块 (31)4.6.1 时钟电路 (31)4.6.2 RS-232接口电路 (32)4.7 人机交互界面模块 (33)5 读写器软件系统设计 (35)总结 (48)致谢 (49)参考文献 (50)附录 (51)1 绪论无线射频识别(RFID, Radio Frequency Identification)技术通常是以微小的无线收发器为标签(Tag)来标志某个物体,这个物体在RFID技术中常称为对象(Object)。
NXP LPC900系列单片机ISP编程技术总结
NXP LPC900系列单片机ISP编程技术总结1、将编译好的用户应用程序下载(编程)到LPC900系列单片机(MCU)内部Flash的方法有三种:(1)在系统编程ISP(In-System Programming)。
(2)在电路编程ICP(In-Circuit Programming)。
(3)通用或专用编程器编程。
编程器编程是一种传统的并行编程方法,特别适合于DIP封装(如果是表贴的需专用适配器)或量产阶段(批量)的MCU编程,其特点是速度快、可靠性高。
其缺点是无法对已焊接的表贴MCU编程,而且成本较高,一台稍好一点的通用编程器至少在千元以上。
目前大部分品牌通用编程器(如Xeltek 3000U等)和周立功LPC PRO专用编程器均支持LPC900编程,而且有些编程器借助专用下载线(如Xeltek ISP-Header01、周立功ICP900-ADP)还可完成ICP编程。
ICP和ISP均采用串行编程方法。
其中ICP是一种通用标准(规范)编程,硬件连接采用PCL(P0.5)、PDA(P0.4)、RST、VDD和GND 五线制,但要求编程时PCL、PDA、RST和VDD与系统其它电路断开。
ICP的加载(启动)是由MCU内部硬件电路完成的,并调用MCU内部IAP(在应用编程,In-Application Programming)实现Flash编程。
上位机(PC机)通过专用ICP下载器(如周立功MiniPRO和涛行TX-MiniICP)与目标系统相连,编程软件使用FlashMagic或SmartPRO。
注意:仅老款的LPC932不支持ICP编程,其它LPC900系列的均支持。
关于ICP编程更多的内容可参阅周立功公司的“LPC900系列单片机ICP解决方案”和“L PC900 在电路编程(ICP)规范”。
2、与ICP不同,ISP是一种通用非标准串行在线编程,尽管不同IC厂家内部实现ISP编程技术(算法)不同,但外部硬件连接均采用串口(或USB转串口)的RXD、TXD。
射频数传模块中LPC900系列单片机的应用分析
软 件 开 发 及 调 试
◇ 数 传模 块 软件 基本结 构 射 频 传 输 芯 片C 10 具 有 3 状 态 :I E C0 0 种 D L ( 闲) X ( 收数 据) X ( 空 ,R 接 ,T 发送 数据) 。整 体 上看 ,这 是个具 有3 状态 的状 态 机模 型 ,状 态 种 之 间的相互 转换 见 图2 。模 块主 程序 除 了完成 基 本 的芯 片初 始 化工 作 外 ,程 序 的运 行 主要 是 根
据 在 C 10 的 D L C 0 0 C K管 脚 产 生 的 中 断 , 由 中 断 管 理 程 序 进 行 状 态 检 测 及 切 换 , 并 执 行 相 应 的 中 断操作 ?
造 的 可编 程 、半 双 工 超 高 频 单 片 收发 器 芯 片 , 电路 工 作 在 IM频 段 (0  ̄ 0 z。通 过 串 S 3 0 10 0MH ) 行 接 口编程 ,其 主要 的 工作 参 数 能 够 根据 不 同 应 用 场 合需 要 灵 活方 便 地 设定 。同 时其 灵 敏 度 可达 一 0 B 1 9d m,可 编 程 输 出 功 率 一 0 1 B 2 — 0d m, F K调 制 数据 率 最 高 可 达7 . k a d S 68 B u ,可在 27 .— 33V 电源 工作 。非 常适 合 应 用 于IM ( 业 、 . 低 S 工 图1 射频数传模块
开 发平 台框 图
射 频 模 块 』发 扳 1
科学 及医 疗)方 面 以及S D R 短距 离通 信 系统 。
—
Ts 2真 K9 仿 器} 3
IA LI
P 机 C
最新对LPC900系列单片机在射频数传模块中的研究
对L P C900系列单片机在射频数传模块中的研究对LPC900系列单片机在射频数传模块中的研究当前许多应用领域都采用无线方式进行数据传输,无线数据传输是指利用无线传输模块将工业现场设备输出的各种物理量进行远程传输,如果传输的是开关量,也可以做到远程设备遥测遥控。
无线数传设备DTD433可以提供高稳定、高可靠、低成本的数据传输。
它提供了透明的RS232/RS485接口,具有安装维护方便、绕射能力强、组网结构灵活、大范围覆盖等特点,适合于点多而分散、地理环境复杂等应用场合。
该设备提供点对点通信,也可以实现点对多点通信,不需要编写程序,不需要布线。
一般电工调试也可以通过。
无线数据传输设备广泛应用于无线数传领域,典型应用包括遥控、遥感、遥测系统中的数据采集、检测、报警、过程控制等环节。
1 射频数传模块开发平台的构建建立软硬件开发平台是模块开发的首要任务,比较了几种射频数传模块方案,最后决定采用由LPC900系列FLASH单片机和CC1000射频传输芯片为主芯片的开发方案。
1.1 主芯片简介LPC2900 FLASH单片机是恩智浦半导体(NXP Semiconductors)(由飞利浦创建的独立半导体公司)发布了LPC2900系列微控制器,进一步扩展了其ARM7和ARM9微控制器业界最广泛的生产线。
恩智浦LPC2900基于广受欢迎的、高性能的ARM968E-S处理器,针对工业、医疗、发动机控制和汽车电子行业内的应用,为设计师提供一个具有高成本效益、灵活的、低功耗的解决方案。
CC1000是根据Chipcon公司的SmartRF技术,在0.35μm CMOS 工艺下制造的一种理想的超高频单片收发通信芯片。
它的工作频带在315、868及915MHz,但CC1000很容易通过编程使其工作在300~1000MHz范围内。
它具有低电压(2.3~3.6V),极低的功耗,可编程输出功率(-20~10dBm),高灵敏度(一般-109dBm),小尺寸(TSSOP-28封装),集成了位同步器等特点。
基于SIM900模块的射频系统集成
基于SIM900模块的射频系统集成王国强2012.03.07内容 射频部分硬件设计系统EMI设计天线设计射频部分硬件设计主要分两个方面:原理图设计-天线部分电路——依据不同天线类型,分两种形式:(a)直接连接;(b)加匹配电路。
-电源干扰抑制电路——主要目的为滤除电源信号中的干扰,如开关电源噪声等PCB设计原理图设计—天线部分电路直接连接适用场合:天线阻抗为50ohm ,如:车载天线、部分类型外置天线等优点:电路简单,易于PCB 设计缺点:对天线调试要求高RF_IN GND GNDGSM/GPRS模块天线连接器原理图设计—天线部分电路加匹配电路适用场合:天线阻抗非50ohm,常见于内置天线应用,如手机中常用的PIFA、Mono Pole、IFA等优点:利于天线调试缺点:电路、PCB设计稍复杂原理图设计—电源干扰抑制电路 电源干扰抑制位号规格描述型号供应商FB10805,220ohm+/-25%@100MHz,DC 50mOhm,2A FBMH2012HM221-T TAIYO YUDENC13528,100uF+/-20%,6.3V,Tantalum TLJT107M006R0800AVXC20402,47pF+/-5%,50V,C0G GRM1555C1H470JA01D MurataC30402,22pF+/-5%,50V,C0G GRM1555C1H220JA01D Murata原理图设计—电源干扰抑制电路案例:电源干扰对发射频谱的影响及采取抑制措施后的改善效果受恶化的射频调制谱受恶化的射频开关谱改善后的射频调制谱性能改善后的射频开关谱性能原理图设计—电源干扰抑制电路磁珠的选择要点-额定工作电流不低于2A-直流阻抗尽量小,以免产生较大的电压跌落-足够的干扰抑制能力,即高频阻抗应较大模块射频引脚及测试点天线馈点/射频线焊接PAD 射频线电源线地其它信号线——模块射频引脚及测试点模块射频引脚对于多层板,在射频信号引脚的下方,第二层应净空处理顶层第二层第三层第n 层底层在射频信号引脚下方,多层板的第二层应净空——模块射频引脚及测试点 模块射频测试点模块背面射频测试点对应的客户PCB相应区域,在第一层应净空处理,且在第一、二层无任何其它信号走线穿过——天线馈点/射频线焊盘 天线馈点天线馈点周围及下方所有层应净空——天线馈点/射频线焊盘 射频线焊盘推荐的射频线焊盘尺寸如下图。
涛行LPC900系列单片机ISP程序编程器使用说明书
出现的对话框中,enable Watchdog 和 enable watchdog Safety 是关于看门狗设置的,可查阅 LPC932 的文档了解其特性。Enable Reset Pin 勾选上表示复位引脚有复位功能,如不勾上,表示复位引 脚作信号输入引脚使用。Enable Brownout Detection 选项表用于设 置是否激活低电压 Brownout 功能,如果 LPC932 供电电压低于 2.7V 时,此选项不能勾上,否则开机后芯片一直处于低电压复位状态。
靠近ISP下载接口的D5指示灯为数据传输信号线TXD值指示灯。由 于TXD没有数据发送时为高,所以此指示灯常亮,在PC机发送数据到
“涛行出品,必系精品”
联系电话:(025)51615878 4
邮箱:xg_2004_sy@
TX_LPC900_ISP(V1.0)LPC900 系列单片机 ISP 编程器使用说明书
“涛行出品,必系精品”
联系电话:(025)51615878 8
邮箱:xg_2004_sy@
TX_LPC900_ISP(V1.0)LPC900 系列单片机 ISP 编程器使用说明书
3.3、配置第三步(选定需编程的程序文件) 见下图红色框线所示部分:
当选定要下载的文件后,下次启动软件时会将最后一次下载了的 文件调入要下载的文件框中,在使用 FlashMagic 软件下载程序前, 如果以前选择了的文件内容有变化(以文件的最后修改日期是否有变 化来识别),则下载时将以新程序的数据下载到目标系统中,在文件 名下面的文件日期和时期也能看到其变化。所以程序文件内容有了更 新,不必重新载入,直接点击下载即可,非常地方便。
“涛行出品,必系精品”
联系电话:(025)51615878 3
LPC900系列单片机开发平台
LPC900系列单片机开发平台
佚名
【期刊名称】《电子产品世界》
【年(卷),期】2005(31)4
【摘要】Mini黄金搭档。
MiniKIT开发板是一款精简型LPC900系列开发板。
其可以配合MinilCP和MinilCE使用。
该板采用TSSOP28封装的P89LPC931作为主控CPU。
板上预留有ICP下载接口和MiniICE仿真头插座。
方便用户使用基于KeilC51环境下的MinilCE仿真器对LPC900系列单片机进行在线仿真调试以及使用MinilCP下载编译后的用户程序进行运行结果的演示。
所以MiniKIT与MinilCP以及MiniICE形成一个黄金搭档组合。
是用户学习LPC900系列单片机以及使用LPC900系列单片机开发产品的理想组合套装工具。
【总页数】2页(Pi012-i013)
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.射频数传模块中LPC900系列单片机的应用分析 [J],
2.用增强型LPC900系列Flash单片机设计可靠的产品 [J],
3.LPC900系列单片机热门外围器件 [J],
4.PHILIPS——微控制器领先品牌用增强型LPC900系列Flash单片机设计可靠产品 [J],
5.LPC900系列单片机在射频数传模块中的应用与研究 [J], 季刚;刘大茂
因版权原因,仅展示原文概要,查看原文内容请购买。
LPC900系列单片机在射频数传模块中的应用与研究
LPC900系列单片机在射频数传模块中的应用与研究当前许多应用领域都采纳无线方式举行数据传输,在无线抄表、工业数据采集、天线遥控、计算机遥测遥控,医疗卫生、家庭自动化、安防、汽车仪表数据读取等各方面无线数传模块都有广泛的应用。
1 射频数传模块开发平台的构建建立软硬件开发平台是模块开发的首要任务,比较了几种射频数传模块计划,最后打算采纳由LPC900系列FLASH和CC1000射频传输芯片为主芯片的开发计划。
1.1 主芯片简介LPC2900 FLASH单片机是Philips公司推出的一款高性能、微功耗(彻低掉电模式功耗低于1μA)、高速率(6倍于一般)、小封装的5l内核单片机,主要集成了字节方式的I2C、SPI总线、增加型UART接口、、实时时钟、E2PROM,AD/DA转换器、ISP/IAP在线编程和应用中编程等一系列有特色的功能部件,可满足各种对成本、线路板空间有限制而又要求高性能、高牢靠性的应用。
按照性能、成本等各方面因素我们挑选了该系列的LPC922。
CC1000是基于Chipcon公司的Smart RF技术创造的可编程、半双工超高频单片芯片,工作在ISM频段(300~1 000 MHz)。
通过串行接口编程,其主要的工作参数能够按照不同应用场合需要灵便便利地设定。
同时其敏捷度可达-109 dBm,可编程输出功率-20~10 dBm,FSK调制数据率最高可达76.8 kBaud,可在2.7~3.3 V低电源工作。
十分适合应用于ISM(工业、科学及医疗)方面以及SRD(短距离通信)。
1.2 开发平台构建LPC900系列单片机提供了较为完美的软硬件开发工具,在系统开发中采纳TKS932器,用于系统的仿真、调试。
该仿真器支持目前流行的KEILC公司的μVisionⅡ集成开发环境。
通过自行设计的射频模块开发板以及附加一些辅助电路,协作TKS932仿真器及软件开发工具μVisionⅡ,构成的射频数传模块开发平台的第1页共5页。
广州周立功单片机 LPC900单片机 说明书
目录第1章LPC900 详细开发流程 (1)1.1 LPC900简介 (1)1.2 LPC900程序编写步骤 (2)1.2.1 范例简介 (2)1.2.2 电路原理 (2)1.2.3 范例程序 (2)1.2.4 工程的建立 (3)1.2.5 生成Hex文件 (7)1.3 LPC900配置信息详解 (8)1.3.1 用户配置字(UCFG1) (8)1.3.2 引导状态字(Boot Status)& 引导向量字(Boot Vector) (9)1.4 LPC900的加密字 (10)1.5 LPC900的烧写 (10)1.5.1 编程器简介 (10)1.5.2 编程器操作软件的安装 (11)1.5.3 芯片的烧写步骤 (11)1.6 参考资料 (15)1.7 版本信息 (15)第1章 LPC900 详细开发流程1.1 LPC900简介LPC900系列单片机由Philips公司推出,基于80C51内核,具有高性能、低功耗等特性。
其内部资源丰富,具有UART、SPI、I2C总线,比较器模块,ADC/DAC转换模块,且性能可靠,加密性优秀,上手简单,是一款性价比极高的微处理器。
芯片基本特性如下:2 Clock系统时钟,指令执行速度是普通80C51单片机的6倍;具有IAP功能,可以将内部FLASH存储区当作E2PROM使用(见图 1.2);具有ICP/ISP功能,芯片焊在板子上,不必取出即可下载程序;具有高精度内部RC振荡器(7.3728MHz),无需外接晶振即可稳定工作(见图 1.2);具有内部WDT(采用独立的时钟源);具有RTC(Real Time Clock:实时时钟定时器);具有掉电检测功能,电压不稳时,能够停止芯片运行,防止系统发生异常;具有8引脚到64引脚多种封装(参见图 1.1);完全掉电模式下,功耗小于1uA;指令集与标准8051兼容,上手简单。
图 1.1 P89LPC9102、P89LPC952实物图图 1.2 P89LPC922 的应用为了方便客户使用这款微处理器,本文将对其开发流程一一叙述。
基于单片机的射频IC卡设计
基于单片机的射频IC卡设计Abstract:This paper describes the design of a radio frequency identification (RFID) card based on single-chip microcontroller. The proposed design incorporates a low power RF module and a microcontroller unit (MCU) to provide a secure and reliable method for data communication between the RFID card and reader. The proposed design allows for the storage of personal information and financial data on the card, allowing for easy and secure transactions.Introduction:RFID technology has been widely used in various applications ranging from asset tracking to access control. The technology allows for secure and reliable data communication between the RFID card and reader. The RFID card is a key component of the system and its design is critical for the performance and security of the overall system.In this paper, we present a design of an RFID card based on a single-chip microcontroller. The design incorporates a low-power RF module and a microcontroller unit (MCU) to achieve secure and reliable data communication. The proposed design stores personal information and financial data on the card, allowing for easy and secure transactions.Design methodology:The proposed design of the RFID card comprises of the following components:1. RF module: The RF module used is a low power 13.56 MHz module that conforms to the ISO14443 standard. The moduleis responsible for transmitting and receiving data from the RFID card to the reader.2. Single-chip microcontroller: The single-chip microcontroller used is an STM32F407VG microcontroller. This microcontroller is responsible for controlling the entire system and executing the data processing algorithms. It is also responsible for the encryption and decryption of thedata being transmitted.3. Power supply: The power supply used is a 3.3V Lithium battery. The battery is used to power the RF module and the microcontroller.4. Data storage: The proposed design uses a 2GB flash memory chip to store personal information and financial data.The design of the RFID card is as follows:The microcontroller communicates with the RF module through the SPI protocol. When the card is within the rangeof an RFID reader, the RF module sends a request to the microcontroller to initiate communication. Themicrocontroller then sends back the necessary information to the reader.The information stored on the card is encrypted for security purposes. The microcontroller is responsible for the encryption and decryption of the data being transmitted. The proposed design uses an AES algorithm for encryption.Validation and testing:The proposed design was validated and tested using the following steps:1. Circuit simulation: The circuit was simulated using Proteus software. The simulation results showed that the design was functioning correctly.2. Hardware implementation: The proposed design wasimplemented on a breadboard. The implemented design was tested using an RFID reader. The results showed that the design was functioning correctly.3. Field testing: The proposed design was tested in different environments, including indoor and outdoor environments. The results showed that the system was stable and reliable.Conclusion:The proposed design of an RFID card based on a single-chip microcontroller provides secure and reliable data communication between the card and reader. The use of encryption algorithms ensures that personal information and financial data are secured. The proposed design can be used in various applications ranging from access control to financial transactions. Further improvements could include the integration of GPS for location-based services.Keywords: RFID, microcontroller, encryption, RF module.。
基于LPC900单片机的射频数传模
基于LPC900单片机的射频数传模
无线数传设备DTD433可以提供高稳定、高可靠、低成本的数据传输。
它提供了透明的RS232/RS485接口,具有安装维护方便、绕射能力强、组网结构灵活、大范围覆盖等特点,适合于点多而分散、地理环境复杂等应用场合。
该设备提供点对点通信,也可以实现点对多点通信,不需要编写程序,不需要布线。
一般电工调试也可以通过。
无线数据传输设备广泛应用于无线数传领域,典型应用包括遥控、遥感、遥测系统中的数据采集、检测、报警、过程控制等环节。
1 射频数传模块开发平台的构建
建立软硬件开发平台是模块开发的首要任务,比较了几种射频数传模块方案,最后决定采用由LPC900系列FLASH单片机和CC1000射频传输芯片为主芯片的开发方案。
1.1 主芯片简介。
单片机控制的射频读卡器系统的开题报告
单片机控制的射频读卡器系统的开题报告一、研究背景随着无线通信技术的发展和应用日益广泛,射频识别(RFID)技术也逐渐进入人们的视野,作为一种自动识别技术,被广泛应用于物流、仓储、制造业、医疗、交通等领域。
射频读卡器作为实现RFID技术的重要外围设备,已经成为一种重要的无线接口设备。
单片机作为微型计算机,具有体积小、功耗低、效率高等特点,可以很好地应用于射频读卡器的控制器中。
本文将研究射频读卡器系统的设计与控制,通过单片机控制,实现对射频标签的识别与读写操作,以此来解决RFID技术在实际应用中需要快速准确读取射频标签的问题。
二、研究内容1. RFID技术原理及应用分析本文将分析RFID技术的原理和应用现状,包括RFID系统的组成、工作原理、射频标签、射频读卡器等方面,并对RFID技术在不同领域中的应用案例进行实际分析。
2. 射频读卡器系统设计基于对RFID技术原理的分析,本文将设计一种利用射频读卡器识别RFID标签的系统,包括硬件设计与软件设计两个方面。
其中,硬件设计将包括射频读卡器的电路板设计、天线设计等内容,软件设计将包括单片机软件程序设计及射频标签识别算法等内容。
3. 单片机控制本文将使用单片机作为射频读卡器的控制器,利用单片机进行射频标签的识别、读取和写入操作,通过单片机与射频读卡器之间通信的实现,实现射频标签的识别和读写操作。
4. 系统实现与测试完成射频读卡器系统的设计与单片机控制程序编写后,通过对系统进行测试,检验系统各项功能是否正常,并对系统的性能指标等内容进行评估。
三、研究意义本文通过对RFID技术原理的分析和射频读卡器系统的设计与实现,进一步促进了RFID技术在实际应用中的推广和应用,为相关领域的物流、仓储、制造业、医疗、交通等行业提供了更有效、快速、准确的自动化识别手段,具有很高的现实意义和社会价值。
四、论文结构本文将分为六个部分:引言、相关技术、射频读卡器系统设计、单片机控制、系统实现和结论。
基于单片机和nRF905SE的无线射频收发模块的系统设计
基于单片机和nRF905SE的无线射频收发模块的系统设计崔政委;汪焰恩;魏生民;董芊里
【期刊名称】《机械与电子》
【年(卷),期】2011(000)006
【摘要】应用STC89C52RC单片机和nRF905SE无线射频器,设计了一种无线数据传输系统,该系统由发射模块和接收模块组成.实验表明,根据系统所设计的发射模块能够将上位机传输过来的数据经单片机处理后,通过nRF905SE发送出去.在接收模块中,nRF905SE则将数据正确接收后通过数码管显示出来,从而实现无线通信.【总页数】4页(P19-22)
【作者】崔政委;汪焰恩;魏生民;董芊里
【作者单位】西北工业大学现代设计与集成制造技术教育部重点实验室,陕西,西安,710072;西北工业大学现代设计与集成制造技术教育部重点实验室,陕西,西安,710072;西北工业大学现代设计与集成制造技术教育部重点实验室,陕西,西安,710072;西北工业大学现代设计与集成制造技术教育部重点实验室,陕西,西安,710072
【正文语种】中文
【中图分类】TP391
【相关文献】
1.一种基于ASK无线射频收发模块的安防系统 [J], 李祖欣;蒋永峰;成新民
2.基于433无线收发模块的物联网智能家居系统设计 [J], 涂亮;段红光
3.一种无线射频收发模块的应用 [J], 王视听;尹志宏
4.一种基于ASK无线射频收发模块的安防系统 [J], 李祖欣;蒋永峰;成新民
5.一种基于无线收发模块nRF903的距离监控系统设计与实现 [J], 韩向阳;周凤星;胡磊;高勇
因版权原因,仅展示原文概要,查看原文内容请购买。
LPC900单片机SPI互为主从模式详解
4
BRGR0=0xF0;
// setup BRG for 9600 baud @ 7.373MHz internal RC oscillator
BRGR1=0x02;
BRGCON = 0x03;
// enable BRG
}
//---------------------------------//功能:SPI 接口初始化(初始化为主机)
//----------------------------------
void SPI_Init()
{
P2M1=0x00;
P2M2=0x00;
SPCTL=0x50;
//SSIG=0,SPIEN=1,MSTR=1;
SPSTAT=0xC0;
//清除 SPSTAT 中的标志位
}
//----------------------------------
#include "reg932.h"
#define uchar unsigned char
sbit KEY=P2^0;
sbit SLAVE=P2^1;
void UART_Init();
3
void SPI_Init(); void Delayms(uchar n); //---------------------------------//功能:主函数 //---------------------------------main() {
LPC900 单片机的 SPI 接口主要由 4 个引脚构成:SPICLK、MOSI、MISO 及/SS(可参见图 1)。
图 1 LPC900 系列单片机 SPI 接口引脚分布简图
LPC900 单片机的 SPI 接口使用简单,只需用到 3 个寄存器,见表 1:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在进行硬件仿真时,需要进行LPC922与PC机之间的UART串行通信,这样可以把有关调试信息直观地显示在超级终端上。初期一直存在无法通信问题,为此调试了有关串口读写的底层代码。
原来的单片机与PC机串口通讯写程序如下:
原来的UART写字符串函数writeln是通过调用putchar函数来进行的,但在硬件仿真时一直出错,当把这部分程序单独分离出来进行仿真时,却未出现问题。后来分析考虑推想可能原因是:C51由于内部堆栈空间的限制,在函数调用时,提供的是一种压缩栈,每个过程被给定一个空间用于存放局部变量,过程中的每个变量都存放在这个空间的固定位置,当多重调用或者递归调用这个过程时,会导致变量被覆盖而出错。此时应把该函数定义为可重入函数,但是再入函数因为要做一些特殊的处理,一般运行起来都比较慢。在这个程序中写UART操作对函数putchar调用时,程序的其他部分也在调用该函数,覆盖了传递给putchar函数的参数,导致程序运行出错。于是对程序做了修改如下:
1.2 开发平台构建
LPC900系列单片机提供了较为完善的软硬件开发工具,在系统开发中采用TKS932仿真器,用于系统的仿真、调试。该仿真器支持目前流行的KEILC公司的μVisionⅡ集成开发环境。
通过自行设计的射频模块开发板以及附加一些辅助电路,配合TKS932仿真器及软件开发工具μVisionⅡ,构成的射频数传模块开发平台的框图。
修改过的程序与原来程序差别在于不再进行putchar函数调用,而直接进行有关操作。修改后再进行硬件仿真,问题得到了很好的解决。由此可以看到,LPC900单片机由于内部堆栈资源有限,在程序设计时当发现程序运行异常时,应特别注意函数调用带来的问题。当然出现这个问题还可能会有其他方面的原因。
2.2.4 看门狗
当系统处于一些比较恶劣环境(工控、底层采集等),如果系统的抗干扰没有做好,则容易出现"死机"现象,这时硬件电路并没有损坏,只是内部程序运行出现错误,必须复位才能恢复,这时可用"看门狗"来解决问题。看门狗定时器子系统可通过复位使系统从错误的操作中恢复。但是任何事情都有其两面性,当软件没能在定时器溢出之前将其清零或者重新赋值,看门狗定时器就会导致系统产生一次复位,从而产生错误。
1 射频数传模块开发平台的构建
建立软硬件开发平台是模块开发的首要任务,比较了几种射频数传模块方案,最后决定采用由LPC900系列FLASH单片机和CC1000射频传输芯片为主芯片的片机是恩智浦半导体(NXP Semiconductors)(由飞利浦创建的独立半导体公司)发布了LPC2900系列微控制器,进一步扩展了其ARM7和ARM9微控制器业界最广泛的生产线。恩智浦LPC2900基于广受欢迎的、高性能的ARM968E-S处理器,针对工业、医疗、发动机控制和汽车电子行业内的应用,为设计师提供一个具有高成本效益、灵活的、低功耗的解决方案。
2.2 软件调试开发中遇到的问题分析
该开发平台采用的软件开发环境为μVisionⅡ。该环境内嵌多种符合当前工业标准的开发工具,可以完成从工程建立和管理、编译、连接、目标代码的生成,软件仿真,硬件仿真等完整的开发流程。即使不使用C语言而仅用汇编语言编程,其方便的集成环境、强大的软件仿真调试工具也会令开发进度大大加快。但是其开发环境又有其自身的特色,需要对其中一些特殊的问题加以考虑。关键字:LPC900单片机 射频数传模块
仿真开发板上采用的是LPC922,因此对其复位时的有关看门狗的寄存器进行了具体分析,最后发现问题是由于没有在一定的时间内及时对看门狗进行重新的配置参数造成的。通过对WDCON,WDL,WFEED1,WFEED2这4个与看门狗有关的寄存器进行合理配置,很好地解决了程序复位问题。
2.2.5 LPC900读操作和CC1000寄存器读写
CC1000是根据Chipcon公司的SmartRF技术,在0.35μm CMOS 工艺下制造的一种理想的超高频单片收发通信芯片。它的工作频带在315、868及915MHz,但CC1000很容易通过编程使其工作在300~1000MHz范围内。它具有低电压(2.3~3.6V),极低的功耗,可编程输出功率(-20~10dBm),高灵敏度(一般-109dBm),小尺寸(TSSOP-28封装),集成了位同步器等特点。其FSK数传可达72.8Kbps,具有250Hz步长可编程频率能力,适用于跳频协议;主要工作参数能通过串行总线接口编程改变,使用非常灵活。
基于LPC900单片机的射频数传模块开发
无线数传设备DTD433可以提供高稳定、高可靠、低成本的数据传输。它提供了透明的RS232/RS485接口,具有安装维护方便、绕射能力强、组网结构灵活、大范围覆盖等特点,适合于点多而分散、地理环境复杂等应用场合。该设备提供点对点通信,也可以实现点对多点通信,不需要编写程序,不需要布线。一般电工调试也可以通过。无线数据传输设备广泛应用于无线数传领域,典型应用包括遥控、遥感、遥测系统中的数据采集、检测、报警、过程控制等环节。
2.2.1 程序中的关键字
在进行程序设计时不能使用C51编译器的关键字来定义变量名或者函数名。C51是区别大、小字母的,而关键字都是小写字母。
一些函数定义从字面上看没有问题,但在编译时均指示错误,查看C51关键字有关目录,查出原因在于变量参数data为其关键字,造成了编译时的错误。
下面列出了一些常用的关键字,在程序设计时定义变量或函数名时应特别注意避免使用:
_at_,alien,bdata,bit,code,data,idata,large,pdata,sbit,sfr,sfrl6,smal,task,using,xdata,priority。
2.2.2 BIT和SBIT的区别和全局变量、局部变量的使用
sbit eDatas4=myDatas2^4;
sbit eDatas5=myDatas2^5;
sbit cDatas6=myDatas2^6;
sbit cDatas7=myDatas2^7;
在这里myDatas2既可以作为一个8位的变量使用,同时各个位也可以单独使用,这在串/并数据转换的场合是很有用的。特别需要注意的是,myDatas2这个可位寻址变量必须以全局变量的形式予以定义,如果定义为局部变量,编译器也将产生错误。
unsigned char bdata myDatas2;//定义一个可位寻址的全局变量
//定义变量的各个位
sbit cDatas0=myDatas2^O;
sbit cDatasl=myDatas2^l;
sbit cDatas2=myDatas2^2;
sbit cDatas3=myDatas2^3;
3 结语
在本文介绍的开发平台上利用LPC900系列单片机实现了根据不同的应用需要对射频模块上CC1000寄存器进行有效的参数读写配置控制,初步达到了设计要求。对软件开发中所遇到问题的分析讨论,在LPC900系列单片机的应用开发中也具有较广泛的实际意义。
PC机的COM1口与TKS932仿真器进行通信,对模块软件进行软、硬件仿真。COM2口则与LPC922进行通讯,一方面可以把软件调试信息更加直观地反映出来,配合软件调试;另一方面可以通过该串口接收或者发送数据到射频模块。
2 软件开发及调试
2.1 数传模块软件基本结构说明
射频传输芯片CCl000具有3种状态:IDEL(空闲),RX(接收数据),TX(发送数据)。整体上看,这是个具有3种状态的状态机模型,状态之间的相互转换见图2。模块主程序除了完成基本的芯片初始化工作外,程序的运行主要是根据在CC1000的DCLK管脚产生的中断,由中断管理程序进行状态检测及切换.
bit主要用位变量操作。sbit虽然也是用于位变量的操作,但其使用范围较bit更广泛。sbit不仅可以用于定义可位寻址寄存器的各个位,使我们可以对寄存器进行位操作,sbit的另一个重要作用在于构建类似于共用体数据类型,这种数据类型在LPC922与CC1000的串行/并行数据相互转换中起着重要的作用。例如:
LPC900系列单片机通常也具有51单片机的一些特点,在使用时也应注意。当其I/O口作为输入口使用时,有2种工作方式,即读端口和读引脚。读端口实际上并不从外部读入数据,而只是把端口锁存器的内容读到内部总线,经过某种运算或者变换后,再写回到端口锁存器。
读引脚时才真正地把外部的数据读入到内部总线。这时要先通过指令,把端口锁存器置1,然后再进行读引脚操作,否则就可能读错。在LPC922读写CC1000寄存器过程中涉及到有关读引脚操作问题,应区别这2种工作方式。