【开源】Si4703调频收音机

前不久接到一个任务,要求用Arduino做一个小玩意,而且需要方便初学者制作PCB和焊接。作为一个通信人,我的脑海中闪现的第一个东西就是带DSP的收音机。在网上找了一下,国外有现成的模块了,芯片方案是Silicon Labs的Si4703,资料很齐全。后来又发现淘宝上有其早期版本,除了电源针脚定义与最新版的不同,其它都一样。就这么愉快地做决定了。

 

功能特性:

  • 接收范围76MHz~108MHz,支持粗调(1MHz步进)和细调(0.1MHz步进)
  • 带信号强度指示
  • 带立体声状态指示
  • 支持向上、向下搜台
  • 支持音量调节
  • 使用Micro-USB接口供电,工作电流约31mA

Si4703的Arduino库来自于GitHub,然而用着不太符合自己的需求和习惯,最后还是改了不少地方。I2C时钟频率提高到了400kHz(经测量,上升时间符合要求),另外针对调谐和搜台过程中I2C总线未保持静默的问题进行了改进。

由于Si4703模块只能工作在3.3V电压条件下,而且其I/O口只能承受3.3V电平,所以整个系统统一使用3.3V电源供电。根据Atmega328的手册,3.3V供电时最高时钟频率不建议超过13.333MHz,然而为了兼容Arduino UNO官方引导程序和库函数,这里超频使用了Atmega328,而不是使用低频率晶体或是系统时钟预分频器。

本板基本引出了所有I/O。在向Atmega328烧录引导程序后可以通过CH340串口板向本板烧录用户程序。可以将CH340的DTR引出并连接到本板的TP29以免在烧录程序时需手动复位本板。

这回用到的液晶是和上次用的液晶预留的负压发生电路同样使用的是7660芯片,但是对比度调压脚的连接方法不一样。上次用的液晶的第三脚直接连到负压发生电路的电阻分压输出端,可以外接电阻调压。这回的连法不宜通过外接电阻调节对比度(外接电阻调压可达到调整对比度的效果,但会造成7660没有接地,消耗电流会高达几十毫安),需要悬空液晶第三脚,断开J1,接通J2、J3,将负压输出端串接的0Ω电阻改为7.5kΩ,液晶工作电流约4mA(其中背光电流2mA)。

外壳是3D打印的。考虑到PLA的强度和外壳壁厚,安装孔就不设计为沉头孔了。给液晶做了个边框,边框与上盖是用洗板水粘接的。

 

附件(原理图、光绘文件、源代码、外壳图纸)

 

posted @ 2018-04-28 13:29  elysium  阅读(3903)  评论(0编辑  收藏  举报