您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > SPI直接通信_无中断无DMA
/*******************************************************************************date:2010/08/20writer:onthewayPort:P0_2,P0_3,P0_4,P0_5这四个端口是用于UART0外设配置P1_0,P1_1这两个端口是LED1和LED2P1_4,P1_5,P1_6,P1_7这四个端口用于SPI通信fuction:SPI通信主模式配置好寄存器之后,直接进入发送数据的状态*******************************************************************************//*--------------------------------------------------------------------------------MasterSlave--------------------------|||||P1_4SSN|---------|SSNP1_4||||||P1_5SCK|---------|SCKP1_5||||||P1_6MOSI|---------|MOSIP1_6||||||P1_7MISO|---------|MISOP1_7|||||----------------------------------------------------------------------------------------------------------*///MasterMode#includeiocc2530.h#includehal_cc8051.h#defineLED1P1_0#defineLED2P1_1#defineLED_OFF1#defineLED_ON0#defineSSNP1_4/*******************************************************************************@fninit_port**@brief*InitializescomponentsIOportapplicationexample.**Parameters:**@paramvoid**@returnvoid*******************************************************************************/voidinit_port(void){IO_FUNC_PORT_PIN(1,0,IO_FUNC_GIO);//将P1_0设置为普通的IO口IO_DIR_PORT_PIN(1,0,IO_OUT);//设置为输出IO_FUNC_PORT_PIN(1,1,IO_FUNC_GIO);//将P1_1设置为普通的IO口IO_DIR_PORT_PIN(1,1,IO_OUT);//设置为输出PERCFG|=0x02;//PERCFG.U1CFG=1P1SEL|=0xE0;//P1_7,P1_6,andP1_5areperipheralsP1SEL&=~0x10;//P1_4isGPIO(SSN)P1DIR|=0x10;//SSNissetasoutput}/*******************************************************************************@fninit_Baudrate**@brief*InitializescomponentsBaudrateapplicationexample.**Parameters:**@paramvoid**@returnvoid*******************************************************************************/voidinit_Baudrate(void){//Setbaudratetomax(systemclockfrequency/8)//Assuminga26MHzcrystal(CC1110Fx/CC2510Fx),//maxbaudrate=26MHz/8=3.25MHz.U1BAUD=0x00;//BAUD_M=0U1GCR|=0x11;//BAUD_E=17}/********************************************************************************@fnmain**@brief**@paramnone**@returnnone*******************************************************************************/voidmain(void){halMcuInit();//选择32MHz晶体振荡器作为系统时钟源(主时钟源)//设置时钟源32MHZinit_port();//初始化端口init_Baudrate();//初始化波特率//SPIMasterModeU1CSR&=~0xA0;//选择为SPI为Master//Configurephase,polarity,andbitorderU1GCR&=~0xC0;//CPOL=CPHA=0U1GCR|=0x20;//ORDER=1LED1=0;unsignedchari;chartxBufferMaster[]=ontheway..;for(;;){for(i=0;i=sizeof(txBufferMaster);i++){SSN=LOW;U1DBUF=txBufferMaster[i];//加入要发送的数据while(!U1TX_BYTE);SSN=HIGH;U1TX_BYTE=0;}LED1=~LED1;halMcuWaitMs(300);}}/*******************************************************************************date:2010/08/27writer:ontheway..Port:P0_2,P0_3,P0_4,P0_5这四个端口是用于UART0外设配置P1_0,P1_1这两个端口是LED1和LED2P1_4,P1_5,P1_6,P1_7这四个端口用于SPI通信fuction:SPI通信这个程序是从模式,上电之后寄存器都设置好之后,直接进入接收,等待数据传送进来*******************************************************************************//*--------------------------------------------------------------------------------MasterSlave--------------------------|||||P1_4SSN|---------|SSNP1_4||||||P1_5SCK|---------|SCKP1_5||||||P1_6MOSI|---------|MOSIP1_6||||||P1_7MISO|---------|MISOP1_7|||||----------------------------------------------------------------------------------------------------------*///SlaveMode#includeiocc2530.h#includehal_cc8051.h#defineLED1P1_0#defineLED2P1_1#defineLED_OFF1#defineLED_ON0#defineSSNP1_4/*******************************************************************************@fninit_port**@brief*InitializescomponentsIOportapplicationexample.**Parameters:**@paramvoid**@returnvoid*******************************************************************************/voidinit_port(void){IO_FUNC_PORT_PIN(1,0,IO_FUNC_GIO);//将P1_0设置为普通的IO口IO_DIR_PORT_PIN(1,0,IO_OUT);//设置为输出IO_FUNC_PORT_PIN(1,1,IO_FUNC_GIO);//将P1_1设置为普通的IO口IO_DIR_PORT_PIN(1,1,IO_OUT);//设置为输出PERCFG&=~0x02;//PERCFG.U1CFG=1P0SEL|=0x3c;//P1_7,P1_6,P1_5,andP1_4areperipherals}voidinit_Baudrate(void){//Setbaudratetomax(systemclockfrequency/8)//a32MHzcrystal,//maxbaudrate=32MHz/8=4MHz.U1BAUD=0x00;//BAUD_M=0U1GCR|=0x11;//BAUD_E=17}/*******************************************************************************@fninitUART**@brief*InitializescomponentsfortheUARTapplicationexample.**Parameters:**@paramvoid**@returnvoid*******************************************************************************/voidinitUART(void){//SetupforUART0IO_PER_LOC_UART0_AT_PORT0_PIN2345();//将端口0的2345设置为外设//这里的串口0设置为:波特率57600,没有校验位,8位数据,1位停止位,UART_SETUP(0,57600,HIGH_STOP);//设置串口}/********************************************************************************@fnmain**@brief**@paramnone**@returnnone*******************************************************************************/voidmain(void){halMcuInit();//选择32MHz晶体振荡器作为系统时钟源(主时钟源)//设置时钟源32MHZinit_port();//初始化端口init_Baudrate();//初始化波特率//initUART();//初始化UART//SPISlaveModeU1CSR&=~0x80;U1CSR|=0x20;//Configurephase,polarity,andbitorderU1GCR|=0xC0;//CPOL=CPHA=0U1GCR|=0x20;//ORDER=1LED1=LED_ON;//灯亮表示进入接收状态charrxBufferSlave[13];rxBufferSlave[0]=0x01;rxBufferSlave[1]=0x02;r
本文标题:SPI直接通信_无中断无DMA
链接地址:https://www.777doc.com/doc-2859758 .html