久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: LT8910驅動程序(無線發送和接受源碼) [打印本頁]

作者: zubingming    時間: 2018-5-16 15:50
標題: LT8910驅動程序(無線發送和接受源碼)
官方提供的LT8910驅動程序,需要的朋友拿去參考參考


LT8920 是一款低成本,高集成度的 2.4GHZ 的無線收發芯片。是之前LT8910的升級版!
外圍射頻電路簡單,直接接天線

包括射頻前端和數字基帶的單芯片解決方案:
※ 支持跳頻
※ 支持 SPI 和 I2C 接口
※ 內置 auto_ack 功能
※ 數據率 1Mbps, 250Kbps, 125Kbps, 62.5Kbps
※ 極低功耗(1uA)
※ 支持信號能量檢測
※ 單芯片傳輸距離 200 米
※ TSSOP16 的封裝

單片機源程序如下:
  1. #include "intrins.h"
  2. #include "IIC_Drive.h"
  3. #include "LCD_Drive.h"
  4. #include "Interrupt.h"
  5. #include "SPI.h"

  6. #define SPI_TEST

  7. #define RX_MODE     0x80
  8. #define SLEEP_MODE  0x40
  9. #define AFTER_SLEEP 0x20


  10. unsigned char *p_rx_sum;
  11. unsigned char working_state = RX_MODE;              // working state

  12. unsigned char rssivalue = 0;

  13. unsigned char channel_index[79] = {0x00, 0x01, 0x02,
  14.                                                                    0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,                           //2402, 2412, 2422, 2432
  15.                                                                    0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
  16.                                                                    0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
  17.                                                                    0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
  18.                                                                    0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34,
  19.                                                                    0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
  20.                                                                    0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
  21.                                                                    0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f};

  22. void main(void)
  23. {
  24.         unsigned char rx_sum = 0;                                                           //接收次數累加器
  25.         unsigned char highReg = 0;
  26.         unsigned char lowReg  = 0;

  27.         unsigned char channelvalue = 0;
  28.        

  29.         p_rx_sum = &rx_sum;                     //指向累加器的指針

  30.         LCD_Initialize();
  31.         LCD_WriteCommand(0x80);
  32.         LCD_WriteDat(0xf6);                                  //''
  33.         LCD_WriteCommand(0x8c);
  34.         LCD_WriteDat(0x43);                                                //'C'
  35.         LCD_WriteDat(0x48);                                                //'H'
  36.         LCD_WriteDat(bcd_table[(channelvalue+2)/10]);
  37.         LCD_WriteDat(bcd_table[(channelvalue+2)%10]);

  38.         LCD_WriteCommand(0xc0);
  39.         LCD_WriteDat(0x72);                                          //'r'
  40.         LCD_WriteDat(0x73);                                           //'s'
  41.         LCD_WriteDat(0x73);                                           //'s'
  42.         LCD_WriteDat(0x69);                                          //'i'           means rssi
  43.         LCD_WriteDat(bcd_table[rssivalue/10]);
  44.         LCD_WriteDat(bcd_table[rssivalue%10]);

  45.         Timer0_Init();
  46.         //EX0_Init();
  47.         EA = 1;

  48. #ifdef SPI_TEST
  49.         RST  = 0;
  50.         Delay_ms(2);
  51.         RST  = 1;
  52.         Delay_ms(5);
  53.         PKT = 1;
  54.         LT8900_Init();
  55.         SPI_ReadReg(4);
  56.         if (RegH==0x9c && RegL==0xc9)
  57.         {
  58.                 LED_SPI = 0;
  59.         }

  60.         while (1)
  61.         {
  62.                 switch(working_state)
  63.                 {
  64.                 case RX_MODE:
  65.                                         //rssivalue = 0;
  66.                                         SPI_WriteReg( 7, 0x00, 0x00);
  67.                                         SPI_WriteReg(52, 0x80, 0x80);
  68.                                         EX0 = 0;
  69.                                         SPI_WriteReg( 7, 0x00, 0x80+channelvalue);                          //TX Enable & channel set to 2480M
  70.                                         EX0 = 1;
  71.                                 //        while(PKT);
  72.                                         do
  73.                                         {
  74.                                                 SPI_ReadReg(48);
  75.                                         }
  76.                                         while(RegL & 0x40);

  77.                                         SPI_WriteReg( 7, 0x00, 0x00);                          //goto idle mode
  78.                                         SPI_ReadReg(48);
  79.                                         if(!(RegH & 0x80))
  80.                                         {
  81.                                                 LED_RF = ~LED_RF;
  82.                                                 SPI_ReadReg(50);
  83.                                                 if (RegH==0x03 && RegL==0xce)
  84.                                                         rx_sum++;                                                          //RX 累加器加一
  85.                                                 if (RegH==0x01)
  86.                                                 {
  87.                                                                
  88.                                                         channelvalue = RegL;                  //switch to channel RegL
  89.                                                        
  90.                                                         LCD_WriteCommand(0x8e);
  91.                                                         LCD_WriteDat(bcd_table[(channelvalue+2)/10]);
  92.                                                         LCD_WriteDat(bcd_table[(channelvalue+2)%10]);
  93.                                                 }

  94.                                                 SPI_ReadReg(6);                                                                //get rssi_value
  95.                                                 RegH &= 0xfc;
  96.                                                 rssivalue = RegH>>2;
  97.                                                 LCD_WriteCommand(0xc4);
  98.                                                 LCD_WriteDat(bcd_table[rssivalue/10]);
  99.                                                 LCD_WriteDat(bcd_table[rssivalue%10]);
  100.                                                 rssivalue = 0;       
  101.                                         }
  102.                                         break;
  103.                                        

  104.                 case SLEEP_MODE:
  105.                                                 SPI_WriteReg(35, 0x43, 0x00);
  106.                                                 SPI_SS = 1;
  107.                                                 LCD_WriteCommand(0xc0);
  108.                                                 LCD_WriteDat(0x7a);
  109.                                                 working_state = AFTER_SLEEP;
  110.                                                 break;
  111.                 case AFTER_SLEEP:
  112.                                                 _nop_();
  113.                                                 break;
  114.                 default : break;
  115.                                                
  116.                 }       
  117.         }

  118. #else
  119.         MOSI = 0;               // A4 =0
  120.         RST  = 0;
  121.         Delay_ms(2);
  122.         RST  = 1;
  123.         Delay_ms(5);
  124.         PKT = 1;
  125.         RF_Init();
  126.         IIC_ReadReg( 4, &highReg, &lowReg);
  127.         if (highReg==0x9c && lowReg==0xc9)
  128.         {
  129.                 LED_IIC = 0;
  130.         }

  131.         while (1)
  132.         {
  133.                 IIC_WriteReg(52, 0x80, 0x80);
  134.                 IIC_WriteReg( 7, 0x00, 0xb0);                          //TX Enable & channel set to 2450M
  135.                 /*while(PKT);*/
  136.                 do
  137.                 {
  138.                         SPI_ReadReg(48);
  139.                 }
  140.                 while(RegL & 0x40);

  141.                 IIC_WriteReg( 7, 0x00, 0x00);                          //goto idle mode
  142.                 IIC_ReadReg(48, &highReg, &lowReg);
  143.                 if(!(highReg & 0x80))
  144.                 {
  145.                         rx_sum++;                                                          //RX 累加器加一
  146.                         LED_RF = ~LED_RF;
  147.                 }
  148.          }
  149.          
  150. #endif


  151.        
  152.         /*
  153.         LCD_WriteCommand(0x80);
  154.         LCD_WriteDat(0x32);                                  //'2'
  155.         LCD_WriteDat(0x34);                                  //'4'
  156.         LCD_WriteDat(0x35);                                  //'5'
  157.         LCD_WriteDat(0x30);                                  //'0'
  158.         LCD_WriteDat(0xa5);                                  //'.'
  159.         */

  160.        

  161.        

  162.                 /*
  163.                 if(rx_lcd_flag == 50)
  164.                 {
  165.                         LCD_WriteCommand(0x04);                                        // turn left
  166.                          LCD_WriteCommand(0x8f);
  167.                          LCD_WriteDat(0x7f);                                   //'<'
  168.                 }
  169.                 if(rx_lcd_flag == 100)
  170.                 {
  171.                          LCD_WriteDat(0x7f);
  172.                 }
  173.                 if(rx_lcd_flag == 150)
  174.                 {
  175.                          LCD_WriteDat(0x7f);
  176.                 }
  177.                 if(rx_lcd_flag == 200)
  178.                 {
  179.                          LCD_WriteDat(0x7f);
  180.                 }
  181.                 if(rx_lcd_flag >= 250)
  182.                 {
  183.                          rx_lcd_flag = 0;
  184.                         LCD_WriteCommand(0x06);                                                        //寫入新數據后 光標右移一位
  185.                         LCD_WriteDat(0xa0);
  186.                         LCD_WriteDat(0xa0);
  187.                         LCD_WriteDat(0xa0);
  188.                         LCD_WriteDat(0xa0);
  189.                         //LCD_WriteCommand(0x06);
  190.                 }
  191.                 */
  192.        
  193. }
  194. ……………………

  195. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
LT8910驅動程序.rar (142.91 KB, 下載次數: 143)





作者: FENGJLONG    時間: 2019-3-26 01:42
學習了!謝謝分享!!!
作者: YOUTHFUL    時間: 2019-5-22 01:01
學習了!謝謝分享!!!
作者: small_tiger09    時間: 2019-12-21 23:41
不錯,感謝分享!
作者: ALISWANG    時間: 2020-5-14 09:42
下載學習
作者: tuner520    時間: 2020-6-27 16:08
感謝分享!下載學習




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲免费视频播放 | 日韩精品一区二区三区中文字幕 | 精品日韩电影 | 久久免费观看视频 | 一级片免费视频 | 亚洲黄色一级 | 综合久久综合久久 | 国产精品一区久久久 | 免费国产视频 | 国产精品成人一区二区三区吃奶 | 国产欧美视频一区二区三区 | 色综合一区二区三区 | 久久成人av电影 | 欧美国产日本一区 | 激情网五月天 | www.日韩 | 亚洲网在线 | 99久久精品国产一区二区三区 | 成人一区在线观看 | 久久av一区 | 伊人久久精品一区二区三区 | 午夜一区二区三区在线观看 | 亚洲国产精品福利 | 国产精品久久久久久久久久久久午夜片 | 国产伦精品一区二区 | 国产人成精品一区二区三 | 国产精品美女久久久久aⅴ国产馆 | 国产成人精品综合 | 国产一区二区免费 | 97高清国语自产拍 | 欧美一区二区三区 | 91视频网 | 狠狠骚| 一区二区三区免费 | 国产精品久久久久一区二区三区 | www国产成人免费观看视频,深夜成人网 | 午夜激情在线视频 | 国产精品自产拍在线观看蜜 | 亚洲中午字幕 | 草草草草视频 | 日日夜夜精品视频 |