使用SPI輸入Data給A8137 Tx發射資料,且喚醒對端A8137 低功率Rx(Wake Up On Rx)收到Data後,再經由SPI輸出Data
- 系統流程圖: 

1. Tx端接線為P3_5=1,開啟SPI Function ,這裡A8137為了能接收另一顆MCU餵進來的Data,所以使用Slave mode,當SPI 系統啟動後,A8137 SPI 的MOSI將自動讀取SPDR資料填入SPI Buf裡,直到SPI Buf 塞滿64Byte
	if (P3_5) 
	{
		
		SSCR = 0xFF;    // SCS=1
		SPSR = 0x00;    // SSEN=0;
		ESPI = ENABLE;  // enable SPI MODULE interrupt
		EA = ENABLE;
		
		ESPI = DISABLE;  // disable SPI MODULE interrupt
		SPCR = SPI_SPE;//SPI interrupt disable,SPI System enable,slave mode
		SPICnt=0;
		for(i = 0; i < 64; i++)
			SPIBuf[i]=0;
		
		while (1) 
		{
			while(SPICnt!=64)
			{
				while ( P0_3 == LOW ) 
					_nop_(); // wait SSO turn high
				SPDR =0x00;
				while ( ( SPSR & SPI_SPIF ) == 0 );
				SPIBuf[SPICnt++] = SPDR;
			}
			SPICnt=0;2. 由於此範例的"客戶MCU端"SPI是傳送一組從0x00,0x01,0x02,0x03.....0x3F的累加數據,所以這邊會先做一次數據的判斷,判斷A8137的SPI 接收,是否收到跟"客戶MCU端"SPI發送過來的資料是一致的,所以底下加入TEST LED Function,若資料一致將LED=0,反之不一致將LED=1
			//TEST LED
			for(i = 0; i < 64; i++)
			{
				if(SPIBuf[i]==i)
				{
					P1_7=0;
				}
				else
				{
					P1_7=1;
					break;
				}
			}    3.    將A8137 SPI 收到的資料依序填入FIFO Buffer裡面,發送100次,這邊發射100次的目的,是為了能增加更大機率能喚醒對端的低功耗Rx Mode,發射完後將P1_1=0,作為一個提示功能
			//write SPI data to FIFO Buffer
			for(i = 0; i < 64; i++)
				RFLIB_WriteReg(TXFIFO_REG + i , SPIBuf[i]);
			
			for(i = 0; i < 100; i++)
			{
				RF_Flag = 0;
				RFLIB_StrobeCmd(CMD_TX); //entry tx & transmit
				Delay10us(1);
				while(RF_Flag == 0); //wait transmit completed
//				Delay10ms(1);
			}
			P1_1=0;============================================================================
- Rx 端: 
1. Rx端一開機後,A8137會進入WOR低功耗接收模式
WOR(24, 6, 1);
底下是WOR設定,可以根據rbt調整wakeup time & rbto調整sleep time,不過這邊建議使用原廠參數即可
注意:運行WOR功能是,因為會執行A8137_PM(2);也就是將A8137進入PM2 Mode,此時A8137的MCU Clock將OFF,直到A8137收到正確ID CODE時,才會重啟MCU,將FIFO Data給收下來
void WOR(Uint32 rbt, Uint16 rbto, Uint8 wus) {
	Uint8 rbt1, rbt2, rbt3;
	Uint8 rbto1, rbto2;
	RFLIB_WriteReg(GIO1_REG, 0x08); //GIO1=WOR
	RFLIB_WriteReg(GIO2_REG, 0x40); //GIO2=PDN_RX
	
	rbt1 = (rbt & 0x000000FF) >> 0;
	rbt2 = (rbt & 0x0000FF00) >> 8;
	rbt3 = (rbt & 0x00FF0000) >> 16;
	rbto1 = (rbto & 0x00FF) >> 0;
	rbto2 = (rbto & 0xFF00) >> 8;
	RFLIB_WriteReg(RBT_REG + 0, rbt1);  //RBT -> Wakeup time
	RFLIB_WriteReg(RBT_REG + 1, rbt2);  //RBT -> Wakeup time
	RFLIB_WriteReg(RBT_REG + 2 ,rbt3);  //RBT -> Wakeup time
	RFLIB_WriteReg(RBTO_REG + 0, rbto1);  //RBTO -> RX Active time
	RFLIB_WriteReg(RBTO_REG + 1, rbto2);  //RBTO -> RX Active time
	if(wus > 3)
			wus = 3;
	RFLIB_WriteReg(RCOSC1_REG, 0x82 | (wus << 4));  //WUS -> wakeup mode
	RFLIB_WriteReg(RSTCTRL_REG, BFC_RST);  //Back-off counter reset
	if(wus == 3)
		  RFLIB_WriteReg(MODECTRL_REG, 0x02 | 0x08 | 0x80);  //Enable WOR, Enable DFCRC
	else
	    RFLIB_WriteReg(MODECTRL_REG, 0x02 | 0x08);  //Enable WOR
	
	A8137_PM(2);
	while(GIO2==0);
	RFLIB_WriteReg(MODECTRL_REG, 0x02);  //disable WOR
	
	return;
}2. 當WOR成功喚醒後,執行RX CMD將資料收下並填入Rx Data Buffer裡面
P1OE=0xFF; RF_Flag = 0; RFLIB_StrobeCmd(CMD_RX); P0_6=1; Delay10us(1); while(RF_Flag == 0); //wait receive completed RxPacket(); P1_1=~P1_1;
3.    這邊使用A8137的P0.6拉LOW通知客戶端MCU,需要將SPI 打開,並開始收下A8137 MISO發送出來的Data
設定A8137 Rx端的SPI,並且將P0_6 Pin拉Low
SSCR = 0xFF; // SCS=1 SPSR = 0x00; // SSEN=0; ESPI = ENABLE; // enable SPI interrupt EA = ENABLE; ESPI = DISABLE; // disable SPI interrupt SPCR = SPI_SPE;//SPI interrupt disable, SPI enable, slave mode SPICnt=0; P0_6=0;
4. 將RX Data=Tmpbuf裡的資料,依序填入SPDR,將SPI Data依序傳輸到另一顆MCU上
			SPDR =Tmpbuf[SPICnt];
			while(SPICnt!=64)
			{
				while ( P0_3 == LOW ) 
				_nop_(); // wait SSO turn high
				SPDR =Tmpbuf[SPICnt++];
				while ( ( SPSR & SPI_SPIF ) == 0 );
			}
