搜索
您的当前位置:首页正文

TEF6606_SW_GUIDELINE_V1

来源:二三娱乐
NXP Semiconductor AtomIC Software Guideline V1.0

AtomIC (TEF6606) Software Development Guideline

Version 1.0

Version 1.0 Author Jiajie Wang Date 2007-11-05

Page: 1 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

收音机模块

本说明将介绍收音机除RDS外所有的功能实现,补充说明TEF6606的v1.0版本参考程序。 DEFINE模块

驱动部分TEF6606.H的预设有:

①I2C写tuner时的不同模式,后文将具体介绍写入模式。 ②I2C读入时寄存器地址的偏移量。 ③I2C写入时寄存器地址的偏移量。 功能函数部分:

① 各频段的频率边界,调谐步进。 ② 各频段的搜台停台条件。

③ 各频段的弱信号处理等有关性能的设置。 各函数列表,包括输入输出和简单描述 驱动部分:

表1 Tuner的驱动函数 函数名

简介

寄存器

I2C地址:0xC0

读取数据长度num = 5 I2C地址:0xC0 子地址类型 I2c_subtype = 1

子地址 sub_adr 由调谐模式和寄存器(0x00 ~ 0x0F)组成。

Void readTunerRegister (uint8 从I2C地址为i2c_adr的器件中读取i2c_adr, uin8 *read_buffer, uint32 num个数据,存入到read_buffer所指num) 的指针或数组中。 Void writeTunerRegister (uint8 向I2C地址为i2c_adr的器件,子地i2c_adr, uint8 i2c_subtype, uint32 址类型为i2c_subtype;以子地址sub_adr, uint8 *write_buffer, uint32 sub_adr为初始入口,将write_buffernum) 所指的num个数组元素写入到器件。

Tuner 有关读操作函数

uint8 getLevel (void)

uint8 getIFCounter (uint8 IFCReady)

通过I2C总线从tuner读取当前的信Level: byte 1h

号强度,并返回为8位无符号整形数。 当IFCReady等于TRUE时,表示中频计数器的结果已经就绪,读取计数值并以8位无符号整形数形式返回。 当IFCReady等于FALSE时,表示中频计数器结果还未就绪,返回当前是否就绪的标志位。

读取当前的噪声水平,返回为8位无符号整形数。

读取当前的多径干扰水平,返回为8位无符号整形数。

IFCReady: byte 3h (bit6 and bit7)

IFC result: byte 3h (bit0 ~ bit4)

uint8 getUSN (void) uint8 getWAM (void)

enum STIN getStereoIndicator (void)

USN: byte 2h (bit4 ~ bit7)

WAM: byte 2h (bit0 ~ bit3)

在FM频段下,检测立体声导频信号,STIN: byte 0h (bit4)

Page: 2 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

并判断当前的信号强度是否在弱信号处理中能输出立体声,返回为STIN{MONO,STEREO}形式。 Tuner有关写操作的函数

void setFrequency (enum BAND 设置tuner的调谐频段为band,频率为BAND: byte 0h (bit5 band, uint32 freq, uint8 write_mode) freq千赫兹。调谐模式为write_mode。and bit6)

关于调谐模式,后文会有详细介绍。 FREQ: byte 1h

byte 0h (bit0 ~ bit4) void setMono (uint8 ForceMono)

在FM频段下,设置是否强制单声道输出。ForceMono表示当前的输出状态。

MONO: byte 3h (bit4)

功能函数部分: 表2 Tuner功能函数 函数名

简介

void Ftun_Seek (enum DIRECTION direction, Tuner的调谐操作函数,调谐步进的方向为uint8 ams, uint8 singlestep) DIRECTION{DOWN,UP}。

单步调谐(tune up/down) singlestep = TRUE ams = FALSE

搜台 (seek up/down) singlestep = FALSE Ams = FALSE

自动搜台存台 (AMS) singlestep = FALSE ams = TRUE void Ftun_BandSwitch (void) void Ftun_StereoMonoSwitch (void)

在FM, SW, MW, LW, OIRT之间切换频段。 设置或取消强制单声道音频输出。

void Ftun_SaveCurrentStation (uint32 freq, 将频率为freq千赫兹设置为预存台preset。 enum PRESET preset)

void Ftun_TunetoPreset (enum PRESET preset)enum PRESET Ftun_IsPreset (uint32 freq) uint8 Ftun_CheckLevel (enum BAND band)

将当前频率调谐到预存台preset。 判断频率freq千赫兹是否为预存台。

在搜台程序中,检查信号场强是否达到预设置。

void PresetSort (uint8 count, uint32 将自动搜台后得到的count个有效台(preset_level*preset_level, uint32 *preset_sta) 所指数组)按照信号强度排序,得到信号最强的

预存台,其中预存台数量在头文件中定义。 void Ftun_TunetoFrequency (enum BAND 通过对setFrequency的调用,并做边界判断,调band, uint32 freq, uint8 write_mode) 谐到频段为band,频率为 freq千赫兹,调谐方式

为write_mode。 void Ftun_Init (enum BAND band, uint32 freq)

对tuner做初始化,对所有的16个写寄存器做配置,调整如弱信号处理等参数。关于弱信号处理,在后文有详细介绍。

Page: 3 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

TEF6606的I2C写操作格式: 表3 写入方式下I2C的子地址格式

如表3所示,TEF6606的I2C写入的子地址由两部分组成,一部分是由bit5~bit7所组成的调谐模式,另一部分是要写入的起始寄存器地址,由bit0~bit3所构成的16个寄存器。表6所示为调谐模式的具体说明,红线框中的为调谐函数种所需用到的模式,剩下的模式会在RDS功能中用到。 表4 调谐模式

这四种模式会在不同的操作中分别采用。

Standard: 不涉及频率和频段的操作,如弱信号处理的寄存器配置;强制单声道输出等。 Preset: 单步调谐(tune up/down);更改频段(band);停台。 Search: 搜台(seek up/down);自动搜索存台(AMS)。

Mirror test: 搜台时,测试混频后的镜像抑制,并决定最好的差频方式:外差,内差。 Ftun_BandSwitch 表5 Byte 0H

采用掩码的方式来设置频段,如(byte0h & 0x9F) | BAND[1:0]。

在切换频段的同时,需要将属于该频段范围的频率更新,并对Byte0h 和Byte1h中的频率位进行设置。

Page: 4 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

Ftun_TunetoFrequency 表6 Byte 1H

表7 各频段频率物理值和寄存器设置值的换算关系

通过对Byte 0H和 Byte 1H的设置,可以调谐所有频段的频率值。 函数实现步骤:

1.根据Define的预设值,判断当前频率是否越界,如越界,修正到边界值。 2.选择Preset写入模式,并将I2C写入子地址设置为0x20。

3.设置频率,写入寄存器。调用setFrequency(band,freq,write_mode) 函数,实现方法为:

首先如表7所示,将所需调谐的频率物理值(fRf )换算为符合寄存器格式的13位元的数值(FREQ[12:0])。每个频段的对应关系和调谐最小步进可参考表7。然后将换算好的13位元数值分为两段: ① bit8~bit12连同频段的设置位写入Byte 0H;(如表5) ② bit0~bit7写入Byte 1H(如表6)。 Ftun_Seek

搜台函数是本参考设计tuner模块中,代码量最大的函数。共有三个输入参数,分别是direction, ams, singlestep。本函数共实现三种功能,即单步调台(tune up/down);搜台(seek up/down);自动搜台存储(AMS)。

本函数使用一个全局变量SeekState来贯穿整个搜台程序的状态和进度。以下将就这三种功能的实现做具体介绍,框图中表示的是SeekState的各个状态。 1. 单步调台 函数输入参数:

Direction = DOWN / UP ams = FALSE singlestep = TRUE

Page: 5 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

图1 单步调台程序流程图

IDLE:①调用Ftun_TunetoFrequency函数,调谐到当前频率,writemode为Preset,释放静音;②将系统状态设为IDLE;③SeekState设为CONFIGURE。

CONFIGURE:①初始化频率边界,搜台步进;②清空BUFFER;③根据函数实现功能,设置系统状态,在单步模式下为IDLE。

REQUEST:①根据DIRECTION按照步进增加或减少频率;②频率边界判断。 CHANGE_FREQUENCY:①调用Ftun_TunetoFrequency函数,writemode为Search;②SeekState设为IDLE。

单步调台结束,搜台状态SeekState回到IDLE。

2. 搜台(Seek up/down) 函数输入参数:

Direction = DOWN / UP ams = FALSE

singlestep = FALSE

图2搜台程序流程图

Page: 6 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

IDLE:实现内容和单步调台一样。

CONFIGURE:①和②实现和单步一样;③和单步不同的是,系统状态会设为SEEK。

REQUEST:①和②实现和单步一样;③判断是否已经搜完整个频段而未搜到有效台,如图2所示的虚线A,搜完整个频段后退出搜索状态,复位到IDLE状态。 CHANGE_FREQUENCY:①和单步一样;②SeekState设为WAIT_LEVEL。

WAIT_LEVEL:①设定频段在AM和FM时的定时器预值,即等待时间;②SeekState设为CHECK_LVEL。

CHECK_LEVEL:当预设等待时间到后,①检查LEVEL是否达到搜台条件,如果没有,则如图2中虚线B所示,返回至REQUEST状态,继续下一搜索;②当LEVEL满足条件后,根据用户的设置,可以再检测USN和WAM(如图2中红线所示流程),或者直接进入等待中频计数状态(WAIT_IFC)。

CHECK_USN:检测USN是否达到要求,如否,返回如虚线C所示到REQUEST状态,继续下一搜索。达到要求后,继续去检测WAM(CHECK_WAM)。

CHECK_WAM:检测WAM是否达到要求,如否,返回如虚线D所示到REQUEST状态,继续下一搜索。达到要求后,进入等待中频计数结果状态(WAIT_IFC)。

WAIT_IFC:等待32ms中频计数结果可用时,SeekState设为CHECK_IFC。

CHECK_IFC:检测IFC是否达到要求,如否,返回如虚线E所示到REQUEST状态,继续下一搜索。达到要求后,搜索到有效台,返回IDLE状态。搜台程序结束。

3. 自动搜索存台 函数输入参数:

Direction = DOWN / UP ams = TRUE

singlestep = FALSE

Page: 7 of 8

NXP Semiconductor AtomIC Software Guideline V1.0

图3 自动搜台存储程序流程图

如图3所示,除了增加AMS状态,其他流程基本相同。

CONFIGURE:①和②实现和单步一样;③不同,系统状态设为AMS。

AMS:①将所有满足条件的电台的LEVEL和频率存入BUFFER;②在全频段搜索完成后,将所有在BUFFER中的电台按照LEVEL从高到低选出预存台;③返回SeekState到IDLE,自动搜索存台程序结束。 Ftun_Init

初始化TEF6606的寄存器[Byte 2H ~ Byte FH]。Byte 2H到Byte FH的寄存器设置包括了tuner的调谐属性,弱信号处理等。用户可以自由配置属于不同频段的初始寄存器。 BYTE 2H:AGC启动点设置;LOW/HIGH INJECTION设置。

3H:噪声抑制灵敏度;立体声设置;去加重时间常数设置;音频输出高低切换。

4H~6H:弱信号软静音(SOFTMUTE)。 7H~9H:弱信号高音抑制(HIGHCUT)。

AH~CH:弱信号立体声控制(STEREO BLEND)。 DH:带宽设置。 EH:信号强度读取值的偏移量设置(LEVEL_ALIGN)。 FH:AM的LNA设置;立体声分离度调整。

这里主要就弱信号处理在软件上的设置做进一步介绍。 弱信号处理将在后期版本中详细说明。

Page: 8 of 8

因篇幅问题不能全部显示,请点此查看更多更全内容

Top