找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10960|回复: 9
打印 上一主题 下一主题
收起左侧

QN8027资料与源码汇总整理(调频发射接收芯片)

  [复制链接]
跳转到指定楼层
楼主




文件列表:
QN8027资料汇总整理。
QN8025_27软件硬件开发疑难解答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

调频发射接收芯片QN8027的单片机源程序如下:
  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. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
8027资料.zip (1.9 MB, 下载次数: 292)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:128989 发表于 2020-3-10 23:56 | 只看该作者
很好的资料,学习了
回复

使用道具 举报

板凳
ID:496493 发表于 2020-5-23 18:20 | 只看该作者
好,不错,下来学习。楼主辛苦了!
回复

使用道具 举报

地板
ID:337950 发表于 2020-9-12 09:18 | 只看该作者
正好用到,感谢楼主
回复

使用道具 举报

5#
ID:48994 发表于 2021-5-18 09:12 | 只看该作者

不错,正在用到这个芯片,下来学习。楼主辛苦了!
回复

使用道具 举报

6#
ID:673525 发表于 2021-12-22 09:27 | 只看该作者
最近正好在搞这个芯片,感谢楼主的资料
回复

使用道具 举报

7#
ID:1003842 发表于 2022-1-30 20:31 | 只看该作者
最近项目要用,谢谢分享
回复

使用道具 举报

8#
ID:996292 发表于 2022-5-28 21:45 | 只看该作者
多谢楼主,非常好的资料,谢了!!!
回复

使用道具 举报

9#
ID:333156 发表于 2022-8-28 19:39 | 只看该作者
正在找这个资料,感谢LZ!
回复

使用道具 举报

10#
ID:1043739 发表于 2022-9-4 09:39 | 只看该作者
你好,QN8027压缩包里面的文件有变量缺失,请发一份完整的,谢谢。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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