基于S1473X的RDS功能设计及其在车载音响中的实现
3 RDS功能的软件实现
本文讨论通过车载常用芯片S1473X来实现RDS的接收功能。由于S1473X内置数字信号处理器,具有RDS数据的解码功能,不需要再配备单独的解码芯片,也免去了软件编程中控制数据同步及错误校验等工作,只通过发送指令,读取指令的返回值,便能轻松完成。下面先熟悉S14 73X的指令格式。
3.1 S1473X的指令格式
S1473X通过指令和响应与系统控制器进行信息交换,为了执行某个动作,系统控制器发送一个字节的指令和若干个字节的相关参数。S1 473x执行相应的动作并根据命令的类型返回对应的状态字节和若干个响应字节。S1473X的完整控制过程依次由下面4个部分组成:
命令CMD:由主控制器发送,用来控制S1473X的行为,如上电、掉电或调谐到指定的频率上;
参数ARG:由主控制器发送,是描述命令的参数,用来进一步指定命令的具体行为。如调谐到指定频率的命令,其参数包含了指定的频率;
状态STATUS:由S1473X返回,每一条命令都有1 B的状态返回,用来指示该命令的执行情况。如中断状态,是否准备就绪等;
响应RESP:由S1473X返回,当控制器发送的是读取数据的命令时,由S1473X返回读取的内容。例如FM_RDS_STATUS,读取的就是RDS的数据状态。
3.2 RDS功能的实现
通过发送命令0X24,也即函数FM-RDS_STATUS来获取当前频道的RDS信息,并从RDS堆栈中读取一个空值。其中RDS的信息包括同步状态标志位、堆栈状态标志位、整个群组的信息(块A,B,C,D)和每块传递的错误信息。 另外属性命令0X1500,RDS_INT_SOURCE负责与RDS有关的中断配置。属性命令0X1501,RDS_INT_FIFO_COUNT负责设置在RDSRECV标志位置1之前,RDS堆栈中存放RDS群组数据的最小值。因为有些RDS的功能显示,比如显示电台节目名称,歌曲名等信息,需要几组的RDS群组数据才能传送完毕,所以RDS堆栈必须要有一定的存储能力,才能将信息完整地显示。整个RDS功能实现的流程如图3所示。
4 结语
最近几年我国像手机、MP3,PDA等提供信息服务功能的终端发展越来越快,功能也趋向一体化,集多种信息服务功能为一体的智能终端是这些便携式设备的发展方向,很多消费者希望在他们的掌上产品中增加FM功能,而RDS等数据广播业务由于是利用现有覆盖面很广的广播网络,网络建设投入很少,而且很多调频芯片已经集成了RDS解码功能,所以RDS功能的实现变得简单易行。相信FM+RDS一定会有更加广泛的应用。