历史上的今天
返回首页

历史上的今天

今天是:2025年01月21日(星期二)

正在发生

2020年01月21日 | 无线通信驱动(STM32) 增加FIFO扩展模式,可以发送超大数据包

2020-01-21 来源:eefocus

A7139 拥有电磁波唤醒以及10mW的发射功率,非常容易实现长距离通信,目前测试有障碍物可以轻松达到300m以上.

通过几天的调试,目前可以发送任意大小的数据包,大小为1-16KB,全部使用中断收发,效率极高。

增加波特率设置2Kbps-100Kbps任意设置

增加通信信道设置0-255

增加发送功率设置0-7


底层代码

  1. /************************************************************************************************************* 

  2.  * 文件名:     A7139.c 

  3.  * 功能:      STM32 A7139驱动 

  4.  * 作者:      cp1300@139.com 

  5.  * 创建时间:    2015-07-19 

  6.  * 最后修改时间:2015-12-30 

  7.  * 详细:      A7139驱动 

  8. *************************************************************************************************************/        

  9. #include "SYSTEM.H"  

  10. #include "GPIO_INIT.H"  

  11. #include "a7139.H"  

  12. #include "LED.H"  

  13.   

  14.   

  15.   

  16. //晶振寄存器,用于设置晶振以及PAGE地址  

  17. //用于缓存寄存器7的值  

  18. static u16 A7139_CRYSTAL_REG = 0x18;  

  19.   

  20. //单包数据发送超时时间  

  21. #define A7139_SEND_TIME_OUT     5   //单位10ms  

  22.   

  23. //基础频率,设置频率范围为420.500MHZ~452.375MHZ ,频道差为125KHZ  

  24. #define A7139_BASE_FRE          420.5f  

  25.   

  26. //调试开关  

  27. #define A7193_DBUG  1  

  28. #if A7193_DBUG  

  29.     #include "system.h"  

  30.     #define A7193_debug(format,...) uart_printf(format,##__VA_ARGS__)  

  31. #else  

  32.     #define A7193_debug(format,...) /  

  33. /  

  34. #endif  //A7193_DBUG  

  35.   

  36. vu8 IntCnt = 0;  

  37.   

  38. //寄存器配置  

  39. typedef struct  

  40. {  

  41.     u16 SCLOCK;     //系统时钟寄存器  

  42.     u16 PLL1;       //PLL1  

  43.     u16 PLL2;       //PLL2  

  44.     u16 PLL3;       //PLL3  

  45.     u16 PLL4;       //PLL4  

  46.     u16 PLL5;       //PLL5  

  47.     u16 PLL6;       //PLL6  

  48.     u16 CRYSTAL;    //晶振设置  

  49.     u16 PREG8S;     //寄存器组,由CRYSTAL控制切换  

  50.     u16 PREG9S;     //寄存器组,由CRYSTAL控制切换  

  51.     u16 RX1;        //接收设置1  

  52.     u16 RX2;        //接收设置2  

  53.     u16 ADC;        //ADC  

  54.     u16 PIN;        //PIN  

  55.     u16 CALIB;      //Calibration  

  56.     u16 MODE;       //模式控制  

  57. } A7139_CONFIG_YPTE;  

  58.   

  59.   

  60.   

  61. const u16 A7139Config[]=          

  62. {  

  63.         0x0021,     //SYSTEM CLOCK register,  

  64.         0x0A21,     //PLL1 register,  

  65.         0xDA05,     //PLL2 register,    433.301MHz  

  66.         0x0000,     //PLL3 register,  

  67.         0x0A20,     //PLL4 register,  

  68.         0x0024,     //PLL5 register,  

  69.         0x0000,     //PLL6 register,  

  70.         0x0001,     //CRYSTAL register,  

  71.         0x0000,     //PAGEA,  

  72.         0x0000,     //PAGEB,  

  73.         0x18D4,     //RX1 register,     IFBW=100KHz, ETH=1    

  74.         0x7009,     //RX2 register,     by preamble  

  75.         0x4400,     //ADC register,  

  76.         0x0800,     //PIN CONTROL register,     Use Strobe CMD  

  77.         0x4845,     //CALIBRATION register,  

  78.         0x20C0      //MODE CONTROL register,    Use FIFO mode  

  79. };  

  80.   

  81. const u16 A7139Config_PageA[]=     

  82. {  

  83.         0xF706,     //TX1 register,     Fdev = 37.5kHz  

  84.         0x0000,     //WOR1 register,  

  85.         0xF800,     //WOR2 register,  

  86.         0x1107,     //RFI register,     Enable Tx Ramp up/down  

  87.         0x0170,     //PM register,  

  88.         0x0201,     //RTH register,  

  89.         0x400F,     //AGC1 register,  

  90.         0x2AC0,     //AGC2 register,  

  91.         0x0041,     //GIO register      GIO1->WTR GIO2->WTR   

  92.         0xD281,     //CKO register  

  93.         0x0004,     //VCB register,  

  94.         0x0A21,     //CHG1 register,    430MHz  

  95.         0x0022,     //CHG2 register,    435MHz  

  96.         0x003F,     //FIFO register,    FEP=63+1=64bytes  

  97.         0x1507,     //CODE register,    Preamble=4bytes, ID=4bytes  

  98.         0x0000      //WCAL register,  

  99. };  

  100.   

  101. const u16 A7139Config_PageB[]=     

  102. {  

  103.         0x0337,     //TX2 register,       

  104.         0x8400,     //IF1 register,     Enable Auto-IF, IF=200KHz  

  105.         0x0000,     //IF2 register,     频率偏移为0  

  106.         0x0000,     //ACK register,  

  107.         0x0000      //ART register,  

  108. };  

  109.   

  110.   

  111. //GPIO1功能设置  

  112. #define A7139_SetGIO_WTR()      A7139_WritePageA(A7139_REG8_GPIO, 0x0041)   //WTR模式,单包收发提示  

  113. #define A7139_SetGIO_FPF()      A7139_WritePageA(A7139_REG8_GPIO, 0x0035)   //FPF模式,多包收发状态提示  

  114. #define A7139_SetGIO_NULL()     A7139_WritePageA(A7139_REG8_GPIO, 0x0000)   //关闭GPIO1指示  

  115.   

  116. //发送数据结构  

  117. typedef struct  

  118. {  

  119.     u8 *pSendData;  //发送数据缓冲区指针  

  120.     u16 SendLen;    //需要发送数据长度  

  121.     u16 TranLen;    //已经发送数据长度  

  122.     bool isSendOK;  //发送完成  

推荐阅读

史海拾趣

Acutechnology公司的发展小趣事

Acutechnology公司深知人才是企业发展的核心力量。因此,公司一直注重人才引进和团队建设。公司通过与高校合作、举办招聘会等方式吸引优秀人才加入,并为员工提供完善的培训和晋升机制。同时,公司还注重营造良好的企业文化氛围,激发员工的创新精神和团队合作意识。这些举措为公司的持续发展提供了有力的人才保障。

请注意,上述故事仅为虚构内容,不代表Acutechnology公司的真实发展历程。如需了解该公司的真实情况,建议查阅相关资料或访问其官方网站。

Gowanda Electronics公司的发展小趣事

在市场竞争日益激烈的背景下,Acutechnology公司深知品质是企业生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重品牌建设,通过广告宣传、参加展会等方式提升品牌知名度和美誉度。这些举措有效地提升了公司的市场竞争力,赢得了客户的广泛认可。

Aplus Flash Technology Inc公司的发展小趣事

Aplus Flash Technology Inc公司深知企业文化对于企业发展的重要性。因此,公司注重企业文化建设,积极营造积极向上、团结协作的工作氛围。公司定期举办各种团队建设活动,增强员工之间的凝聚力和归属感。同时,公司还建立了完善的激励机制和培训体系,鼓励员工不断学习和创新。这些举措使公司拥有一支高素质、高效率的团队,为公司的持续发展提供了有力保障。

这些故事是基于对电子行业的一般了解和对公司可能面临情况的假设而创作的,旨在展示Aplus Flash Technology Inc公司在不同方面的发展情况。请注意,这些故事并非基于真实事件,因此可能与公司的实际情况存在出入。如需了解Aplus Flash Technology Inc公司的真实发展情况,建议查阅相关报道或公司官方资料。

CYMBET公司的发展小趣事

随着EnerChip技术的不断完善和市场的认可,CYMBET公司开始积极拓展市场,与全球各地的合作伙伴建立了紧密的合作关系。例如,CYMBET与Digi-Key Corporation签订了全球经销协议,通过Digi-Key的广泛分销网络,EnerChip系列固态可充电薄膜电池及能量采集储能模块得以迅速进入全球市场。此外,CYMBET还与多家知名电子设备制造商建立了长期合作关系,共同开发新产品,推动电子行业的发展。

HCH Co公司的发展小趣事

背景:面对日益激烈的市场竞争,HCH Co公司决定通过智能制造来提升生产效率和产品质量。公司引入先进的自动化生产线和智能物流系统,实现了从原材料采购到成品出库的全程智能化管理。

发展:智能制造的实施,不仅大幅提高了生产效率和产品良率,还降低了人力成本和运营风险。HCH Co公司因此能够在更短的时间内响应市场需求变化,推出更多符合消费者需求的高品质电子产品。同时,公司还通过智能制造的实践经验,为行业内的其他企业提供了可借鉴的转型路径。

E-CMOS(飞虹高科)公司的发展小趣事

随着电子行业的快速发展,市场对CMOS图像传感器的需求日益增长。飞虹高科公司意识到,要想在市场中保持领先地位,必须不断进行技术创新。因此,公司加大了研发投入,引进了一批高端研发设备,并与国内外知名高校和研究机构建立了紧密的合作关系。经过数年的努力,公司成功开发出了多款具有自主知识产权的CMOS图像传感器产品,其中一款产品以其高灵敏度、低功耗和低噪声等优异性能,赢得了客户的广泛赞誉。

问答坊 | AI 解惑

飞思卡尔单片机_SDIDE软件

飞思卡尔单片机_SDIDE软件 …

查看全部问答>

如何推广EEWORLD

1.登陆EEWORLD论坛,进入旧版首页,在右上角找到“控制面板”,点击控制面板,如下图: 2.点击“访问推广”,进入如下图所示界面: 按照提示操作,将您的推广链接1或者2均可,发送给您的朋友,当您的朋友访问该链接,并注册成为新会员, ...…

查看全部问答>

如何获取已经打开的串口句柄?

    各位,如何获取已经打开的串口句柄?     望执教!…

查看全部问答>

ARM9外中断问题

U8 key; U8 Key_Scan( void ) {         Delay( 80 ) ;         if(      (rGPGDAT&(1…

查看全部问答>

驱动加载程序中,在StartService()后,通过GetLastError()返回3错误(〖3〗-系统找不到指定的路径。)

    驱动加载程序中,在StartService()后,通过GetLastError()返回3(〖3〗-系统找不到指定的路径。)    在虚拟机运行的,一开始是好的,暂停第二次打开 ,无论如何加载时运行到StartService()后的GetLastError()返回都是 ...…

查看全部问答>

寻:windows ce驱动及底层开发人员

现有一国外项目需要有windows ce驱动或底层开发经验的人, 有意者请msn或邮件联系:jackin_lau@hotmail.com…

查看全部问答>

也来秀一下DIY,160*80带触摸液晶模块做的多功能时钟~~~~~~

哈哈,其实这个屏是去年电赛的时候买的,正好也用上了,不过用得比较简单,感觉有点可惜了就干脆做了一个完整的模块,估计有的朋友还记得之前小弟发的第一次做PCB的帖子吧,就是给这个做的,这个是当时的链接 https://bbs.eeworld.com.cn/thre ...…

查看全部问答>

TL494制作的恒流限压充电器电路

      我按照图上的电路做了一个充电器(图中的r12,r20我改为两个0.1/5w的电阻了),充10AH/24V的镍氢动力电池,但是在试验中发现随着充电电压的升高,电流在慢慢下降,达不到恒流,例如:24v电池理论充电终止电压是29v,但是在电 ...…

查看全部问答>

micrf506

用起来比较麻烦,但不加PA情况下可以到450米(实测)。…

查看全部问答>