国产群交在线视频一级,98影院国产在线视频,女人与公拘交酡全过女免费,国产视讯美女在线播放 91cao-caoporm-caoporm国产精品视频免费-www.cao

FPV圖傳

聯(lián)系我們

深圳市創(chuàng)研數(shù)字通訊有限公司

聯(lián)系人:羅先生

手機(jī):13692246378

電話:0755-85299996

郵箱:lokiqi@qq.com

網(wǎng)址:http://www.pzhtd.cn

地址:深圳寶安35區(qū)東方鼎泰文創(chuàng)科技園212

基于A7130的,高音質(zhì)無線 耳機(jī) (喇叭),2.4GHz 頻段的嬰兒監(jiān)控器

您的當(dāng)前位置: 首 頁 >> 新聞中心 >> 行業(yè)新聞

基于A7130的,高音質(zhì)無線 耳機(jī) (喇叭),2.4GHz 頻段的嬰兒監(jiān)控器

發(fā)布日期:2020-05-16 作者: 點(diǎn)擊:

基于A7130的,高音質(zhì)無線 耳機(jī) (喇叭),2.4GHz 頻段的嬰兒監(jiān)控器 (影音傳輸),家庭保全,無線影像倒車?yán)走_(dá),無線遙控器以及無線玩具的產(chǎn)品設(shè)計(jì)方案


一,產(chǎn)品概述:


笙科電子(Amiccom)近期宣布推出第四代2.4GHz TRX芯片,該芯片料號(hào)為A7130 ,A7130是一顆可運(yùn)作于高速4Mbps的射頻收發(fā)芯片,支持FSK與GFSK調(diào)變,MCU透過SPI接口即可驅(qū)動(dòng)A7130,包含RF操作模式以及存取內(nèi)建的64 Bytes TXFIFO 與RXFIFO,與上一代的芯片在控制方式上完全相同。


   A7130最大的優(yōu)勢(shì)在于高傳輸速率(4 Mbps)以及超高接收靈敏度 (-88dBm @ 4Mbps)。適合使用A7130的應(yīng)用有,高音質(zhì)無線 耳機(jī) (喇叭),2.4GHz 頻段的嬰兒監(jiān)控器 (影音傳輸),家庭保全,無線影像倒車?yán)走_(dá),無線遙控器以及無線玩具等。笙科提供的完整參考設(shè)計(jì),外圍組件僅需13顆,即可符合美國FCC part 15.247 以及歐洲ETSI EN300-440 的EMC規(guī)范,設(shè)計(jì)者不需多花時(shí)間調(diào)整射頻效能,即可享有更多的設(shè)計(jì)彈性。


    RF效能部分,A7130內(nèi)建的PA,輸出功率高達(dá)5dBm,笙科電子的參考設(shè)計(jì)使用PCB天線,街道實(shí)測(cè)可得50米的傳輸距離。若搭配笙科電子的増距芯片(Range Extender, A7700, 17dBm 輸出功率),街道實(shí)測(cè)距離遠(yuǎn)達(dá)200米。A7130內(nèi)建的RSSI 可協(xié)助軟件工程師選擇干凈的信道傳輸,芯片內(nèi)部具備的Auto Calibration機(jī)制,可克服半導(dǎo)體的制程變異,穩(wěn)定地在各種環(huán)境下工作。


   在數(shù)據(jù)的處理上,A7130提供封包偵錯(cuò) (FEC 與CRC),內(nèi)建的AES128加解密器可提供高質(zhì)量的防竊聽封包,自動(dòng)應(yīng)答(Auto Ack)與自動(dòng)重傳(Auto Resend)的機(jī)制可降低軟件開發(fā)的負(fù)擔(dān), 封包亦可選擇Manchester 編碼,大幅降低MCU處理數(shù)據(jù)串流的復(fù)雜度。電源管理部分支持Deep sleep mode,Sleep,Idle mode 與WOR 模式 (Wake On RX), WOR功能提供A7130自動(dòng)喚醒,接收不定時(shí)的RF網(wǎng)絡(luò)封包,以延長電池的使用壽命。Deep Sleep mode相當(dāng)于完全關(guān)掉A7130,其電流消耗僅須100 nA。整體上,A7130內(nèi)建的功能可以有效地降低開發(fā)復(fù)雜度與開發(fā)成本。


A7130的幾個(gè)重要特性:


1、A7130的傳輸速度有3Mbps和4Mbps兩種,可見這速度傳輸圖片數(shù)據(jù)完全是沒問題的。


2、A7130有64Bytes的TX/RX FIFO,可擴(kuò)展到4KBytes,這么大的FIFO,說明讀寫效率蠻可觀的。支持自動(dòng)應(yīng)答自動(dòng)重傳,CRC校驗(yàn),這在一定程度上保證了數(shù)據(jù)傳輸?shù)目煽啃浴?/p>


3、A7130的控制寄存器支持3線或者4線的SPI方式的讀寫,也就是說無論是讀寫寄存器還是讀寫FIFO,都是通過SPI方式實(shí)現(xiàn)的。


4、A7130支持多種模式,可保證低功耗。


上面的這些信息將有助于我們接下來程序的編寫。


二、A7130 SPI接口


1、接口說明


A7130 only supports one SPI interface with maximum data rate up to 10Mbps. MCU should assert SCS pin low (SPI chip select) to active accessing of A7130. Via SPI interface, user can access control registers and issue Strobe command.


3-wire SPI (SCS, SCK and SDIO) or 4-wire SPI (SCS, SCK, SDIO and GIO1/GIO2) configuration is provided. For 3-wire SPI, SDIO pin is configured as bi-direction to be data input and output. For 4-wire SPI, SDIO pin is data input and GIO1 (or GIO2) pin is data output. In such case, GIO1S (0bh) or GIO2S (0ch) should be set to [0110].


手冊(cè)上說了需將SCS引腳拉低以選中芯片。3線SPI方式,SDIO引腳要配置成雙向輸入輸出引腳。對(duì)于4線的SPI,SDIO作為輸入引腳,GIO1和GIO2配置成輸出引腳。配置GIO1和GIO2需要將控制寄存器Reg0b的GIO1S置為0110或Reg0c的GIO2S置為0110.


A7130支持8中模式(Sleep,Idle,STBY,PLL,RX,TX,FIFO Write Reset,FIFO Read Reset)。在實(shí)際的編程中,后四種模式直接的狀態(tài)切換需要特別的注意。


2、SPI接口配置


在程序中,我們使用的是4線的SPI方式,使用到GIO2作為輸出。


創(chuàng)研數(shù)字引腳   A7130引腳


SPI_CS SCS


SPI_CLK     SCK


SPI_MISO  GIO2


SPI_MOSI  SDIO


GPIOA_P1  GIO1


至于為什么要把GIO1接到PA1上面。因?yàn)樵谑謨?cè)中提到無論是數(shù)據(jù)從FIFO發(fā)出去完成還是從FIFO中接收完成,都將要有一個(gè)標(biāo)記來進(jìn)行判斷,此處我們把GIO1配置成發(fā)送接收完成的標(biāo)記。


在Reg0c中,我們將GIO1配置成WTR(Wait until TX or RX Finished)。


在發(fā)送模式下,進(jìn)入TX Mode,然后在RF Port中經(jīng)過一小段時(shí)間(PDL+TDL,這段時(shí)間可通過寄存器控制),芯片自動(dòng)在數(shù)據(jù)前面加上Premable等數(shù)據(jù)然后發(fā)送出去,此時(shí)WTR(GIO1)為高電平,當(dāng)數(shù)據(jù)傳輸結(jié)束之后,WTR置為低電平,芯片自動(dòng)進(jìn)去PLL Mode。這樣我們就可以通過判斷GIO1的引腳變化來判斷數(shù)據(jù)發(fā)送或者接收是否完成。


配置相關(guān)的SPI引腳之后,我們調(diào)用


A7130_SPI_Init()


1函數(shù),且之后調(diào)用


A7130_CS_HIGH()


把A7130的SCS引腳拉高,只有當(dāng)我們對(duì)A7130進(jìn)行操作時(shí)才拉低該引腳。當(dāng)然,上面那兩個(gè)函數(shù)要自己去封裝實(shí)現(xiàn)。


三、A7130寄存器配置及初始化


1、A7130配置代碼生成器


當(dāng)SPI配置完成后我們就要檢驗(yàn)SPI是否通。最簡單的方式就是去讀寫它的芯片ID,看返回值是否是正確的,但是這步還不能實(shí)現(xiàn)。因?yàn)橐x寫芯片的ID之前要對(duì)A7130進(jìn)行初始化操作,具體怎么初始化,在手冊(cè)上面并沒有說。那么怎么驗(yàn)證呢?首先嘗試著去讀寫某個(gè)寄存器,通過示波器看看時(shí)鐘是否正確,SPI寫入是否正確以及時(shí)序是否正確。當(dāng)這些都確認(rèn)無誤后,我們?cè)偃コ跏蓟疉7130。


笙科公司為開發(fā)人員提供了一個(gè)工具RC_A7130_ReferenceCodeGenerator.exe可生成A7130的寄存器配置代碼,不過生成的代碼是仿SPI時(shí)序的,不是我們用的創(chuàng)研數(shù)字固件的SPI接口,所以還需要修改部分代碼。


注意紅色的區(qū)域要根據(jù)自己的配置進(jìn)行選擇。其中的RF IO Setting中除WTR外都可不用配置。


生成三個(gè)文件A7130reg.h(定義寄存器的名稱),define.h(數(shù)據(jù)類型的相關(guān)定義),main.c(主程序)。


2、main.c


2.1、各個(gè)寄存器的值


這里面包含A7130所有寄存器的配置信息以及數(shù)據(jù)發(fā)送接收的示例程序。這里只貼出配置信息。


//-----------------------------------------------------------------------------


// RF ID code


//-----------------------------------------------------------------------------


const Uint8 code ID_Tab[] =


{


    0x54, 0x75, 0xC5, 0x2A


};


 


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


//                                   NOTE                                    !!


// !!         THIS CONFIG TABLE ONLY USE ON RF CRYSTAL = 16MHz               !!


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


const Uint16 code A7130Config[] =


{


    //      address   name              Descript


    //      -------   ----              ---------


    0x00,   //0x00  ; MODE_REG          only reset, not use on config


    0x62,   //0x01  ; MODE_CONTROL_REG  FIFO mode, Enable ARSSI, Enable AIF


    0x00,   //0x02  ; CALIBRATION_REG


    0x3F,   //0x03  ; FIFO1_REG        


    0x00,   //0x04  ; FIFO2_REG


    0x00,   //0x05  ; FIFO_REG


    0x00,   //0x06  ; IDCODE_REG


    0x00,   //0x07  ; RCOSC1_REG


    0x00,   //0x08  ; RCOSC2_REG


    0x00,   //0x09  ; RCOSC3_REG


    0x00,   //0x0A  ; CKO_REG


    0x01,   //0x0B  ; GIO1 register,    WTR


    0x19,   //0x0C  ; GIO2 register,    SDO


    0x9F,   //0x0D  ; DATARATE_REG     


    0x00,   //0x0E  ; PLL1_REG


    0x0E,   //0x0F  ; PLL2_REG          RFbase 2400.001MHz


    0x96,   //0x10  ; PLL3_REG


    0x00,   //0x11  ; PLL4_REG


    0x04,   //0x12  ; PLL5_REG


    0x3C,   //0x13  ; ChannelGroup1 register


    0x78,   //0x14  ; ChannelGroup2 register


    0xAF,   //0x15  ; TX1_REG          


    0x40,   //0x16  ; TX2_REG


    0x10,   //0x17  ; DELAY1_REG       


    0x60,   //0x18  ; DELAY2_REG       


    0x70,   //0x19  ; RX_REG           


    0x6F,   //0x1A  ; RXGAIN1


    0xC2,   //0x1B  ; RXGAIN2


    0x3D,   //0x1C  ; RXGAIN3


    0xE7,   //0x1D  ; RXGAIN4


    0x00,   //0x1E  ; RSSI_REG


    0xF1,   //0x1F  ; ADC_REG


    0x07,   //0x20  ; CODE1_REG        


    0x06,   //0x21  ; CODE2_REG


    0x2A,   //0x22  ; CODE3_REG


    0x60,   //0x23  ; IFCAL1_REG


    0xFF,   //0x24  ; IFCAL2_REG


    0x80,   //0x25  ; VCOCCAL_REG      


    0xD0,   //0x26  ; VCOCAL1_REG


    0x00,   //0x27  ; VCOCAL2_REG


    0x70,   //0x28  ; VCO deviation 1 register


    0x00,   //0x29  ; VCO deviation 2 register


    0x00,   //0x2A  ; DSA register


    0xDC,   //0x2B  ; VCO Modulation delay register


    0xF0,   //0x2C  ; BATTERY_REG      


    0x37,   //0x2D  ; TXTEST_REG       


    0x47,   //0x2E  ; RXDEM1_REG


    0xF7,   //0x2F  ; RXDEM2_REG


    0xF0,   //0x30  ; CPC1_REG          


    0x37,   //0x31  ; CPC2_REG          


    0x55,   //0x32  ; CRYSTALTEST_REG


    0x15,   //0x33  ; PLLTEST_REG


    0x15,   //0x34  ; VCOTEST1_REG


    0x00,   //0x35  ; RF Analog register


    0x00,   //0x36  ; Key data register


    0x77,   //0x37  ; Channel select register


    0x00,   //0x38  ; ROM register


    0x00,   //0x39  ; DataRate register


    0x00,   //0x3A  ; FCR register


    0x00,   //0x3B  ; ARD register


    0x00,   //0x3C  ; AFEP register


    0x00,   //0x3D  ; FCB register


    0x00,   //0x3E  ; KEYC register


    0x00,   //0x3F  ; USID register


};


const Uint8 code A7130_Addr2A_Config[]=


{


    0x34, //page0,


    0x49, //page1,


    0x00, //Page2,


    0x80, //page3,


    0x80, //page4,


    0x00, //page5,


    0x0A, //page6,


    0x00, //page7,


};


 


const Uint8 code A7130_Addr38_Config[]=


{


    0x00, //page0,


    0x10, //page1,


    0x20, //page2,


    0x24, //page3,


    0x20, //page4,


};


2、初始化


void initRF(void)


{


    //init io pin


    SCS = 1;


    SCK = 0;


    SDIO = 1;


    GIO1 = 1;


    GIO2 = 1;


 


    A7130_Reset();    //reset A7105 RF chip


    A7130_WriteID();  //write ID code


    A7130_Config();   //config A7105 chip


    A7130_Cal();     //calibration IF,VCO,VCOC


}


 


initRF();


StrobeCmd(CMD_STBY);


A7130_WriteReg( IFCAL2_REG, 0xFF );     // 


A7130_WriteReg( TXTEST_REG, 0x37 );     //  TX power = 5dBm


A7130_WriteReg( MODECTRL_REG, 0x62 );   //  FIFO mode


A7130_WriteReg( PLL1_REG, 100 );        // set radio channel


A7130_WriteReg( CODE1_REG, 0x0F);       //  enable CRC check function


初始化A7130要Reset芯片,寫ID,配置,Cal校準(zhǔn),然后進(jìn)入STBY Mode,接下來設(shè)置發(fā)射功率等。上述的這些操作無非就是寫寄存器,最關(guān)鍵的一個(gè)函數(shù)當(dāng)然是A7130_WriteReg(Uint8 addr, Uint8 dataByte)。


 


void A7130_WriteReg(Uint8 addr, Uint8 dataByte)


{


    Uint8 i;


 


    SCS = 0;


    addr |= 0x00; //bit cmd=0,r/w=0


    for(i = 0; i < 8; i++)


    {


        if(addr & 0x80)


            SDIO = 1;


        else


            SDIO = 0;


 


        SCK = 1;


        _nop_();


        SCK = 0;


        addr = addr << 1;


    }


    _nop_();


 


    //send data byte


    for(i = 0; i < 8; i++)


    {


        if(dataByte & 0x80)


            SDIO = 1;


        else


            SDIO = 0;


 


        SCK = 1;


        _nop_();


        SCK = 0;


        dataByte = dataByte << 1;


    }


    SCS = 1;


}


里使用的是仿SPI的時(shí)序來寫寄存器,我們需要轉(zhuǎn)換為創(chuàng)研數(shù)字庫的形式,變成如下:


 


uint8_t SPI_SendByte(SPI_TypeDef *SPIx, uint8_t byte)


{


    /*!< Loop while DR register in not empty */


    while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET);


 


    /*!< Send byte through the SPI1 peripheral */


    SPI_I2S_SendData(SPIx, byte);


 


    /*!< Wait to receive a byte */


    while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET);


 


    /*!< Return the byte read from the SPI bus */


    return SPI_I2S_ReceiveData(SPIx);


}


 


void A7130_WriteReg(uint8_t addr, uint8_t dataByte)


{


    A7130_CS_LOW();


    addr |= 0x00;                    // bit6 write


    SPI_SendByte(SPI1, addr);        // locate register address for write


    SPI_SendByte(SPI1, dataByte);    // write data


    A7130_CS_HIGH();


}


當(dāng)然,還有個(gè)讀寄存器的函數(shù)


 


uint8_t A7130_ReadReg(uint8_t addr)


{


    uint8_t data;


    A7130_CS_LOW();


    addr |= 0x40;                      // bit6 read


    SPI_SendByte(SPI1, addr);


    data= SPI_SendByte(SPI1, 0xff);    // 0xff is dummy bytes


    A7130_CS_HIGH();


    return data;


}


注意讀寫寄存器的時(shí)候,要遵循數(shù)據(jù)包的格式進(jìn)行書寫


最終,我們將A7130的初始化和配置集成到一個(gè)函數(shù)A7130_Init(),然后我們調(diào)用A7130_ReadID()讀取ID,看讀出來的數(shù)據(jù)是不是與我們之前在RC_A7130_ReferenceCodeGenerator.exe中設(shè)置的一樣。


 


四、A7130數(shù)據(jù)傳輸


1、發(fā)送數(shù)據(jù)


1、設(shè)置FIFO大小;


2、重置FIFO指針;


3、選中芯片


4、定位到TX FIFO寄存器;


5、寫入數(shù)據(jù)到TX FIFO中;


6、取消選中;


7、發(fā)送數(shù)據(jù);


8、等待發(fā)送完畢。


按照這六個(gè)步驟,把數(shù)據(jù)寫入到TX FIFO中,A7130就會(huì)自動(dòng)把FIFO中的數(shù)據(jù)發(fā)送出去。


 


void A7130_WriteData(uint8_t data)


{


    A7130_WriteReg(FIFO1_REG, 64);        // setting FIFO length


    A7130_StrobeCmd(CMD_TFR);             // reset TX FIFO pointer             


 


    A7130_CS_LOW();                       // select chip


    SPI_SendByte(SPI1, FIFO_REG);         // locate TX FIFO


    SPI_SendByte(SPI1, data);             // write data into TX FIFO


    A7130_CS_HIGH();


    A7130_StrobeCmd( CMD_TX );            // transmit data from RF port


    while( A7130_isTxRxFinish() );        // wait until TX finished


}


2、接收數(shù)據(jù)


uint8_t A7130_ReadData(void)


{


    uint8_t data = 0;


    A7130_StrobeCmd(CMD_RX);        // in RX Mode


    while( A7130_isTxRxFinish() );  // wait until receieve finished


    A7130_CS_LOW();


    SPI_SendByte(SPI1, FIFO_REG | 0x40);  // locate RX FIFO


    data  = ARC_SPI_SendByte(SPI1, 0xff); // read data


    A7130_CS_HIGH();


    return data;


}


五、A7130擴(kuò)展


上述只是A7130的一些基本的操作,最終還是要根據(jù)項(xiàng)目來使用。為了保證數(shù)據(jù)的可靠傳輸,我們可以把發(fā)射功率設(shè)大,采用自動(dòng)應(yīng)答自動(dòng)重傳的機(jī)制進(jìn)行數(shù)據(jù)傳輸。為了讀寫速率,我們可以擴(kuò)展FIFO。當(dāng)然這些都要配置相關(guān)的寄存器來實(shí)現(xiàn)。A7130還提供了諸多功能,用戶可根據(jù)需要配置寄存器。


六、A7130總結(jié)


A7130在傳輸速度上已經(jīng)很快了,但是有點(diǎn)遺憾的是數(shù)據(jù)傳輸?shù)目煽啃圆桓?。?jīng)過驗(yàn)證,當(dāng)數(shù)據(jù)量大時(shí)或距離稍遠(yuǎn)時(shí)或者干擾較大,A7130的自動(dòng)應(yīng)答和自動(dòng)重傳并不如意。如果要保證數(shù)據(jù)的可靠性傳輸,需要用戶自己定義一種簡單的通信協(xié)議。但是如果數(shù)據(jù)量較小的情況下,可對(duì)該數(shù)據(jù)進(jìn)行編碼,然后再接收端進(jìn)行解碼。至于采用哪種編碼方式,需用戶根據(jù)自己的情況做出取舍。


二,技術(shù)規(guī)格:


Item


Specification


型號(hào)


A7139


工作電壓


3.3V-5V)


工作頻率


2400–2483.5MHz


可程式化發(fā)射功率


22dBm~26dBm


可程式化傳輸速率


2Mbps/6Mbps


調(diào)制模式


FSK/GFSK


工作電流


4uA@Sleepmode.


0.3mA@Idlemode.


2.7mA@Stand-byMode.

  12.5mA@PLLMode.

  31.3mA@Rxmode


發(fā)射功率


318mA@Txmode(Pout=22dBm)


接收靈敏度


-89dBm(typical)@4Mbpsmode,Dev=1MHz


機(jī)械尺寸


15mm(L)x21mm(W)x2.5mm(H)


工作溫度


-10~+60°C


 


本文網(wǎng)址:http://www.pzhtd.cn/news/638.html

相關(guān)標(biāo)簽:2.4GHz頻段的嬰兒監(jiān)控器

最近瀏覽:

相關(guān)產(chǎn)品:

相關(guān)新聞:

網(wǎng)站導(dǎo)航

18.png 網(wǎng)站首頁                          18.png 關(guān)于我們

18.png 產(chǎn)品中心                          18.png 聯(lián)系我們

聯(lián)系我們

電話:0755-85299996

手機(jī):13692246378 羅先生

郵 箱:lokiqi@qq.com

地 址:深圳寶安35區(qū)塘坊花園一巷19號(hào)東方鼎泰文創(chuàng)科技園212

image.png

Copyright ? http://www.pzhtd.cn/ 深圳市創(chuàng)研數(shù)字通訊有限公司 專業(yè)從事于FPV圖傳,電子內(nèi)窺鏡,無線車載方案, 歡迎來電咨詢!粵ICP備16059882號(hào)  Powered by 祥云平臺(tái)  技術(shù)支持:華企立方

熱推產(chǎn)品  |  主營區(qū)域: 深圳 上海 珠海 佛山 北京 廣州 山東 圖傳方案定制 無人機(jī)FPV圖傳 無線安防發(fā)射接收

在線客服
分享 一鍵分享
歡迎給我們留言
請(qǐng)?jiān)诖溯斎肓粞詢?nèi)容,我們會(huì)盡快與您聯(lián)系。
姓名
聯(lián)系人
電話
座機(jī)/手機(jī)號(hào)碼
郵箱
郵箱
地址
地址