A7139 無線通信驅(qū)動(dòng)(STM32) 增加FIFO擴(kuò)展模式
掃描二維碼
隨時(shí)隨地手機(jī)看文章
A7139 擁有電磁波喚醒以及10mW的發(fā)射功率,非常容易實(shí)現(xiàn)長距離通信,目前測試有障礙物可以輕松達(dá)到300m以上.
通過幾天的調(diào)試,目前可以發(fā)送任意大小的數(shù)據(jù)包,大小為1-16KB,全部使用中斷收發(fā),效率極高。
增加波特率設(shè)置2Kbps-100Kbps任意設(shè)置
增加通信信道設(shè)置0-255
增加發(fā)送功率設(shè)置0-7
底層代碼
/*************************************************************************************************************
*文件名:A7139.c
*功能:STM32A7139驅(qū)動(dòng)
*作者:cp1300@139.com
*創(chuàng)建時(shí)間:2015-07-19
*最后修改時(shí)間:2015-12-30
*詳細(xì):A7139驅(qū)動(dòng)
*************************************************************************************************************/
#include"SYSTEM.H"
#include"GPIO_INIT.H"
#include"a7139.H"
#include"LED.H"
//晶振寄存器,用于設(shè)置晶振以及PAGE地址
//用于緩存寄存器7的值
staticu16A7139_CRYSTAL_REG=0x18;
//單包數(shù)據(jù)發(fā)送超時(shí)時(shí)間
#defineA7139_SEND_TIME_OUT5//單位10ms
//基礎(chǔ)頻率,設(shè)置頻率范圍為420.500MHZ~452.375MHZ,頻道差為125KHZ
#defineA7139_BASE_FRE420.5f
//調(diào)試開關(guān)
#defineA7193_DBUG1
#ifA7193_DBUG
#include"system.h"
#defineA7193_debug(format,...)uart_printf(format,##__VA_ARGS__)
#else
#defineA7193_debug(format,...)/
/
#endif//A7193_DBUG
vu8IntCnt=0;
//寄存器配置
typedefstruct
{
u16SCLOCK;//系統(tǒng)時(shí)鐘寄存器
u16PLL1;//PLL1
u16PLL2;//PLL2
u16PLL3;//PLL3
u16PLL4;//PLL4
u16PLL5;//PLL5
u16PLL6;//PLL6
u16CRYSTAL;//晶振設(shè)置
u16PREG8S;//寄存器組,由CRYSTAL控制切換
u16PREG9S;//寄存器組,由CRYSTAL控制切換
u16RX1;//接收設(shè)置1
u16RX2;//接收設(shè)置2
u16ADC;//ADC
u16PIN;//PIN
u16CALIB;//Calibration
u16MODE;//模式控制
}A7139_CONFIG_YPTE;
constu16A7139Config[]=
{
0x0021,//SYSTEMCLOCKregister,
0x0A21,//PLL1register,
0xDA05,//PLL2register,433.301MHz
0x0000,//PLL3register,
0x0A20,//PLL4register,
0x0024,//PLL5register,
0x0000,//PLL6register,
0x0001,//CRYSTALregister,
0x0000,//PAGEA,
0x0000,//PAGEB,
0x18D4,//RX1register,IFBW=100KHz,ETH=1
0x7009,//RX2register,bypreamble
0x4400,//ADCregister,
0x0800,//PINCONTROLregister,UseStrobeCMD
0x4845,//CALIBRATIONregister,
0x20C0//MODECONTROLregister,UseFIFOmode
};
constu16A7139Config_PageA[]=
{
0xF706,//TX1register,Fdev=37.5kHz
0x0000,//WOR1register,
0xF800,//WOR2register,
0x1107,//RFIregister,EnableTxRampup/down
0x0170,//PMregister,
0x0201,//RTHregister,
0x400F,//AGC1register,
0x2AC0,//AGC2register,
0x0041,//GIOregisterGIO1->WTRGIO2->WTR
0xD281,//CKOregister
0x0004,//VCBregister,
0x0A21,//CHG1register,430MHz
0x0022,//CHG2register,435MHz
0x003F,//FIFOregister,FEP=63+1=64bytes
0x1507,//CODEregister,Preamble=4bytes,ID=4bytes
0x0000//WCALregister,
};
constu16A7139Config_PageB[]=
{
0x0337,//TX2register,
0x8400,//IF1register,EnableAuto-IF,IF=200KHz
0x0000,//IF2register,頻率偏移為0
0x0000,//ACKregister,
0x0000//ARTregister,
};
//GPIO1功能設(shè)置
#defineA7139_SetGIO_WTR()A7139_WritePageA(A7139_REG8_GPIO,0x0041)//WTR模式,單包收發(fā)提示
#define A7139_SetGIO_FPF() A7139_WritePageA(A7139_REG8_GPIO, 0x0035) //FPF模式,多包收發(fā)狀態(tài)提示