⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fet120_uart05_09600.c

📁 MSP430控制的905无线传输程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//******************************************************************************
//  MSP-FET430P140 Demo - USART0, Ultra-Low Pwr 9600 Echo ISR, 32kHz ACLK
//
//  Description: Echo a received character, RX ISR used. Normal mode is LPM3,
//  USART0 RX interrupt triggers TX Echo.
//  Baud rate divider with 32768Hz XTAL @9600 = 32768Hz/9600 = 3.41 (0003h 4Ah )
//  ACLK = UCLK0 = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO ~800kHz
//  //* An external watch crystal is required on XIN XOUT for ACLK *//	
//
//
//              MSP430F12x(2)
//            -----------------
//        /|\|              XIN|-
//         | |                 | 32kHz
//         --|RST          XOUT|-
//           |                 |
//           |             P3.4|----------->
//           |                 | 9600 - 8N1
//           |             P3.5|<-----------
//
//
//  M. Buccini
//  Texas Instruments Inc.
//  Feb 2005
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
//******************************************************************************

#include  <msp430x12x2.h>
#define SINGLE_RX_MODE 0X00
#define SINGLE_TX_MODE 0X01
#define RX_TX_MODE     0X02
#define MODULE_MODE    RX_TX_MODE
unsigned char length;

//9600
/*******************************************************************************************
*nrf905_demo.c
*
*This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTYT;
*
*uart:9600BPS
*****************
* 官方网址: http://www.tianyi-dz.com
* 官方论坛: http://www.tianyi-dz.com/bbs
****************
***TY Tech**
***bai chun yu **
***qq:472230383 328997835  **
***Email:baichunyu1232000@163.com  **
suzhou 2007 03 29
****************
*/
/********************************************************************************************/

#define WC		0x00			// Write configuration register command
#define RC		0x10 			// Read  configuration register command
#define WTP		0x20 			// Write TX Payload  command
#define RTP		0x21			// Read  TX Payload  command
#define WTA		0x22			// Write TX Address  command
#define RTA		0x23			// Read  TX Address  command
#define RRP		0x24			// Read  RX Payload  command
/*******************************************************************************************/
#define DELTA 256                           // target DCO = DELTA*(4096) ~ 1MHz

unsigned int Compare, Oldcapture;
typedef struct RFConfig
{
	unsigned char  n;
	unsigned char  buf[10];
}RFConfig;

RFConfig RxTxConf =
{
	10,
 	0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58	
};
unsigned char RecNum;
unsigned char    UARTTime;
unsigned char    UARTFlag;
unsigned char SendFlagValue;
/*
10--------------------------------10 register
0x01------------------------------CH_NO=1  fRF = ( 422.4 + CH_NOd /10)*(1+HFREQ_PLLd) MHz=422.4
0x0c------------------------------HFREQ_PLLd=0 ,433MHZ,Reduced power,6db
0x44------------------------------rx tx address width is 4 Bytes
0x20------------------------------rx payload width
0x20------------------------------tx payload width
0xcc, 0xcc, 0xcc,0xcc-------------receive address
0x58 -----------------------------Disable Extern Clock;Fosc=16MHZ 8 Bits CRC And enable
*/
// The content of this struct is nRF905's initialize data.初始化数据
// CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
// RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
// 8 Bits CRC And enable
/*******************************************************************************************/
unsigned char  TxBuf[32];
unsigned char  RxBuf[32];
/*******************************************************************************************/
unsigned char SendFlag;
/*
#define  TX_EN   BIT3//P1.3
#define  TRX_CE  BIT2//P1.2
#define  PWR_UP  BIT1//P1.1
#define  CD      BIT4//P2.4


#define  AM      BIT3//P2.3
#define  DR      BIT2//P2.2
#define  MISO    BIT2//P3.2
#define  MOSI    BIT1//P3.1
#define  SCK     BIT3//P3.3
#define  CSN     BIT0//P3.0
#define  SET_F   BIT0//P2.0
#define  LOW_POWER  BIT0//P1.0

#define  IO_Output_TX_EN()       P1DIR |= TX_EN
#define  IO_Output_TRX_CE()      P1DIR |= TRX_CE
#define  IO_Output_PWR_UP()      P1DIR |= PWR_UP
#define  IO_Output_MOSI()        P3DIR |= MOSI
#define  IO_Output_SCK()         P3DIR |= SCK
#define  IO_Output_CSN()         P3DIR |= CSN

#define  IO_Set_TX_EN()          P1OUT |= TX_EN
#define  IO_Set_TRX_CE()         P1OUT |= TRX_CE
#define  IO_Set_PWR_UP()         P1OUT |= PWR_UP
#define  IO_Set_MOSI()           P3OUT |= MOSI
#define  IO_Set_SCK()            P3OUT |= SCK
#define  IO_Set_CSN()            P3OUT |= CSN

#define  IO_Clear_TX_EN()        P1OUT &= ~TX_EN
#define  IO_Clear_TRX_CE()       P1OUT &= ~TRX_CE
#define  IO_Clear_PWR_UP()       P1OUT &= ~PWR_UP
#define  IO_Clear_MOSI()         P3OUT &= ~MOSI
#define  IO_Clear_SCK()          P3OUT &= ~SCK
#define  IO_Clear_CSN()          P3OUT &= ~CSN

#define  IO_Input_CD()           P2DIR &= ~CD
#define  IO_Input_AM()           P2DIR &= ~AM
#define  IO_Input_DR()           P2DIR &= ~DR
#define  IO_Input_MISO()         P3DIR &= ~MISO

*/

#define  TX_EN   BIT4//P2.4
#define  TRX_CE  BIT0//P3.0
#define  PWR_UP  BIT3//P3.3
#define  CD      BIT2//P3.2

#define  AM      BIT0//P2.0
#define  DR      BIT1//P2.1
#define  MISO    BIT2//P2.2
#define  MOSI    BIT3//P2.3
#define  SCK     BIT1//P1.0
#define  CSN     BIT0//P1.1


#define  IO_Output_TX_EN()       P2DIR |= TX_EN
#define  IO_Output_TRX_CE()      P3DIR |= TRX_CE
#define  IO_Output_PWR_UP()      P3DIR |= PWR_UP
#define  IO_Output_MOSI()        P2DIR |= MOSI
#define  IO_Output_SCK()         P1DIR |= SCK
#define  IO_Output_CSN()         P1DIR |= CSN

#define  IO_Set_TX_EN()          P2OUT |= TX_EN
#define  IO_Set_TRX_CE()         P3OUT |= TRX_CE
#define  IO_Set_PWR_UP()         P3OUT |= PWR_UP
#define  IO_Set_MOSI()           P2OUT |= MOSI
#define  IO_Set_SCK()            P1OUT |= SCK
#define  IO_Set_CSN()            P1OUT |= CSN

#define  IO_Clear_TX_EN()        P2OUT &= ~TX_EN
#define  IO_Clear_TRX_CE()       P3OUT &= ~TRX_CE
#define  IO_Clear_PWR_UP()       P3OUT &= ~PWR_UP
#define  IO_Clear_MOSI()         P2OUT &= ~MOSI
#define  IO_Clear_SCK()          P1OUT &= ~SCK
#define  IO_Clear_CSN()          P1OUT &= ~CSN

#define  IO_Input_CD()           P3DIR &= ~CD
#define  IO_Input_AM()           P2DIR &= ~AM
#define  IO_Input_DR()           P2DIR &= ~DR
#define  IO_Input_MISO()         P2DIR &= ~MISO



#define  led  BIT5
#define  led_pout                P2DIR|=led
#define  led_high                P2OUT|=led
#define  led_low                 P2OUT&=~led
#define  led_shanhuo             P2OUT^=led
/*******************************************************************************************/
void InitIO(void);			// Initialize IO port
void Config905(void);			// Config nRF905 module配置NRF905模式
void SetTxMode(void);			// Set nRF905 in Tx mode
void SetRxMode(void);			// Set nRF905 in Rx mode
void TxPacket(void);			// Send data by nRF905
void RxPacket(void);			// Recive data by nRF905
void SpiWrite(unsigned char );			// Write data to nRF905
unsigned char  SpiRead(void);			// Read data to nRF905
void Delay(unsigned int  n);			// Delay 100us


void UartInit(void);
void UartStr(unsigned char *p);
void Uart_Str(unsigned char number,unsigned char *p);
void PutChar(unsigned char ch);
/*******************************************************************************************/
void InitIO(void)
{
IO_Output_TX_EN();//       P2DIR |= TX_EN
IO_Output_TRX_CE();//      P3DIR |= TRX_CE
IO_Output_PWR_UP();//      P3DIR |= PWR_UP
IO_Output_MOSI();//       P2DIR |= MOSI
IO_Output_SCK();//         P1DIR |= SCK
IO_Output_CSN();//         P1DIR |= CSN

IO_Input_CD();//           P3DIR &= ~CD
IO_Input_AM();//           P2DIR &= ~AM
IO_Input_DR();//           P2DIR &= ~DRMISO
IO_Input_MISO();//         P2DIR &= ~MISO

IO_Set_CSN();//CSN=1;// Spi 	disable	
IO_Clear_SCK();///SCK=0;// Spi clock line init high
IO_Set_PWR_UP();//PWR_UP=1;// nRF905 power on
IO_Clear_TX_EN();////TRX_CE=0;// Set nRF905 in standby mode
IO_Clear_TRX_CE();//TX_EN=0;// set radio in Rx mode	
         					
led_pout;
led_high;
Delay(1000);
led_low;
	
	
	
}

/*******************************************************************************************/
//function Delay100us();Delay 100us
/*******************************************************************************************/
void Delay(unsigned int  n)
{
	unsigned int i;
	while(n--)
	for(i=0;i<80;i++);	
}


/*******************************************************************************************/
/*******************************************************************************************/
//function Config905();
/*******************************************************************************************/
void Config905(void)
{
	unsigned char  i;	
        IO_Output_CSN();
	IO_Clear_CSN();//CSN=0;	// Spi enable for write a spi command
	SpiWrite(WC);// Write config command写放配置命令
	for (i=0;i<RxTxConf.n;i++)// Write configration words  写放配置字
	{
		SpiWrite(RxTxConf.buf[i]);
	}
	IO_Set_CSN();//CSN=1;// Disable Spi
}
/*******************************************************************************************/
//function SpiWrite();
/*******************************************************************************************/
void SpiWrite(unsigned char   byte)
{
	
        unsigned char  i;	
        IO_Output_MOSI();
        IO_Output_SCK();
	for (i=0;i<8;i++)			// Setup byte circulation bits
	{	
		
		if ((byte&BIT7)==BIT7)				// Put DATA_BUF.7 on data line
			IO_Set_MOSI();//MOSI=1;
		else
			IO_Clear_MOSI();//MOSI=0;
		IO_Set_SCK();					// Set clock line high
		byte=byte<<1;
		IO_Clear_SCK();					// Set clock line low
	}
}
/*******************************************************************************************/
//function SpiRead();
/*******************************************************************************************/
unsigned char  SpiRead(void)
{
	
        unsigned char  i;	
        unsigned char temp;
        IO_Output_MOSI();
        IO_Output_SCK();
        IO_Input_MISO();
	for (i=0;i<8;i++)// Setup byte circulation bits
	{	
		temp=temp<<1;	// Right shift DATA_BUF
		IO_Set_SCK();	// Set clock line high
		if ((P2IN&MISO)==MISO)
			temp|=1;// Read data
		else
			temp&=~0;
							
		
		IO_Clear_SCK();	// Set clock line low
	}
	return temp;// Return function parameter

}
/*******************************************************************************************/
//function TxPacket();
/*******************************************************************************************/
void TxPacket(void)
{
	
        unsigned char  i;
        IO_Output_CSN();
        IO_Output_TRX_CE();
	IO_Clear_CSN();                         // Spi enable for write a spi command	
	SpiWrite(WTP);				// Write payload command
        TxBuf[0]=length;
        for(i=1;i<32;i++)
                    {
                    TxBuf[i]=RxBuf[i-1];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -