FMR设计指南
- 格式:doc
- 大小:118.50 KB
- 文档页数:5
A:软件部分 1. 时钟的设置,针对不同的平台如何修改时钟设置,正弦波与方波的选择与硬件参数的配合
answer:在qndriver.h文件中,已经对各种时钟频率做了定义,选用时,把宏定义打开即可。如下图:
在初始化程序里面,需要对时钟源的波形做选择,有正弦波和方波,视具体的时钟频率波形而定。一般来说,与MCU共用时钟晶体的电路接法,选用正弦波的参数设置,具体设置如下: “QND_DIGITAL_CLOCK代表方波,具体参数是0x80;QND_SINE_WAVE_CLOCK代表正弦波,具体参数是0x00。” 设置时,把对应的参数填入初始化函数中对应的语句即可。
硬件电路需要注意:如果接入的时钟源是 正弦波,需要外接耦合电容约56pf,如果接入的时钟源是 方波,则不需要接电容,或者直接0ohm电阻替换电容的位置。详细请查看硬件电路图。
注意:FMR不能单独外接晶体! 2. 各个关键函数的用途,比如初始化,手动调台,自动搜台(包括搜台阀值的设定)具体对应哪些函数
answer:初始化,手动调台(播放),设置搜台阀值,自动搜台
3. 函数使用的流程 answer: 初始化QND_Init() -> 设置模式QND_SetSysMode(QND_MODE_RX|QND_MODE_FM);或者QND_WriteReg(0x00,0x11) -> 手动设置频点QND_TuneToCH(8980),为89.8MHz。 如果此时能听到89.8MHz的电台声,说明FM已通讯成功并能正常工作。客户在测试时,可以选用当地的强台来检测。
4. 搜台函数的使用 answer: 1,设置搜台门限QND_RXSetTH();2,开始搜台QND_RXValidCH(当前要判断的频点) 在搜台函数上层做个频点递增(递减)的循环,比如目前是87.5MHz,判断完后,+/-100KHz,变成87.6MHz,再送进函数QND_RXValidCH(当前频点)做判断 即可实现搜台。如下: 87.5MHz -> QND_RXSetTH() - > QND_RXValidCH(8750) - > 得到判断结果(返回1为真台,返回0为假台) -> 递增频率到87.6MHz -> QND_RXSetTH()…… 如此循环,直到108.0MHz,结束搜台。
5. 搜台阀值设置,包括ifcount, snr rssi值的各种组合配搭与搜台数目的影响 answer: 在搜台过程中,搜台阀值的设定在很大程度上影响搜台的效果,具体设置如下: 在函数QND_RXSetTH()中, A,值在0x01~0x05的可选范围,值越大,搜台越多; B,值在+0~+10的范围,值越大,搜台越少; C,值在8~11的范围,值越大,搜台越少。
如果用户的机器板子干扰很大,可以考虑用“立体声搜台”的方式,具体做法是:在宏定义中打开,驱动程序会相应使用立体声的判台方式。 使用立体声方式做搜台时,如上的参数设置方法一样有效。 B:PCB layout 1, FM 铺地的讲究 Answer:FM芯片各个GND直接相连到IC底部的GND焊盘,然后再打孔连到主地。 FM底部一定要铺地,不能穿插任何的信号线,而且地的面积越大越好。
2, 各种信号线(包括I2C VCC XCLK RFI)的走线与铺地 Answer:FM有一些关键的信号线,如VCC,I2C,XCLK,RFI,这些信号线相互之间不能紧挨着,不能交叉,要铺GND做隔离。 I2C线,XCLK线上下左右都要良好包GND,走线要平直不能交叉,不能靠近电源,和其他强信号线,更不能横穿FM 底部。 VCC线要加滤波电容,有条件的话,在滤波电容之前加磁珠。滤波电容和磁珠都要靠近FM放置。 RFI 即天线,在板子上的走线越短越好,尽量靠近天线接口,例如耳机座,远离干扰源。
3, FM的整体布局 Answer:FM的整体布局要合理,远离MCU,FLASH,LCD排线,PA等强干扰源,遇到大屏机器,最好把FM放到屏的背面,并远离屏的排线,最好把屏的金属壳也做接地处理。
4, 天线的位置 Answer:天线的位置最好靠板子边缘,铺GND做隔离,注意:天线走线要与GND保持3mm的距离。尽量靠近天线接口 如耳机座,远离干扰源。
参考PCBlayout图 C:硬件设计 1. 时钟电路的设计与接法,包括独立晶体时钟电路与共用晶体电路 Answer:FMR不能采用直接单独接晶体的方式,一般设计采用与MCU共用时钟晶体,或者MCU I/O产生时钟源信号供给FM。如果不考虑成本,也可以采用有缘晶体。 虽然FM不能单独接晶体,但考虑到一些客户的特殊性,我们可以提供晶体起振电路的设计原理图,需要时请联系我司技术人员。
2. 音频输出的接法 及对音量大小的影响 Answer:FM音频输出的有效电压大概是330mV左右,而且驱动能力稍弱,如果直接从FM的ARO/ALO直接输出到耳机,声音会显小,建议,ARO/ALO通过MCU或者功放再到耳机。
驱动函数有对音量做设置的函数,见,0~47级。 对于要求不同分级音量的客户,可自行做调整。
3. 电源部分的接法 Answer:VCC -> 磁珠(2K@100MHz) ->滤波电容(10uF) -> 滤波电容(0.1uF) -> FM vcc
这些器件都要靠近FM 放置。 4. 天线匹配电路的接法 Answer:一般天线接法:RFI -> 100pf(串联) -> 330nH电感(串联) -> ANT 如下图:
或者:RFI -> 100pf(串联) -> 180nH电感(并联下地) ->ANT 如下图:
短天线(磁环天线)接法:RFI -> 100pf(串联) ->1.2pf(并联下地) -> 330nH电感(串联) ->3.3pf(并联下地) –> ANT 如下图:
5. INT脚 的取舍 Answer:INT pin是FM 的备选功能脚,在设计电路时可悬空。关于该pin的用法,可以查看datasheet。 D:I2C通讯 1. I2C的读写地址 Answer:FM采用的是标准I2C协议。 写协议:start -> 设备地址(0x20) -> 寄存器地址 -> data -> stop 读协议:start -> 设备地址(0x20) -> 寄存器地址 -> stop -> start ->设备地址(0x21) -> data -> stop
2. QN8035的ID值及对应的寄存器检测 Answer:在开始调试FM时,首先检查I2C通讯是否成功,可以在FM初始化读06h寄存器,如果读取的值是0x84,那么说明能识别到FM,否则,请检查I2C通讯。
3. I2C不能正常通讯时需要检查的地方 Answer:在刚开始调试时非常容易遇到I2C不能正常通讯的情况,检测方式如下: 1,检查I2C设备是否有复用,地址是否有冲突,FM的I2C写地址是0x20,读地址是0x21; 2,检查I2C连线是否正确,是否有上拉电阻(包括MCU内部的IO 上拉),把上拉电阻调小,也会有较明显的作用,一般4.7K的上拉电阻最合适; 3,用示波器检查I2C的时序,此时 尝试往07h(可读写寄存器)写任意数再读出来,用示波器观察,看是 “写” 出现问题还是 “读” 出现问题; 4,调整I2C的传输速率,FM的速率最高可到400KHz,一般100Khz就可以了; 5, 尝试在I2C线上串联两个小电阻或者磁珠; 6, 如果是飞线调试,可让 连接线 尽量短,用粗线,并且多接几根地线。
E: 常见问题 1. 在听电台时,会发现声音很“闷”,走动或者摆动天线时,声音忽大忽小
Answer:在“qndriver.h”文件中找到,然后对HCCSTART_VAL参数赋值18,或者比18稍小的值即可。 目前v1.8及后续版本的驱动程序已经解决了该问题。 2. 搜到电台后,切换台时,会出现“扑哧”的杂音
Answer: 在“qndriver.c”文件中,找到函数,该函数末尾有unmute的操作,要去掉“扑哧”的杂音,可以在ummute操作之前增加延迟时间,一般需要300~500ms的延迟。 如果ARO/ALO是经过MCU做处理,可以在MCU层再做mute的处理,也可以去掉该“扑哧”的杂音。
3. 搜台数目不稳定,时多时少 Answer:首先明确一点,FM信号本身就不是稳定信号,存在电台数目偏差是正常的,正常的电台数目偏差范围在2~3个有效电台左右。 如果电台数目偏差很多,要查看是否存在不清晰的电台或者假台;查看FM附近是否有干扰源,如烙铁或者其他发射器;检查在测试时,天线是否变换了方向和位置,等等这些都是造成电台数目变化的因素。
4. 搜台有偏差100KHz的假台 Answer:这种现象可以描述为,搜台出现相邻的电台。 首先要检查时钟是否准确,FM要求时钟偏差范围在50ppm以内,越精确越好。对于有偏差的时钟信号,可以通过调整晶体的谐振电容,让频率更精确。 其次,要查看驱动程序中的延迟时间,要求是精确到ms的延迟单位,否则会导致FM对电台的校验机制
不准确。也可以尝试调整代码的参数,在函数中,修改AGC的稳定时间,代码里面有参数可以选择,分别是10~60ms,增加该时间也会有一定的帮助,但会影响搜台速度。
5. 搜台存在较多声音不清晰的假台 Answer:检查PCB layout,重点在FM各个信号线,如VCC I2C XCLK, RFI等,这些信号线是否做了良好的处理,可查看“PCB LAYOUT”的描述。 出现这种情况可以用示波器做检测,查看各个信号脚是否有干扰产生的杂波,比如程序上没有处理好的检测脉冲,这种情况最容易出现在I2C线上。