Amiccom RF IC Direct mode介紹(以A7130為例)

SamYang2024-06-3051核204
  • 本篇介紹Amiccom A7130 RF IC Direct mode TX/RX使用方法與原理

  • Direct mode的用意只是方便使用者可以直接從GIO Pin Follow CKO Clock(DataRate Clock),送/收 customized packet in ("bit" sequence資料)簡稱raw data bit,

換句話說,也就是raw data需跟隨CKO Clock的正緣( rising edge ) 才能做TX Data輸入至GIO1(TRXD) Pin的行為,如下圖:

注意下圖GIO2 Pin,需設為TMEO(Tx Modulation Enable Output),Raw data"必需"要在Tx Modulation Enable後(A7130 GIO2 Pin Go High)才可以開始將Data送至A7130 GIO1 pin(TRXD),且TX端需自行建立Preamble Code(0x55,0x55,0x55,0x55) & ID Code(ex:0x34,0x75,0xC5,0x2A)的Raw data bit

image.png

反之Rx部分是在CKO負緣( falling edge )時做接收Raw Data行為,如下圖:

RX端也是需要掃描到ID Code,A7130 GIO2=Fsync Go High後,A7130才會起震CKO ,Data就由A7130 GIO1(TRXD)輸出接收到的raw data

image.png



底下以Amiccom A9139M0核MCU當主控,控制A7130做TX/RX Direct mode介紹

代碼:<TX/RX測試版:A7130-F09(A9139M0F7) - 0628_2450_001Mhz_Direct modeTRX_500Kbps_Rx_sensitivity94dbm.zip>

TX端:

I/O介紹:

A9139M0 MCU端A7130 Module
P0.4(Input mode)GIO1(Output mode)=TMEO
P0.5(OutPut mode)=Raw DataGIO2(InPut mode)=Data pin
P0.3(Input mode)CKO(OutPut mode)=DataRate Clock

1.    使用者可以直接使用A7130的FIFO Config調整FMS bit=0,即可切換至Direct mode

A7130_WriteReg(MODECTRL_REG,0x60);

image.png

2.    將GIO1設為TMEO

A7130_WriteReg(GPIO1_REG, 0x09);//GIO1=TMEO,

3.   需要將GIO2 其中一隻Pin 設為TXD(Direct TX端)/RXD(Direct Rx端),這邊建議因為應用上可能會有TX/RX交替雙向傳輸的需求,因此建議可以直接設成[0111]=TRXD模式

A7130_WriteReg(GPIO2_REG, 0x9D);//GIO2=TRXD

image.png

3.     將CKO設為,DCK(Direct TX)/RCK(Direct RX)

A7130_WriteReg(CKO_REG, 0x02);//CKO Enable,CKO=DCK/RCK

image.png

4.    下TX CMD

StrobeCmd(CMD_TX); //entry tx & transmit

5.     等待GIO1(TMEO) Go High,這裡是將A7130的GIO1 pin(Output)接到MCU的P0.4(Input),因此MCU P0.4會去判斷A7130 GIO1是否輸出為HIGH,為high表示A7130 tx modulation enable

while(GPIO0->DATA_PIN.P04==0);

6.    MCU開始Read CKO Clock,發送Preamble Code至A7130 TX端的GIO2 Pin(TRXD)

    SandOneByteData(0x55);
    SandOneByteData(0x55);
    SandOneByteData(0x55);
    SandOneByteData(0x55);

SandOneByteData function:

void SandOneByteData(Uint8 Data)
{
	Uint8 i;
	for(i=0; i<8; i++)
    {	
	while(CKO==1);//MCU Input Read A7130 CKO Pin state	
            if(Data & 0x80)
                GIO2 = 1;//MCU Output=1
            else
                GIO2 = 0;//MCU Output=0
        Data<<=1;
	while(CKO==0);//MCU Input Read A7130 CKO Pin state
    }
}

7.    發送4Byte ID Code

//ID 
    SandOneByteData(0x34);
    SandOneByteData(0x75);
    SandOneByteData(0xC5);
    SandOneByteData(0x2A);

8.    Send Payload Data

SandData(PN9_Tab,64);

SandData function:Data GIO2 Pin follow CKO Pin Low->high(rising edge)時,輸入資料

void SandData(Uint8 *p, Uint8 cnt)
{
	Uint8 i,j;
	Uint8 Data;
	for(j=0; j<cnt; j++)
	{
		Data=*p;
		for(i=0; i<8; i++)
		{
			while(CKO==1);//MCU Input Read A7130 CKO Pin state
			if(Data & 0x80)
				GIO2 = 1;//MCU Output=1
			else
				GIO2 = 0;//MCU Output=0
			Data<<=1;
			while(CKO==0);//MCU Input Read A7130 CKO Pin state
		}
		p++;
	}
	i=0;
}

9.    發送完data,手動下Standby CMD結束TX行為

StrobeCmd(CMD_STBY);

RX端:

I/O介紹

A9139M0 MCU端A7130 Module
P0.4(Input mode)GIO1(Output mode)=Fsync
P0.5(Input mode)=Data PinGIO2(OutPut mode)=Raw Data
P0.3(Input mode)CKO(OutPut mode)

1.    使用者可以直接使用A7130的FIFO Config調整FMS bit=0,即可切換至Direct mode

A7130_WriteReg(MODECTRL_REG,0x60);

2.    設定A7130 GIO1=Fsync mode

A7130_WriteReg(GPIO1_REG, 0x05);//GIO1=FSYNC,

3.    設定A7130 GIO2=TRXD mode

A7130_WriteReg(GPIO2_REG, 0x9D);//GIO2=TRXD

4.    設定A7130 CKO=DCK/RCK mode

A7130_WriteReg(CKO_REG, 0x02);//CKO=DCK

5.    下RX CMD進入RX Mode

StrobeCmd(CMD_RX);

6.    Waiting ID Code sync GIO1 Go High

while(GIO1==0);

7.    Fsync成功後,開始讀資料,follow CKO Pin high->low(falling edge)

ReadData(tmpbuf,64);

ReadData function:

MCU P0.5(GIO2IN)=Input mode Read A7130 GIO2 Pin Output Data follow CKO Clock

void ReadData(Uint8 *p, Uint8 cnt)
{ 
	Uint8 Data=0;
	Uint8 i,j,src;
	
	src=0;
	for(j=0;j<cnt;j++)
	{
		for(i=0;i<8;i++)
		{
			while(CKO==0);
			if(GIO2IN==1)
			{
				src=(src<<1)|0x01;
			}
			else
			{
				src=src<<1;
			}
			
			while(CKO==1);
			
		}
		*p=src;
		p++;
	}
	src=0;
	
}

8.    接收完data,手動下Standby CMD結束RX行為

    StrobeCmd(CMD_STBY);

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。