| 本篇文章将主要介绍使用Si4844-A10模拟调谐无线电接收器和Arduino开发板制作成一个全功能的多频段收音机。 
 使用单芯片收音机的想法很吸引人。这个想法对我来说特别有意思,因为坦率地说,我羡慕与制作无线电接收器有关的模拟技巧。当我浏览该领域的电路文献时,我遇到了Silicon Labs系列。他们的一个芯片,Si4844-A10引起了我的注意。该接收器具有AM / FM / SW功能,具有所有的铃声,可与微处理器配合使用。最重要的是,所需的支持组件主要与微处理器显示和控制功能相关,只需要少量的天线支持。我忍不住冒险尝试一下。 
 基本电路 
  
 上图显示了接收器的基本电路,原理图改编自Silicon Labs Si4844数据手册和应用笔记。我使用的是便携式AM / FM收音机的回收铁氧体回路作为所需的AM天线。我认为更高质量和更大的铁氧体将是一种改进。 Q1是SW / AM的放大器,我在该部分也使用了回收的伸缩天线。值得注意的是,上面链接的设计指南为天线组件提供了几种替代方案和不同方法。 
 可变电阻器(VR1)是一个关键部件,因为它将用于调节接收器频率 - 调谐旋钮。建议使用高质量的线性电位计。对于音频输出,我选择使用一套退役台式电脑的“经济”放大扬声器。当然,也可以使用简单的立体声放大器。电路板上的所有内容均为3.3v,所有GND均已连接。 
 结构中最困难的部分可能是芯片的SSOP-24外形尺寸。如果您没有使用SMT IC的经验和设备,使用载板可能是完成任务的最简单方法。我有一个SSOP-28载板和一个精细的点焊头。其他可能难以使用的部件是表面贴装铁氧体磁珠和电容。这些组件也可以手工焊接到载板上并像DIL封装一样进行处理。 
  
 连接Arduino 在为电路供电以进行测试之前需要考虑的另一个问题是Arduino接口。对于这个组件,我选择使用Arduino Pro Mini开发板。这款小巧的Arduino完全是3.3v,与Si4448-A10兼容,这是一个主要优势。小尺寸的电路板是一种额外的便利。与Si4844-A10的连接通过四条线路如下所述: |  Arduino(3.3v) |   Si4844-A10 |  | A5 / SCL | SCLK |  | A4 / SDA | SDIO |  | D2 | INT |  | D12 | RST | 
 此外,标准USB /串行接口用于将Arduino连接到PC进行编程。确切的连接将取决于您使用的串行板,但将包括通常的TX、RX和GND连接。通过这种方式,您可以实际编程和测试Si4844-A10,这有利于开发和实验。但是,完成后,可以取消独立多频段无线电的连接。为无线电板和Arduino供电必须使用外部3.3v稳压电源。不要尝试使用USB /串行板为它们供电,即使它具有3.3v输出引脚 - 这些也不能依赖于能够提供驱动Arduino和Si4844-A10所需的电流。 
 测试基本电路 一旦你有电路面包板,连接了Arduino,连接了放大的扬声器,你就可以运行本文中包含的测试程序。该程序对电路进行简单测试,该电路将为器件上电,将频段设置为FM,并提供芯片的版本信息。如果一切顺利,您应该能够通过转动VR1来调谐收音机,您将看到屏幕上动态显示的频率 - 当然,还能听到收音机输出。 
  
 一旦基本电路和Arduino连接正常工作,就可以继续构建全功能无线电。 
 Arduino编程 该项目中的Si无线电芯片是一个I2C从设备,其固定地址为0x11,Arduino作为主设备。然而,芯片的I2C通信速度相对较慢,最大支持速度为50 kHz。此外,在上电过程的一部分期间,速度不得超过10 kHz。为了满足这些要求,我们必须明确设置Arduino的I2C速度,这对于Si4844-A10通常来说太快了。幸运的是,在有关Arduino I2C功能的大量文档的帮助下,我们可以轻松完成必要的更改。 
 基本上,出于我们的目的,I2C速度由Arduino软件中的两个专用变量决定。那些专用变量是TWBR和TWSR。 TWSR的第0位和第1位控制预分频器,该预分频器使用TWBR的值来设置I2C速度。 I2C传输的速度(时钟频率)通过以下公式计算:频率= CPU时钟频率/(16 +(2 *(TWBR)*(预分频器))。Arduino Pro开发板以8 mHz运行。设置I2C速度在10 kHz时,我们使用TWBR值98并将预分频器设置为4(仅设置TWSR的第0位)。因此,8,000,000 /(16+(2 * 98 [TWBR值] * 4 [预分频器]))要将I2C速度设置为50 kHz,我们使用TWBR值18,并将预分频器设置为4(仅设置TWSR的第0位)。因此,8,000,000 /(16+(2 * 18) [TWBR值] * 4 [预分频器]))= 50,000或50 kHz。 
 有关此过程的更多信息,请参阅Nick Gammon优秀的Arduino I2C信息库和Arduino Library文档。然而,最重要的是,我们可以在几行代码中完成这些I2C速度变化,您可以在测试程序中看到这些变化。 
 另一个重要的编程考虑因素是我们需要在代码中使用外部中断服务程序。我们在Arduino上使用INT0,基本上,当Si4844-A10将该引脚设置为高电平时,程序将执行一个已经“附加”到中断的简单例程。所有例程都会设置一个标志变量,可以在代码的其他部分进行检查和更改。 Si4844-A10将在某些条件下发出中断(即,将INT引脚置为高电平),最明显的是调谐电位器更换时。因此,Si4844-A10告诉Arduino您已经移动了调谐旋钮并且应该更新频率显示。
 
 Si4844-A10编程 本质上,Arduino通过I2C总线发送无线电芯片命令,然后无线电芯片通过执行请求的操作并返回状态信息来回复命令。 Si芯片可以在几种模式下工作,有些可以配置一些非常详细的无线电频带和属性。在这个项目中,我们使用Si4844-A10芯片的模式接受具有默认属性的预定义或默认无线电频段。选择此模式是因为它可以轻松容纳大量基本功能,同时仍提供一定程度的自定义。 
 可以将无线电芯片设置为41个不同频带中的一个,而不是简单地设置AM / FM / SW“寄存器”。 0-19频段为FM,87-109 mHz;频带20-24是AM,504-1750 kHz;波段25-40是SW,5.6-22.0mHz。然而,这些频带没有简单的等间隔间隔,这可能使调整变得麻烦。相反,许多频带的频率范围相同或略有不同,但具有不同的属性,例如去加重(FM)或信道空间(AM)、立体声分离(FM)和RSSI阈值。为了完全理解这个方案,有必要参考参考数据表和应用笔记,你会看到一些清晰的频段表,以及所有的模式,编程命令,以及状态和回复格式。 
 在本文中,附带的软件将允许访问所有默认频段以及控制基本属性,包括模式更改(AM / FM / SW)、音量、音调和静音。 |