数码之家

 找回密码
 立即注册
搜索
查看: 17177|回复: 42

[C51] 改进和分享个2.4G数传IC库——国产带自动应答的廉价芯片LT8920

[复制链接]
发表于 2019-4-7 01:32:38 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近打算给大门外走廊增加几个人体红外热释电监控,上淘宝搜罗2.4G模块,想着买几个NRF24L01才发现价格都上去了。

好吧,你涨价我就用别的,现在国产IC便宜量又足,N76E003、CH55×都有了,我就不信找不到个2.4G的芯片。

逛了一圈,发现LT8920还不错,上某商城买几片,附上12M晶振,刚好包邮。
价格.png

收到货翻开资料一看又傻眼,这数据手册太简单了!翻遍百度文库、Github终于搞定自动应答的发送和接收,各种艰辛按下不表。
把TSSOP16的芯片焊到TSSOP20转接板,然后面包板出动,插上杜邦线。天线就随便弄根导线顶着用。
原型.jpg
淘宝找到的库是各种坑爹,GitHub也不靠谱。
最后在百度文库搜到了厂家技术支持的资料,才明白这芯片主要供货给遥控直升机玩具厂商。
而且这厂家技术人员还帮人看PCB!
厂家文档.png
更惊悚的是,这芯片可以用i2c,加上reset共3个控制管脚。。。。太省事了。但是我用惯了nRF24L01,还是用SPI吧。源码来了:

为了资持N76,我这次放出来的源码也是N76的。
首先是头文件,用法也写在头文件里了,看最后的注释:
  1. #ifndef N73E003_HEADERS
  2. #define N73E003_HEADERS
  3. #include "N76E003.h"
  4. #include "SFR_Macro.h"
  5. #include "Function_define.h"
  6. #include "Common.h"
  7. #include "Delay.h"
  8. #endif


  9. #define _DEBUG_LT8920

  10. #ifdef _DEBUG_LT8920
  11. void debugPrt(UINT8 data1);
  12. void debugPrtLn(UINT8 data1);
  13. void debugPrtStr(UINT8 * strPtr);
  14. #endif

  15. /*
  16. LT8920  nRF24   STM8S003F                        N76E003
  17. SPI                SPI                SPI                                        SPI
  18. RESET   csn     GPIOA,GPIO_PIN_2    P17
  19. SS      ce      GPIOA,GPIO_PIN_1        P30
  20. */

  21. #define lt8920_delay_us(x) Timer3_Delay10us(x/20<1?1:x/20)
  22. #define lt8920_delay_ms(x) Timer3_Delay10us(x*100)

  23. #define _LT8920_GPIO_RST  GPIOA,GPIO_PIN_2
  24. #define _LT8920_GPIO_SS   GPIOA,GPIO_PIN_1
  25. #define _LT8920_RST_set lt8920_delay_us(10);P17=1
  26. #define _LT8920_RST_reset P17=0;lt8920_delay_us(10)
  27. #define _LT8920_SS_set lt8920_delay_us(10);P30=1
  28. #define _LT8920_SS_reset P30=0;lt8920_delay_us(10)
  29. #define Dummy_Byte 0xFF

  30. void LT8920_peri_init(void);
  31. UINT8 LT8920_SPI_transfer(UINT8 sendByte);
  32. void SPI_WriteReg(unsigned char addr, unsigned char H, unsigned char L);
  33. void SPI_ReadReg(unsigned char addr , unsigned char * regData);
  34. void LT8920_prt_reg(UINT8 regNum);
  35. void LT8920_init();
  36. void LT8920_startListening();
  37. UINT8 LT8920_waitPKT();
  38. UINT8 LT8920_recvData(UINT8 * buf2rcv);
  39. UINT8 LT8920_sendData(UINT8 * buf2send, UINT8 bufsize);

  40. /*
  41. //send example
  42. UINT8 data2send[32] = {0} ;
  43. UINT8 flag = 0  ;
  44. while(flag == 0 ){
  45.         flag = LT8920_sendData( (UINT8 *)data2send , 32 ) ;
  46. }


  47. //recv example
  48. UINT8 data2rcv[32] = {0};
  49. UINT8 flag = 0 ;
  50. LT8920_startListening();
  51. LT8920_waitPKT();
  52. while(flag == 0){
  53.         flag = LT8920_recvData( (UINT8 *)data2rcv ) ;
  54. }
  55. */
复制代码


然后是C文件:
  1. #include "lt8920.h"
  2. void LT8920_peri_init(void)
  3. {
  4.   P07_PushPull_Mode;
  5.   P07=1;
  6.   P17_PushPull_Mode;
  7.   P30_PushPull_Mode;
  8.         set_P1SR_7;
  9.         set_P3SR_0;
  10.   P10_Quasi_Mode;                            // P10(SPCLK) Quasi mode
  11.         set_P1SR_0;
  12.   P00_Quasi_Mode;                            // P00 (MOSI) Quasi mode
  13.         set_P0SR_0;
  14.   P01_Quasi_Mode;                            // P22 (MISO) Quasi mode   
  15.   set_DISMODF;                                // SS General purpose I/O ( No Mode Fault )
  16.   clr_SSOE;
  17.   clr_LSBFE;                                  // MSB first         
  18.   clr_CPOL;                                   // The SPI clock is low in idle mode

  19.   set_CPHA;                                   // The data is sample on the second edge of SPI clock
  20.   set_MSTR;                                   // SPI in Master mode
  21.   SPICLK_DIV2;                                // Select SPI clock
  22.   set_SPIEN;                                  // Enable SPI function
  23.   clr_SPIF;
  24. }
  25. UINT8 LT8920_SPI_transfer(UINT8 sendByte){
  26.   UINT8 rcvByte = 0 ;
  27.   
  28.         SPDR = sendByte ;
  29.         //lt8920_delay_us(1);
  30.         while(!(SPSR & SET_BIT7));
  31.         clr_SPIF;
  32.        
  33.   rcvByte = SPDR ;
  34.   return rcvByte ;
  35. }

  36. void SPI_WriteReg(UINT8 addr, UINT8 H, UINT8 L)
  37. {
  38.   _LT8920_SS_reset;
  39.   LT8920_SPI_transfer(addr);
  40.   LT8920_SPI_transfer(H);
  41.   LT8920_SPI_transfer(L);
  42.   _LT8920_SS_set;
  43. }
  44. void SPI_ReadReg(UINT8 addr , UINT8 * regData){       
  45.   //reg[0] : regH
  46.   //reg[1] : regL
  47.   _LT8920_SS_reset;
  48.   //lt8920_delay_us(1);
  49.   addr |= 0x80;                    //when reading a Register,the Address should be added with 0x80.
  50.   LT8920_SPI_transfer(addr);
  51.   //lt8920_delay_us(1);
  52.   regData[0] = LT8920_SPI_transfer(Dummy_Byte);
  53.   //lt8920_delay_us(1);
  54.   regData[1] = LT8920_SPI_transfer(Dummy_Byte);
  55.   //lt8920_delay_us(1);
  56.   _LT8920_SS_set;
  57.   //lt8920_delay_us(1);
  58. }

  59. #ifdef _DEBUG_LT8920
  60.        
  61. void debugPrt(UINT8 data1){
  62.         UINT8 prtChar = '0' ;
  63.        
  64.   if(data1/16 < 10){
  65.     prtChar += data1/16 ;
  66.   }else{
  67.     prtChar = data1/16-10 + 'A' ;
  68.   }
  69.   Send_Data_To_UART0(prtChar);
  70.   
  71.   if(data1%16 < 10){
  72.     prtChar = '0' + data1%16 ;
  73.   }else{
  74.     prtChar = data1%16-10 + 'A' ;
  75.   }  
  76.   Send_Data_To_UART0(prtChar);
  77.   Send_Data_To_UART0(',');
  78. }

  79. void debugPrtLn(UINT8 data1){
  80.         debugPrt(data1);
  81.   Send_Data_To_UART0('\r');
  82.   Send_Data_To_UART0('\n');
  83. }

  84. void debugPrtStr(UINT8 * strPtr){
  85.         UINT8 ii = 0 ;
  86.         for(; ii < 250 && strPtr[ii] != '\0'; ii++){
  87.                 Send_Data_To_UART0(strPtr[ii]);
  88.         }
  89. }

  90. #endif


  91. void LT8920_prt_reg(UINT8 regNum){
  92.   UINT8 regData[2] = {0};
  93.         UINT8 str2prt[] =  "print reg " ;
  94.   SPI_ReadReg(regNum , (UINT8 *)regData) ;   
  95.   
  96.   #ifdef _DEBUG_LT8920
  97.         debugPrtStr( (UINT8 * )str2prt ) ;
  98.   debugPrt(regNum) ;
  99.   Send_Data_To_UART0(':');
  100.   debugPrt(regData[0]);
  101.   debugPrtLn(regData[1]);
  102.         #endif
  103. }
  104. void LT8920_init(){  //LT8920 init start
  105.   UINT8 regData[2] = {0} ;
  106.   //SPI_LT8920_Init();
  107.   _LT8920_RST_reset;//LT8920_RST_LOW();
  108.   lt8920_delay_ms(2);
  109.   _LT8920_RST_set;//LT8920_RST_HIGH();
  110.   lt8920_delay_ms(5);
  111.   //  LT8920_PKT_OUT =1;
  112.   //SPI_WriteReg( 0, 0x6f, 0xef );
  113.   SPI_WriteReg( 0, 0x6f, 0xe0 );
  114.   SPI_WriteReg( 1, 0x56, 0x81 );
  115.   SPI_WriteReg( 2, 0x66, 0x17 );
  116.   SPI_WriteReg( 4, 0x9c, 0xc9 );
  117.   SPI_WriteReg( 5, 0x66, 0x37 );
  118.   //SPI_WriteReg( 7, 0x00, 0x00 );                //channel is 2402Mhz //改频道写这里
  119.   SPI_WriteReg( 8, 0x6c, 0x90 );
  120.   //SPI_WriteReg( 9, 0x18, 0x40 );                //PA Power
  121.   SPI_WriteReg( 9, 0x48, 0x40 );                //PA Power try max power !!!!
  122.        
  123.   SPI_WriteReg(10, 0x7F , 0xfd) ;              //Crystal enable
  124.   /*
  125.   check write result
  126.   SPI_ReadReg( 10 , (UINT8 *)regData ) ;
  127.   while( regData[0] != 0x7F || regData[1] != 0xfd ){
  128.     SPI_WriteReg(10, 0x7F , 0xfd) ;
  129.     SPI_ReadReg(10 , (UINT8 *)regData ) ;
  130.   }*/
  131.   SPI_WriteReg(11, 0x00, 0x08 );                //RSSI enable
  132.   SPI_WriteReg(12, 0x00, 0x00 );
  133.   SPI_WriteReg(13, 0x48, 0xbd );
  134.   SPI_WriteReg(22, 0x00, 0xff );
  135.   SPI_WriteReg(23, 0x80, 0x05 );
  136.   SPI_WriteReg(24, 0x00, 0x67 );
  137.   SPI_WriteReg(25, 0x16, 0x59 );
  138.   SPI_WriteReg(26, 0x19, 0xe0 );
  139.   SPI_WriteReg(27, 0x13, 0x00 );
  140.   SPI_WriteReg(28, 0x18, 0x00 );
  141.   //  reg 32  [15:13]preamble len [12:11]syncword len [10:8]trailer len [7:6]dataPacketType  [3:1]brclk   
  142.   //                 010 3bytes          01 32bites         000 4bits        00 NRZ law data      low
  143.   SPI_WriteReg(32, 0x48, 0x00 );        //8920在62.5kbps下同步头只能是32或16bit
  144.   SPI_WriteReg(33, 0x3f, 0xc7 );        //packet sequence
  145.   SPI_WriteReg(34, 0x20, 0x00 );        //packet sequence
  146.   //SPI_WriteReg(35, 0x05, 0x00 );        //auto ack and reties 重发次数4次
  147.   SPI_WriteReg(35, 0x0F, 0x00 );        //auto ack and reties 重发次数15次
  148.   SPI_WriteReg(36, 0x03, 0x80 );        //unique sync word 1
  149.   SPI_WriteReg(37, 0x03, 0x80 );        //2
  150.   SPI_WriteReg(38, 0x5a, 0x5a );        //3
  151.   SPI_WriteReg(39, 0x03, 0x80 );        //4
  152.   SPI_WriteReg(40, 0x44, 0x01 );        //FIFO flag  2102??
  153.   //reg 41 [15]crc_on [13]pkg_len_en [12]fw_term_tx [11]auto_ack
  154.   //           1 crc     1               1              1
  155.   SPI_WriteReg(41, 0xb8, 0x00 );        //CRC is ON; scramble is OFF; AUTO_ACK is ON   0000??
  156.   SPI_WriteReg(42, 0xfd, 0xb0 );        //等待RX_ACK时间 176us
  157.   SPI_WriteReg(43, 0x00, 0x0f );        //scan rssi
  158.   //reg 44 [15:8]data rate
  159.   //             01:1M 10:62k5
  160.   SPI_WriteReg(44, 0x10, 0x00 );        //data rate 62.5k
  161.   SPI_WriteReg(45, 0x05, 0x52 );        //
  162.   SPI_WriteReg(50, 0x00, 0x00 );
  163.   lt8920_delay_ms(100);
  164. }
  165. void LT8920_startListening(){
  166.   SPI_WriteReg(7, 0x00, 0x00);  //设定模式 //接收的频道是第3个参数的0~6共7位比特
  167.   SPI_WriteReg(52, 0x80, 0x80); //清空 RXTX
  168.   SPI_WriteReg(7, 0x00, 0x80);        //接收模式
  169.   lt8920_delay_us(20);
  170. }
  171. UINT8 LT8920_waitPKT(){ //相当于发送完成、接收成功的终端
  172.   //wait PKT
  173.   //send done or recv done
  174.   UINT8 regData[2] = {0};
  175.   SPI_ReadReg(48,(UINT8 * )regData);
  176.   while( (regData[1] & 0x40) <= 0 ){
  177.     SPI_ReadReg(48 ,(UINT8 * )regData );
  178.   }
  179.         return 0 ;
  180. }
  181. UINT8 LT8920_recvData(UINT8 * buf2rcv){
  182.   //return len of data when success
  183.   //return 0 when fail
  184.   UINT8 regData[2] = {0} ;
  185.   UINT8 idx = 0 ;
  186.         UINT8 len ;
  187.   SPI_ReadReg(50, (UINT8 *)regData );
  188.   len = regData[0] ;
  189.   while(idx +1 < len){
  190.     SPI_ReadReg(50, (UINT8 *)regData );
  191.     buf2rcv[idx++]=regData[0] ;
  192.     buf2rcv[idx++]=regData[1] ;
  193.     if( idx >= 64) break ;
  194.   }
  195.   SPI_ReadReg(48, (UINT8 *)regData ); //test CRC
  196.   if(( regData[0] &0x80)==0){//检查CRC是否正确
  197.     //CRC right
  198.     //UINT8 str2prt[] =  "CRC correct .. " ;
  199.     //debugPrtStr( (UINT8 * )str2prt ) ;
  200.     //for(UINT8 ii = 0 ; ii < 31 ; ii ++ )debugPrt( data2rcv[ii] ) ;
  201.     //debugPrtLn(data2rcv[32]) ;
  202.     return len ;
  203.   }else{
  204.     //UINT8 str2prt[] =  "CRC fail .. " ;
  205.     //debugPrtStr( (UINT8 * )str2prt ) ;
  206.     //for(UINT8 ii = 0 ; ii < 31 ; ii ++ )debugPrt( data2rcv[ii] ) ;
  207.     //debugPrtLn(data2rcv[32]) ;
  208.     return 0 ;
  209.   }
  210. }
  211. UINT8 LT8920_sendData(UINT8 * buf2send, UINT8 bufsize){
  212.   //return 1 when success
  213.   //return 0 when fail
  214.         UINT8 idx ;
  215.   UINT8 regData[2] ={0};
  216.         UINT8 pos ;
  217.   SPI_WriteReg(7, 0x00, 0x00);      //设定模式
  218.   SPI_WriteReg(52, 0x80, 0x80);     //清空接收、发送FIFO数据
  219.   //SPI_WriteReg(50, 2,0);          //发送数据长度
  220.   
  221.   pos = 0 ;
  222.   //SPI_WriteReg(50 , 32 ,  data2send[pos++]) ;
  223.   SPI_WriteReg(50 , 32 , 0 ) ; //发送32个字节,先把长度写在第2个参数
  224.   for(idx = 0 ;idx < bufsize / 2 ; idx ++ ) { //然后把32个字节的数据都传进去
  225.     SPI_WriteReg(50 , buf2send[idx*2] , buf2send[idx*2+1] ) ;
  226.   }
  227.   //LT8920_prt_reg(7);
  228.   //SPI_WriteReg(7, 0x01, 0x08);   //发送
  229.   SPI_WriteReg(7, 0x01, 0x00);
  230.   //LT8920_prt_reg(7);
  231.   
  232.   //wait until PKT_FLAG become 1
  233.   LT8920_waitPKT();
  234.   
  235.   SPI_ReadReg(52 , (UINT8 *)regData );
  236.   //LT8920_prt_reg(52);
  237.   //reg 52 [13:8]FIFO_WR_PTR [5:0]FIFO_RD_PTR
  238.   if( ( regData[0] & 0x3F) == 0 ){ //收到对方的自动应答后,返回1
  239.     //auto ack received
  240.     return 1 ;
  241.   }
  242.   return 0 ;
  243. }
复制代码




调通后打开久违的AD10画板,拼板,发给PCB厂家。
说个插曲,某大厂业务大概是嫌我抠,我同款拼板发过去,楞是给我加上50费用。找业务一通问,又等了大半天,业务大妈晃悠悠发个图给我,要我把尺寸改大了再批。改完重新上传,审单的又说这个那个费,仅比刚才便宜1元!:huffy:业务大妈和审单大爷合伙欺负人啊这是。说好的特价原来只存在于网站首页宣传栏~厂大欺人!
本来PCB打样也没多大技术含量吧,贵厂宣传做得好客户多就傲娇,那我何必给自己找不痛快,赶紧论坛里找一家。
同款拼板不加钱,10×10打5片也是30,一样包邮,做出来质量也不错,上图给大伙瞧瞧
打样正面.jpg 打样背面.jpg

拼板,1.5×2的小板,拼出来是35块一大板,一共175块:lol:。哪位大兄弟有兴趣可以私信我,送一些。
同款拼.jpg


焊板,插上测试。这个芯片还有个好处,外围只需要2个电容、1个晶振和1根任意长度的导线。对的,不需要画PCB天线。
对比我之前的nRF24L01芯片,LT8920非常好伺候。传输距离也差不多。我画板还特意画成nRF24模块引脚兼容。
成品图片:
焊接后.jpg


简单地说这个芯片可以替代nRF24L01,只是程序要调整。
好了,感谢大家看完我的罗嗦长文。


打赏

参与人数 13家元 +310 收起 理由
人艰不拆了 + 20
jf201006 + 20 謝謝分享
亚历山大 + 20 認真發帖
qrut + 10 優秀文章
hmqhhl + 20 優秀文章
jmshyhyc + 20 優秀文章 不明觉厉啊
2n3055 + 20 優秀文章
200birds + 20
2545889167 + 20
wjxhone + 10 謝謝分享

查看全部打赏

发表于 2019-4-7 01:43:11 来自手机浏览器 | 显示全部楼层
谢谢楼主分享

打赏

参与人数 1家元 +6 收起 理由
tempchar + 6

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-4-7 10:27:20 | 显示全部楼层
感谢楼主分享。有意思的东西,话说通讯速率能到多少?

打赏

参与人数 1家元 +20 收起 理由
tempchar + 20 测试最低速率62.5Kbps能每秒发100次32字节.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-4-7 18:50:13 | 显示全部楼层
某宝有bk2425模块,不到2元钱,和2401兼容

点评

2425便宜是便宜,可是传输距离不长,我们公司拿它传输高品质音频,几米就断了,非要加一个射频PA芯片距离才远。  详情 回复 发表于 2019-4-17 13:02
可运费要12元呀。  详情 回复 发表于 2019-4-7 19:23
回复 支持 反对

使用道具 举报

发表于 2019-4-7 19:23:15 | 显示全部楼层
forgetall 发表于 2019-4-7 18:50
某宝有bk2425模块,不到2元钱,和2401兼容

可运费要12元呀。

打赏

参与人数 1家元 +10 收起 理由
tempchar + 10 bk2425的设计和指标都像nrf24l01,榜上大牌.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-4-8 18:16:22 | 显示全部楼层
请问楼主打板的链接能不能分享一下

点评

https://www.mydigit.cn/forum.php?mod=viewthread&tid=21469 我也是在论坛里看到的,你看看这个帖  详情 回复 发表于 2019-4-8 18:32
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 18:32:08 | 显示全部楼层
bg4rff 发表于 2019-4-8 18:16
请问楼主打板的链接能不能分享一下

https://www.mydigit.cn/forum.php?mod=viewthread&tid=21469
我也是在论坛里看到的,你看看这个帖

点评

谢谢,我试试看  详情 回复 发表于 2019-4-8 22:48
回复 支持 反对

使用道具 举报

发表于 2019-4-8 22:30:14 | 显示全部楼层
话说这玩意传输距离能有多少?另外资料lz能共享一下么。最近在玩TI的cc2500。感觉信号质量不咋地

点评

随便焊了导线天线,直线传输距离有20米左右。淘宝有人卖同款芯片的模块,标称200米  详情 回复 发表于 2019-4-9 08:21
回复 支持 反对

使用道具 举报

发表于 2019-4-8 22:48:01 | 显示全部楼层
tempchar 发表于 2019-4-8 18:32
https://www.mydigit.cn/forum.php?mod=viewthread&tid=21469
我也是在论坛里看到的,你看看这个帖 ...

谢谢,我试试看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-9 08:21:41 | 显示全部楼层
guansm 发表于 2019-4-8 22:30
话说这玩意传输距离能有多少?另外资料lz能共享一下么。最近在玩TI的cc2500。感觉信号质量不咋地 ...

随便焊了导线天线,直线传输距离有20米左右。淘宝有人卖同款芯片的模块,标称200米
回复 支持 反对

使用道具 举报

发表于 2019-4-9 11:10:28 | 显示全部楼层
收发都是用这个芯片吗

点评

对 收和发就是分别往寄存器里写不同值  详情 回复 发表于 2019-4-9 15:57
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-9 15:57:33 | 显示全部楼层
kkstun 发表于 2019-4-9 11:10
收发都是用这个芯片吗


收和发就是分别往寄存器里写不同值

点评

这是好东西。收藏学习了。 以后做遥控成本降低了。  详情 回复 发表于 2019-4-9 16:35
回复 支持 反对

使用道具 举报

发表于 2019-4-9 16:35:17 | 显示全部楼层
tempchar 发表于 2019-4-9 15:57

收和发就是分别往寄存器里写不同值

这是好东西。收藏学习了。 以后做遥控成本降低了。
回复 支持 反对

使用道具 举报

发表于 2019-4-9 19:04:35 来自手机浏览器 | 显示全部楼层
主要是I2C接口好,这样搭配15L104单片机可以做个超小型的遥控接受板,自带电调的那种。
回复 支持 反对

使用道具 举报

发表于 2019-4-11 10:58:31 | 显示全部楼层
谢谢老铁分享, 需要PCB可以联系我哦

打赏

参与人数 1家元 +20 收起 理由
tempchar + 20 谢谢老铁支持

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-4-17 10:25:54 | 显示全部楼层
有点好奇,晶振不用接电容,可以直接用吗

点评

芯片内置了 22pF 的电容  详情 回复 发表于 2019-4-17 10:55
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-17 10:55:43 | 显示全部楼层
kkstun 发表于 2019-4-17 10:25
有点好奇,晶振不用接电容,可以直接用吗

芯片内置了 22pF 的电容

点评

这么说就太方便了。  详情 回复 发表于 2019-4-17 12:34
回复 支持 反对

使用道具 举报

发表于 2019-4-17 12:34:28 | 显示全部楼层
tempchar 发表于 2019-4-17 10:55
芯片内置了 22pF 的电容

这么说就太方便了。
回复 支持 反对

使用道具 举报

发表于 2019-4-17 13:02:47 | 显示全部楼层
forgetall 发表于 2019-4-7 18:50
某宝有bk2425模块,不到2元钱,和2401兼容

2425便宜是便宜,可是传输距离不长,我们公司拿它传输高品质音频,几米就断了,非要加一个射频PA芯片距离才远。
回复 支持 反对

使用道具 举报

发表于 2019-4-18 12:46:04 | 显示全部楼层
感谢楼主分享好东西呀
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-28 23:08 , Processed in 1.216802 second(s), 29 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表