找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 13339|回復(fù): 10
收起左側(cè)

QN8027資料與源碼匯總整理(調(diào)頻發(fā)射接收芯片)

  [復(fù)制鏈接]
ID:398460 發(fā)表于 2018-9-15 21:08 | 顯示全部樓層 |閱讀模式
0.png

0.jpg

文件列表:
QN8027資料匯總整理。
QN8025_27軟件硬件開發(fā)疑難解答FAQ V0 12.pdf
qn8027_m1.rar
QN8027_SANB Hardware Application Note_V_0 25_102209.pdf
QN8027_SANC_Datasheet_v1.1_041810.pdf
QN8027常見問題解答2011.pdf
正確的QN8027初始化程序20090723.pdf

調(diào)頻發(fā)射接收芯片QN8027的單片機(jī)源程序如下:
  1. #include "qndriver.h"

  2. extern UINT8 QND_ReadReg(UINT8 adr);
  3. extern UINT8 QND_WriteReg(UINT8 adr, UINT8 value);


  4. #define R_TXRX_MASK    0x20
  5. UINT8   qnd_Crystal = QND_CRYSTAL_DEFAULT;
  6. UINT8   qnd_PrevMode;
  7. UINT8   qnd_Country  = COUNTRY_CHINA ;
  8. UINT16  qnd_CH_START = 7600;
  9. UINT16  qnd_CH_STOP  = 10800;
  10. UINT8   qnd_CH_STEP  = 1;




  11. /**********************************************************************
  12. void QNF_SetRegBit(UINT8 reg, UINT8 bitMask, UINT8 data_val)
  13. **********************************************************************
  14. Description: set register specified bit

  15. Parameters:
  16.     reg:        register that will be set
  17.     bitMask:    mask specified bit of register
  18.     data_val:    data will be set for specified bit
  19. Return Value:
  20.     None
  21. **********************************************************************/
  22. void QNF_SetRegBit(UINT8 reg, UINT8 bitMask, UINT8 data_val)
  23. {
  24.     UINT8 temp;
  25.     temp = QND_ReadReg(reg);
  26.     temp &= (UINT8)(~bitMask);
  27.     temp |= data_val & bitMask;
  28. //    temp |= data_val;
  29.     QND_WriteReg(reg, temp);
  30. }

  31. /**********************************************************************
  32. UINT16 QNF_GetCh()
  33. **********************************************************************
  34. Description: get current channel frequency

  35. Parameters:
  36.     None
  37. Return Value:
  38.     channel frequency
  39. **********************************************************************/
  40. UINT16 QNF_GetCh()
  41. {
  42.     UINT8 tCh;
  43.     UINT8  tStep;
  44.     UINT16 ch = 0;
  45.     // set to reg: CH_STEP
  46.     tStep = QND_ReadReg(CH_STEP);
  47.     tStep &= CH_CH;
  48.     ch  =  tStep ;
  49.     tCh= QND_ReadReg(CH);   
  50.     ch = (ch<<8)+tCh;
  51.     return CHREG2FREQ(ch);
  52. }

  53. /**********************************************************************
  54. UINT8 QNF_SetCh(UINT16 freq)
  55. **********************************************************************
  56. Description: set channel frequency

  57. Parameters:
  58.     freq:  channel frequency to be set
  59. Return Value:
  60.     1: success
  61. **********************************************************************/
  62. UINT8 QNF_SetCh(UINT16 freq)
  63. {
  64.     // calculate ch parameter used for register setting
  65.     UINT8 tStep;
  66.     UINT8 tCh;
  67.     UINT16 f;
  68.         f = FREQ2CHREG(freq);
  69.         // set to reg: CH
  70.         tCh = (UINT8) f;
  71.         QND_WriteReg(CH, tCh);
  72.         // set to reg: CH_STEP
  73.         tStep = QND_ReadReg(CH_STEP);
  74.         tStep &= ~CH_CH;
  75.         tStep |= ((UINT8) (f >> 8) & CH_CH);
  76.         QND_WriteReg(CH_STEP, tStep);

  77.     return 1;
  78. }

  79. /**********************************************************************
  80. void QNF_SetAudioMono(UINT8 modemask, UINT8 mode)
  81. **********************************************************************
  82. Description:    Set audio output to mono.

  83. Parameters:
  84.   modemask: mask register specified bit
  85.   mode
  86.         QND_RX_AUDIO_MONO:    RX audio to mono
  87.         QND_RX_AUDIO_STEREO:  RX audio to stereo   
  88.         QND_TX_AUDIO_MONO:    TX audio to mono
  89.         QND_TX_AUDIO_STEREO:  TX audio to stereo
  90. Return Value:
  91.   None
  92. **********************************************************************/
  93. void QNF_SetAudioMono(UINT8 modemask, UINT8 mode)
  94. {
  95.     QNF_SetRegBit(SYSTEM2,modemask, mode);
  96. }

  97. /**********************************************************************
  98. int QND_Delay()
  99. **********************************************************************
  100. Description: Delay for some ms, to be customized according to user
  101.              application platform

  102. Parameters:
  103.         ms: ms counts
  104. Return Value:
  105.         None
  106.             
  107. **********************************************************************/
  108. void QND_Delay(UINT16 ms)
  109. {
  110.     UINT16 i,k;
  111.     for(i=0; i<3000;i++)
  112.     {   
  113.         for(k=0; k<ms; k++)
  114.         {

  115.         }
  116.     }
  117. }

  118. /**********************************************************************
  119. void QN_ChipInitialization()
  120. **********************************************************************
  121. Description: chip first step initialization, called only by QND_Init()

  122. Parameters:
  123.     None
  124. Return Value:
  125.     None
  126. **********************************************************************/
  127. void QN_ChipInitialization()
  128. {
  129.     // reset
  130.     QND_WriteReg(0x00,0x80);
  131.     QND_Delay(20);
  132.     //to be customized: change the crystal setting, according to HW design
  133.     //.........
  134.     //recalibration
  135.     QNF_SetRegBit(0x00,0x40,0x40);
  136.     QNF_SetRegBit(0x00,0x40,0x00);
  137.     QND_Delay(20);                //delay 20 ms
  138.     QND_WriteReg(0x18,0xe4);        //reset
  139.     QND_WriteReg(0x1b,0xf0);   
  140.     //Done chip recalibration
  141. }

  142. /**********************************************************************
  143. int QND_Init()
  144. **********************************************************************
  145. Description: Initialize device to make it ready to have all functionality ready for use.

  146. Parameters:
  147.     None
  148. Return Value:
  149.     1: Device is ready to use.
  150.     0: Device is not ready to serve function.
  151. **********************************************************************/
  152. UINT8 QND_Init()
  153. {
  154.     QN_ChipInitialization();
  155. //    QND_WriteReg(0x00,  0x01); //resume original status of chip /* 2008 06 13 */
  156.     return 1;
  157. }

  158. /**********************************************************************
  159. void QND_SetSysMode(UINT16 mode)
  160. ***********************************************************************
  161. Description: Set device system mode(like: sleep ,wakeup etc)
  162. Parameters:
  163.     mode:  set the system mode , it will be set by  some macro define usually:
  164.    
  165.     SLEEP (added prefix: QND_MODE_, same as below):  set chip to sleep mode
  166.     WAKEUP: wake up chip
  167.     TX:     set chip work on TX mode
  168.     RX:     set chip work on RX mode
  169.     FM:     set chip work on FM mode
  170.     AM:     set chip work on AM mode
  171.     TX|FM:  set chip work on FM,TX mode
  172.     RX|AM;  set chip work on AM,RX mode
  173.     RX|FM:    set chip work on FM,RX mode
  174. Return Value:
  175.     None     
  176. **********************************************************************/
  177. void QND_SetSysMode(UINT16 mode)
  178. {   
  179.     UINT8 val;
  180.     switch(mode)        
  181.     {        
  182.     case QND_MODE_SLEEP:                       //set sleep mode        
  183.         QNF_SetRegBit(SYSTEM1, R_TXRX_MASK, 0);
  184.         break;        
  185.     default:   
  186.             val = (UINT8)(mode >> 8);        
  187.             if (val)
  188.             {
  189.                 val = val >> 1;
  190.                 if (val & 0x20)
  191.                 {
  192.                     // set to new mode if it's not same as old
  193.                     if((QND_ReadReg(SYSTEM1) & R_TXRX_MASK) != val)
  194.                     {
  195.                         QNF_SetRegBit(SYSTEM1, R_TXRX_MASK, val);
  196.                     }
  197.                     // make sure it's working on analog output
  198.                     QNF_SetRegBit(SYSTEM1, 0x08, 0x00);   
  199.                 }
  200.             }   
  201.         break;        
  202.     }   
  203. }

  204. /**********************************************************************
  205. void QND_TuneToCH(UINT16 ch)
  206. **********************************************************************
  207. Description: Tune to the specific channel. call QND_SetSysMode() before
  208. call this function
  209. Parameters:
  210.     ch
  211.     Set the frequency (10kHz) to be tuned,
  212.     eg: 101.30MHz will be set to 10130.
  213. Return Value:
  214.     None
  215. **********************************************************************/
  216. void QND_TuneToCH(UINT16 ch)
  217. {
  218.     QNF_SetCh(ch);
  219. }

  220. /**********************************************************************
  221. void QND_SetCountry(UINT8 country)
  222. ***********************************************************************
  223. Description: Set start, stop, step for RX and TX based on different
  224.              country
  225. Parameters:
  226. country:
  227. Set the chip used in specified country:
  228.     CHINA:
  229.     USA:
  230.     JAPAN:
  231. Return Value:
  232.     None     
  233. **********************************************************************/
  234. void QND_SetCountry(UINT8 country)
  235. {
  236.     qnd_Country = country;
  237.     switch(country)
  238.     {
  239.     case COUNTRY_CHINA:
  240.         qnd_CH_START = 7600;
  241.         qnd_CH_STOP = 10800;
  242.         qnd_CH_STEP = 1;
  243.         break;
  244.     case COUNTRY_USA:
  245.         qnd_CH_START = 8810;
  246.         qnd_CH_STOP = 10790;
  247.         qnd_CH_STEP = 2;
  248.         break;
  249.     case COUNTRY_JAPAN:
  250.         break;
  251.     }
  252. }

  253. /**********************************************************************
  254. UINT8 QND_TXSetPower( UINT8 gain)
  255. **********************************************************************
  256. Description:    Sets FM transmit power attenuation.

  257. Parameters:
  258.     gain: The transmission power attenuation value, for example,
  259.           setting the gain = 0x13, TX attenuation will be -6db
  260.           look up table see below
  261. BIT[5:4]
  262.             00    0db
  263.             01    -6db
  264.             10    -12db
  265.             11    -18db
  266. BIT[3:0]    unit: db
  267.             0000    124
  268.             0001    122.5
  269.             0010    121
  270.             0011    119.5
  271.             0100    118
  272.             0101    116.5
  273.             0110    115
  274.             0111    113.5
  275.             1000    112
  276.             1001    110.5
  277.             1010    109
  278.             1011    107.5
  279.             1100    106
  280.             1101    104.5
  281.             1110    103
  282.             1111    101.5
  283. for example:
  284.   0x2f,    //111111    89.5
  285.   0x2e,    //111110    91
  286.   0x2d,    //111101    92.5
  287.   0x2c,    //111100    94
  288.   0x1f,    //111011 95.5
  289.   0x1e,    //111010 97
  290.   0x1d,    //111001 98.5
  291.   0x1c,    //111000 100
  292.   0x0f,    //001111    101.5
  293.   0x0e,    //001110    103
  294.   0x0d,    //001101    104.5
  295.   0x0c,    //001100    106
  296.   0x0b,    //001011    107.5
  297.   0x0a,    //001010    109
  298.   0x09,    //001001    110.5
  299.   0x08,    //001000    112
  300.   0x07,    //000111    113.5
  301.   0x06,    //000110    115
  302.   0x05,    //000101    116.5
  303.   0x04,    //000100    118
  304.   0x03,    //000011    119.5
  305.   0x02,    //000010    121
  306.   0x01,    //000001    122.5
  307.   0x00     //000000    124
  308. **********************************************************************/
  309. void QND_TXSetPower( UINT8 gain)
  310. {
  311.     UINT8 value = 0;
  312.     value |= 0x40;  
  313. ……………………

  314. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
8027資料.zip (1.9 MB, 下載次數(shù): 319)


回復(fù)

使用道具 舉報(bào)

ID:128989 發(fā)表于 2020-3-10 23:56 | 顯示全部樓層
很好的資料,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:496493 發(fā)表于 2020-5-23 18:20 | 顯示全部樓層
好,不錯(cuò),下來學(xué)習(xí)。樓主辛苦了!
回復(fù)

使用道具 舉報(bào)

ID:337950 發(fā)表于 2020-9-12 09:18 | 顯示全部樓層
正好用到,感謝樓主
回復(fù)

使用道具 舉報(bào)

ID:48994 發(fā)表于 2021-5-18 09:12 | 顯示全部樓層

不錯(cuò),正在用到這個(gè)芯片,下來學(xué)習(xí)。樓主辛苦了!
回復(fù)

使用道具 舉報(bào)

ID:673525 發(fā)表于 2021-12-22 09:27 | 顯示全部樓層
最近正好在搞這個(gè)芯片,感謝樓主的資料
回復(fù)

使用道具 舉報(bào)

ID:1003842 發(fā)表于 2022-1-30 20:31 | 顯示全部樓層
最近項(xiàng)目要用,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:996292 發(fā)表于 2022-5-28 21:45 | 顯示全部樓層
多謝樓主,非常好的資料,謝了�。�!
回復(fù)

使用道具 舉報(bào)

ID:333156 發(fā)表于 2022-8-28 19:39 | 顯示全部樓層
正在找這個(gè)資料,感謝LZ!
回復(fù)

使用道具 舉報(bào)

ID:1043739 發(fā)表于 2022-9-4 09:39 | 顯示全部樓層
你好,QN8027壓縮包里面的文件有變量缺失,請(qǐng)發(fā)一份完整的,謝謝。
回復(fù)

使用道具 舉報(bào)

ID:457471 發(fā)表于 2025-2-28 18:19 | 顯示全部樓層
感謝分享 學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表