利用STM32VET6控制TEF6686(V102)收音機晶片

Dazz_24發表於2024-10-11

目錄
  • TEF6686晶片概述
    • TEF6686晶片的主要特點包括:
    • TEF6686晶片具備的主要功能
    • TEF6686晶片的應用範圍
  • I2C協議
  • 驅動程式碼
    • IIC.c
    • IIC.h
    • TEF6686.c(裝置初始化)
    • TEF6686.h
    • TEF6686_command.c
    • TEF6686_command.h

TEF6686晶片概述

TEF6686是一款由NXP Semiconductors生產的高效能單晶片收音機IC,它整合了AM/FM無線電調諧器和軟體定義的無線電訊號處理功能。這款晶片是NXP廣泛的、經過行業驗證的汽車無線電單調諧器產品組合的一部分,提供了出色的無線電效能,具有廣泛的功能和最先進的軟體演算法,同時最佳化了系統成本

TEF6686晶片的主要特點包括:

1、寬頻帶收音能力,能夠接收FM、AM、SW等多種頻段的訊號。
2、高靈敏度接收,能夠接收較弱或干擾較大的訊號。
3、內建數字訊號處理器,可實現自動搜尋、調諧和聲音解碼。
4、支援RDS和RBDS等資料廣播系統。
5、低功耗設計,適用於行動式裝置。
6、多種介面選項,便於與主控晶片或其他裝置進行連線

TEF6686晶片具備的主要功能

1、自動搜尋功能:能夠自動搜尋可用的廣播頻率,並儲存在頻道列表中。
2、調諧功能:使用者可以手動調整頻率進行收聽,也可以透過命令控制進行頻率的微調。
3、頻道儲存功能:支援多個頻道的儲存,使用者可以透過頻道編號進行直接切換。
4、RDS功能:內建的RDS解碼器可以解析RDS廣播中攜帶的音訊、文字和資料資訊。
5、音訊處理功能:內建的數字訊號處理器可以對音訊訊號進行解碼、均衡、混響等處理,提供高質量的音訊輸出。
6、資料介面功能:支援與主控晶片或其他裝置之間的資料互動,使用者可以透過資料介面傳送命令、接收狀態和資料
7、此外,TEF6686和TEF6688能夠透過I²S輸出和音訊DAC輸出提供數字格式的立體聲音訊。TEF6688還支援數字無線電標準HD Radio和Digital Radio Mondiale (DRM),當與NXP Semiconductors的數字無線電協處理器如SAF356X和SAF360X一起使用時

TEF6686晶片的應用範圍

TEF6686的應用範圍非常廣泛,包括但不限於汽車、行動式裝置以及其他需要無線電接收功能的場合。它的高效能和多功能性使其成為許多無線電愛好者和專業開發者的首選。

I2C協議

TEF6686控制引數為16位寬。I²C匯流排本機單元是位元組,多位元組值,如16位引數,首先傳輸MSB位元組。
在GPIO_2外部應用下拉電阻時,TEF668X的I²C裝置寫地址為C8h,裝置讀地址為C9h。

驅動程式碼

IIC.c

#include "IIC.h"                  // Device header


//SCL引腳設定
void IIC_SCLConfig(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	//開啟GPIO埠的時鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

	//SCL
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_Out_PP;					//輸出模式
	GPIO_InitStructure.GPIO_Speed 	= GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_6;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

//SDA引腳設定
void IIC_SDAConfig(GPIOMode_TypeDef GPIO_Mode)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	//開啟GPIO埠的時鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

	//SCL
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode;					
	GPIO_InitStructure.GPIO_Speed 	= GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_7;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

//IIC的初始化
void IIC_Config(void)
{
	//1.設定SDA和SCL為輸出模式
	IIC_SCLConfig();
	IIC_SDAConfig(GPIO_Mode_Out_PP);

	//2.確保SDA和SCL處於空閒狀態
	SDA_SET(1);
	SCL_SET(1);
	Delay_us(5);
}



//IIC的開始訊號
void IIC_Start(void)
{
	//1.設定SDA引腳為輸出模式
	IIC_SDAConfig(GPIO_Mode_Out_PP);

	//2.確保SDA和SCL處於空閒狀態
	SDA_SET(1);
	SCL_SET(1);
	Delay_us(5);

	//3.把SDA引腳電平拉低
	SDA_SET(0);
	Delay_us(5);

	//4.把SCL引腳電平拉低,此時準備資料
	SCL_SET(0);
	//delay_us(5);
	
}

//IIC的傳送位元組
void IIC_SendByte(uint8_t Byte)   
{
	uint8_t i = 0;
	//1.設定SDA引腳為輸出模式
	IIC_SDAConfig(GPIO_Mode_Out_PP);

	//2.把SCL引腳電平拉低,此時主機準備資料
	SCL_SET(0);
	Delay_us(5);

	//3.迴圈傳送8bit,遵循MSB高位先出
	for(i=0;i<8;i++)
	{
		//4.判斷待傳送的位元組的最高位
		if( Byte & 0x80 )
		{
			SDA_SET(1);
		}
		else
			SDA_SET(0);

		Byte <<= 1;
		Delay_us(5);

		//5.把SCL電平拉高,此時從機讀取bit
		SCL_SET(1);
		Delay_us(5);

		//6.把SCL引腳電平拉低,此時主機準備下一個bit
		SCL_SET(0);
		Delay_us(5);
	}
}

//判斷從機是否應答
bool  IIC_IsSlaveACK(void)
{
	
	bool ack;
	
	//1.設定SDA引腳為輸入模式
	IIC_SDAConfig(GPIO_Mode_IPU);

	//2.把SCL引腳電平拉低,此時為第9個脈衝的低電平,從機準備bit
	SCL_SET(0);
	Delay_us(5);

	//3.把SCL引腳電平拉高,此時為第9個脈衝的高電平,主機讀取狀態
	SCL_SET(1);
	Delay_us(5);

	//4.主機讀取狀態  1 表示未應答  0  表示已應答
	if(SDA_READ)
		ack = false;
	else
		ack = true;
	
	//5.把SCL引腳電平拉低
	SCL_SET(0);
	Delay_us(5);
	
	return ack;
}


//IIC讀取位元組
uint8_t IIC_ReadByte(void)
{
	uint8_t i = 0,data = 0;

	//1.設定SDA引腳為輸入模式
	IIC_SDAConfig(GPIO_Mode_IPU);

	//2.把SCL引腳電平拉低,此時從機準備資料
	SCL_SET(0);
	Delay_us(5);

	//3.迴圈讀取8bit,遵循MSB高位先出
	for (i = 0; i < 8; ++i)
	{
		//4.把SCL電平拉高,此時主機讀取bit
		SCL_SET(1);
		Delay_us(5);

		//5.主機讀取bit
		data <<= 1;
		data |= SDA_READ;
		//delay_us(5);

		//6.把SCL引腳電平拉低,此時從機準備下一個bit資料
		SCL_SET(0);
		Delay_us(5);
	}

	//7.返回結果
	return data;
}

//IIC讀取多位元組
void IIC_ReadBytes(u8 len, u16* buf)
{
	if(len == 1)
	{
	u16 data = 0;
	
	for(u8 i =0; i < 2;i++)
	{

	//1.設定SDA引腳為輸入模式
	IIC_SDAConfig(GPIO_Mode_IPU);

	//2.把SCL引腳電平拉低,此時從機準備資料
	SCL_SET(0);
	Delay_us(5);

	//3.迴圈讀取8bit,遵循MSB高位先出
	for (u8 j = 0; j < 8; ++j)
		{
		//4.把SCL電平拉高,此時主機讀取bit
		SCL_SET(1);
		Delay_us(5);

		//5.主機讀取bit
		data <<= 1;
		data |= SDA_READ;
		//delay_us(5);

		//6.把SCL引腳電平拉低,此時從機準備下一個bit資料
		SCL_SET(0);
		Delay_us(5);
		}
		
		if(0 == i )
			IIC_MasterACK(0);
		else
			IIC_MasterACK(1);
	}

	//7.返回結果
	*buf = data;
	}
	else
	{
		u16 data = 0;
		int cnt = 0;
	
	for(u8 i =0; i < len*2;i++)
	{		
	//1.設定SDA引腳為輸入模式
	IIC_SDAConfig(GPIO_Mode_IPU);

	//2.把SCL引腳電平拉低,此時從機準備資料
	SCL_SET(0);
	Delay_us(5);

	//3.迴圈讀取8bit,遵循MSB高位先出
	for (u8 j = 0; j < 8; ++j)
		{
		//4.把SCL電平拉高,此時主機讀取bit
		SCL_SET(1);
		Delay_us(5);

		//5.主機讀取bit
		data <<= 1;
		data |= SDA_READ;
		//delay_us(5);

		//6.把SCL引腳電平拉低,此時從機準備下一個bit資料
		SCL_SET(0);
		Delay_us(5);
		}
		
		if(len*2 > i+1 )
			IIC_MasterACK(0);
		else
			IIC_MasterACK(1);
		
		cnt++;
		
		
		//對buf賦值
		if(2 == cnt)
		{
			cnt = 0;
			buf[i/2] = data;
			data = 0;
		}
		
	}

	
	}
		
	
}

//ack=1 表示不應答  ack=0 表示要應答
void IIC_MasterACK(uint8_t ack)
{
	//1.設定SDA引腳為輸出模式
	IIC_SDAConfig(GPIO_Mode_Out_PP);

	//2.把SCL引腳電平拉低,此時主機準備
	SCL_SET(0);
	Delay_us(5);

	//3.判斷ack的狀態,從而對SDA操作
	if(ack)
		SDA_SET(1);
	else
		SDA_SET(0);

	Delay_us(5);

	//4.把SCL電平拉高,此時從機讀取bit
	SCL_SET(1);
	Delay_us(5);
	
	//5.把SCL引腳電平拉低
	SCL_SET(0);
	Delay_us(5);
}

//IIC的停止訊號
void IIC_Stop(void)
{
	//1.設定SDA引腳為輸出模式
	IIC_SDAConfig(GPIO_Mode_Out_PP);

	//2.設定SDA和SCL均為低電平
	SDA_SET(0);
	SCL_SET(0);
	Delay_us(5);

	//3.把SCL電平拉高
	SCL_SET(1);
	Delay_us(5);

	//4.把SDA電平拉高
	SDA_SET(1);
	Delay_us(5);
}

IIC.h

#ifndef __MYI2C_H
#define __MYI2C_H

#include "stm32f10x.h"  
#include "Delay.h"
#include "SysTick.h"
#include <stdbool.h>
#include <stdio.h>


#define  SDA_SET(n)  (n) ? GPIO_SetBits(GPIOB,GPIO_Pin_7) : GPIO_ResetBits(GPIOB,GPIO_Pin_7) 
#define  SCL_SET(n)  (n) ? GPIO_SetBits(GPIOB,GPIO_Pin_6) : GPIO_ResetBits(GPIOB,GPIO_Pin_6) 

#define  SDA_READ    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)


//SCL引腳設定
void IIC_SCLConfig(void);

//SDA引腳設定
void IIC_SDAConfig(GPIOMode_TypeDef GPIO_Mode);

//IIC的初始化
void IIC_Config(void);

//IIC的開始訊號
void IIC_Start(void);

//IIC的傳送位元組
void IIC_SendByte(uint8_t Byte);
    
//判斷從機是否應答
bool  IIC_IsSlaveACK(void);

//IIC讀取位元組
uint8_t IIC_ReadByte(void);


//IIC讀取多位元組
void IIC_ReadBytes(u8 len, u16* buf);

//ack=1 表示不應答  ack=0 表示要應答
void IIC_MasterACK(uint8_t ack);

//IIC的停止訊號
void IIC_Stop(void);

#endif

TEF6686.c(裝置初始化)

#include "TEF6686.h"


static const uint8_t DSP_INIT_V102[]=
{
  0x05, 0x1E, 0x5A, 0x01, 0x5A, 0x5A,     // reset device
  INIT_FLAG_TIMER, 100,                   // wait 100ms
  0x03, 0x1C, 0x00, 0x00,                 // Clear Required Initialization Control
  0x03, 0x1C, 0x00, 0x74,                 // Set Required Initialization Control(1)  
	/* Load Required Initialization    Beginning of DSP_INIT bytes */
  0x19, 0x1B, 0xF0, 0x00, 0x38, 0x3B, 0xD0, 0x80, 0xF0, 0x00, 0x38, 0x43, 0xD0, 0x80, 0x43, 0xB2, 0x38, 0x46, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xC2, 0xF7, 
  0x19, 0x1B, 0xF0, 0x00, 0x38, 0x77, 0xD0, 0x80, 0xF0, 0x00, 0x38, 0x7B, 0xDF, 0x80, 0x80, 0xFC, 0x39, 0x0E, 0xD0, 0x80, 0xC2, 0x38, 0x20, 0x11, 0x40, 0xB7, 
  0x19, 0x1B, 0x9F, 0xA7, 0x39, 0x13, 0xD2, 0x80, 0x9F, 0xA7, 0x39, 0x1D, 0xD2, 0x80, 0xF0, 0x00, 0x39, 0x24, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x27, 0xD0, 0x80, 
  0x19, 0x1B, 0x90, 0x41, 0x39, 0x49, 0xDD, 0x80, 0xF0, 0x00, 0x3A, 0x25, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x4D, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x27, 0xD0, 0x80, 
  0x19, 0x1B, 0xC4, 0xA2, 0x02, 0x18, 0x60, 0x04, 0xF0, 0x00, 0x39, 0xBF, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0xE7, 0xD0, 0x80, 0x90, 0x01, 0x39, 0x4F, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x38, 0xF0, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x56, 0xD2, 0x80, 0xF0, 0x00, 0x39, 0x5A, 0xD0, 0x80, 0x43, 0x84, 0x39, 0x64, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x39, 0x67, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x6B, 0xD0, 0x80, 0x78, 0x4D, 0x39, 0x71, 0xD0, 0x80, 0x9E, 0x30, 0x18, 0xF9, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x39, 0x76, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x79, 0xD0, 0x80, 0x30, 0x77, 0x39, 0xDE, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x7C, 0xD0, 0x80, 
  0x19, 0x1B, 0x32, 0x00, 0x39, 0x7E, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x80, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0xC7, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0xF5, 0xD0, 0x80, 
  0x19, 0x1B, 0xA8, 0x01, 0x3A, 0x13, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x32, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x39, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x3B, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x3A, 0x4F, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x52, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x55, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x3A, 0x58, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x3A, 0x5D, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x1E, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x3A, 0x6B, 0xD0, 0x80, 0x00, 0x43, 0x3A, 0x7A, 0xD9, 0x80, 0xF0, 0x00, 0x3A, 0x84, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0xDA, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x3A, 0xDD, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0xEE, 0xD0, 0x80, 0x2E, 0x40, 0x3B, 0x8C, 0xD0, 0x80, 0xF0, 0x00, 0x3B, 0x96, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x0E, 0x3F, 0x60, 0x00, 0x50, 0x10, 0x28, 0xD8, 0xD2, 0x80, 0x91, 0x01, 0x01, 0x36, 0x60, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x18, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0xCC, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0xED, 0xF0, 0x00, 0x70, 0x00, 0xA1, 0xAE, 0xF0, 0x00, 0x70, 0x00, 0xA2, 0x02, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xA2, 0x2D, 0xF0, 0x00, 0x70, 0x00, 0xA2, 0x45, 0xF0, 0x00, 0x20, 0x31, 0xD0, 0x80, 0xF0, 0x00, 0x04, 0xC1, 0x60, 0x08, 
  0x19, 0x1B, 0xF0, 0x00, 0x01, 0x01, 0xD2, 0x80, 0xF0, 0x00, 0x00, 0x30, 0xD0, 0x80, 0x00, 0x7F, 0x60, 0x02, 0xE2, 0x00, 0xF0, 0x00, 0x0E, 0x22, 0x60, 0x0A, 
  0x19, 0x1B, 0xF0, 0x00, 0x00, 0xFF, 0x60, 0x03, 0xF0, 0x00, 0x01, 0x42, 0xD2, 0x80, 0x90, 0x03, 0x40, 0x02, 0xF0, 0x00, 0x90, 0x43, 0x01, 0x70, 0xD1, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x01, 0x69, 0xD0, 0x80, 0x0E, 0x69, 0x60, 0x0A, 0xA3, 0x4C, 0x20, 0x23, 0x00, 0x01, 0x60, 0x01, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xC4, 0xCB, 0x70, 0x00, 0xF0, 0x00, 0xCA, 0x09, 0x30, 0x23, 0xF0, 0x00, 0xC2, 0xCB, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x23, 0xD0, 0x08, 
  0x19, 0x1B, 0x82, 0x00, 0x0D, 0x50, 0x60, 0x08, 0xF0, 0x00, 0x0D, 0x51, 0x60, 0x09, 0x30, 0x00, 0x21, 0x80, 0x60, 0x01, 0xF0, 0x00, 0x40, 0x32, 0xF0, 0x00, 
  0x19, 0x1B, 0x30, 0x11, 0x45, 0xF3, 0xF0, 0x00, 0x30, 0x92, 0x2D, 0x30, 0x60, 0x04, 0x31, 0x13, 0x2D, 0x40, 0x60, 0x05, 0x31, 0x94, 0x7F, 0xFF, 0x60, 0x06, 
  0x19, 0x1B, 0x32, 0x15, 0x0D, 0x61, 0x60, 0x0A, 0x32, 0x96, 0x0D, 0x6B, 0x60, 0x0B, 0x33, 0x10, 0x0D, 0x50, 0x60, 0x01, 0x33, 0x90, 0x0D, 0x5C, 0x60, 0x02, 
  0x19, 0x1B, 0x30, 0x21, 0x0D, 0x63, 0x60, 0x03, 0x30, 0x31, 0x0D, 0x75, 0x60, 0x0C, 0x30, 0xA2, 0x8D, 0x00, 0x60, 0x01, 0x30, 0xB3, 0x01, 0x73, 0x60, 0x02, 
  0x19, 0x1B, 0x30, 0x41, 0x00, 0x25, 0x60, 0x03, 0x30, 0xC2, 0x40, 0x44, 0xF0, 0x00, 0x31, 0x43, 0x40, 0x35, 0xF0, 0x00, 0x31, 0xC4, 0x64, 0x00, 0x60, 0x06, 
  0x19, 0x1B, 0x32, 0x45, 0x1F, 0x40, 0x60, 0x07, 0x32, 0xC6, 0x70, 0x00, 0xF0, 0x00, 0x33, 0x47, 0x1E, 0xBC, 0x60, 0x0D, 0x33, 0xC0, 0x01, 0x22, 0x60, 0x01, 
  0x19, 0x1B, 0x34, 0x40, 0xFD, 0xEE, 0x60, 0x02, 0x30, 0x51, 0x7B, 0x8F, 0x60, 0x03, 0x30, 0xD2, 0xC4, 0x29, 0x60, 0x04, 0x31, 0x51, 0x1E, 0xC2, 0x60, 0x0E, 
  0x19, 0x1B, 0x32, 0x53, 0xFF, 0x0D, 0x60, 0x02, 0x32, 0xD4, 0x7D, 0x2E, 0x60, 0x03, 0x30, 0x61, 0xC1, 0x9A, 0x60, 0x04, 0x30, 0xE2, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x31, 0x61, 0x70, 0x00, 0xF0, 0x00, 0x32, 0x63, 0x05, 0x2C, 0x60, 0x08, 0x32, 0xE4, 0x40, 0x00, 0x83, 0x22, 0xF0, 0x00, 0x03, 0x70, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x08, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x4D, 0xF0, 0x00, 0x02, 0x15, 0xD0, 0x80, 0x40, 0x15, 0x20, 0x53, 0xA3, 0x1E, 
  0x19, 0x1B, 0xA0, 0xE8, 0x58, 0x06, 0xA3, 0x1D, 0xA0, 0x72, 0x20, 0x64, 0xF0, 0x00, 0xA8, 0x61, 0x70, 0x00, 0xF0, 0x00, 0xA1, 0x28, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xA0, 0xB2, 0x02, 0xBB, 0xD0, 0x80, 0xF0, 0x00, 0x0D, 0x51, 0x60, 0x0F, 0xF0, 0x00, 0x05, 0x17, 0x60, 0x0E, 0x23, 0xF6, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x21, 0x63, 0x41, 0xF5, 0x91, 0x8F, 0x21, 0xF8, 0x40, 0x74, 0xC3, 0xEF, 0x21, 0xE0, 0xF0, 0x00, 0xC3, 0xA4, 0x33, 0xF7, 0xF0, 0x00, 
  0x19, 0x1B, 0xD8, 0x5B, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x18, 0x70, 0x00, 0xF0, 0x00, 0x9F, 0xAF, 0x18, 0x00, 0xF0, 0x00, 0x9F, 0x0F, 0x31, 0xF8, 0x90, 0x02, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x28, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x22, 0x78, 0xF0, 0x00, 0x16, 0xD3, 0x60, 0x09, 0xA0, 0x6D, 
  0x19, 0x1B, 0x35, 0xF0, 0x1E, 0xBC, 0x60, 0x0D, 0xF0, 0x00, 0x0D, 0x61, 0x60, 0x08, 0xF0, 0x00, 0x03, 0xA5, 0xD2, 0x80, 0xF0, 0x00, 0x1E, 0xC2, 0x60, 0x0D, 
  0x19, 0x1B, 0xF0, 0x00, 0x0D, 0x6B, 0x60, 0x08, 0xF0, 0x00, 0x03, 0xA5, 0xD2, 0x80, 0xF0, 0x00, 0x21, 0x00, 0xF0, 0x00, 0x83, 0x6D, 0x22, 0xF1, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x23, 0x77, 0xF0, 0x00, 0x90, 0x41, 0x36, 0x70, 0xF0, 0x00, 0x9E, 0x79, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x32, 0xF1, 0xD0, 0x08, 
  0x19, 0x1B, 0x91, 0xC7, 0x33, 0x75, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x70, 0xE6, 0x00, 0xF0, 0x00, 0x34, 0xF0, 0xE6, 0x00, 0xF0, 0x00, 0x24, 0x74, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x24, 0xF3, 0xF0, 0x00, 0x8C, 0x24, 0x26, 0xF2, 0x40, 0x16, 0x8A, 0x1B, 0x34, 0x74, 0x4F, 0xF5, 0x82, 0xB7, 0x34, 0xF3, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x20, 0x71, 0x90, 0x05, 0x83, 0x04, 0x70, 0x00, 0xF0, 0x00, 0x8E, 0x67, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x02, 
  0x19, 0x1B, 0xF0, 0x00, 0x36, 0xF6, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0xF0, 0x80, 0x06, 0x82, 0xAF, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x1B, 0x70, 0x00, 0xD0, 0x09, 
  0x19, 0x1B, 0x8E, 0x5F, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x09, 0xF0, 0x00, 0x36, 0xF5, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x70, 0xF0, 0x00, 
  0x19, 0x1B, 0x40, 0x11, 0x27, 0x72, 0xA2, 0xE9, 0x90, 0x8A, 0x20, 0xF3, 0xA2, 0xE8, 0x8E, 0xD7, 0x37, 0x72, 0xF0, 0x00, 0xF0, 0x00, 0x37, 0xF1, 0xE6, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x22, 0x7A, 0xF0, 0x00, 0x16, 0xC3, 0x60, 0x09, 0xA0, 0x46, 0xF0, 0x00, 0x18, 0x20, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x35, 0x70, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x7A, 0xD0, 0x08, 0x0D, 0x51, 0x60, 0x08, 0xA2, 0xDF, 0x82, 0x00, 0x21, 0x06, 0x40, 0x03, 
  0x19, 0x1B, 0x33, 0x80, 0x0D, 0x63, 0x60, 0x09, 0x37, 0x00, 0x0D, 0x6D, 0x60, 0x0A, 0x37, 0x80, 0x0D, 0x30, 0x60, 0x0B, 0x36, 0x83, 0x0D, 0x40, 0x60, 0x0C, 
  0x19, 0x1B, 0x35, 0x80, 0x70, 0x00, 0xC8, 0x88, 0xF0, 0x00, 0x10, 0x10, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x20, 0xF0, 0x00, 0x32, 0x86, 0x40, 0x15, 0xC8, 0x90, 
  0x19, 0x1B, 0xF0, 0x00, 0x10, 0x30, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x40, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x05, 0xD0, 0x08, 0xF0, 0x00, 0x0D, 0x75, 0x60, 0x0F, 
  0x19, 0x1B, 0xF0, 0x00, 0x05, 0x63, 0x60, 0x0E, 0x24, 0xF7, 0x05, 0x1D, 0x60, 0x0D, 0x25, 0x76, 0x70, 0x00, 0xF0, 0x00, 0x91, 0xC7, 0x20, 0xE8, 0x40, 0x15, 
  0x19, 0x1B, 0x91, 0x8F, 0x21, 0xE9, 0xD4, 0x09, 0xC3, 0xEF, 0x20, 0x00, 0x40, 0x12, 0x9F, 0xBE, 0x20, 0x11, 0x58, 0x03, 0xA0, 0x80, 0x35, 0x77, 0x90, 0x01, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x21, 0xF5, 0xF0, 0x00, 0xA0, 0xCA, 0x22, 0x54, 0xF0, 0x00, 0xCC, 0x09, 0x05, 0x17, 0x60, 0x0C, 
  0x19, 0x1B, 0x83, 0x2C, 0x70, 0x00, 0xF0, 0x00, 0x8A, 0x61, 0x70, 0x00, 0xF0, 0x00, 0xAE, 0x48, 0x22, 0x45, 0xA2, 0xC3, 0xA2, 0x28, 0x20, 0x78, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x35, 0xF0, 0xF0, 0x00, 0xF0, 0x00, 0x18, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x78, 0xF0, 0x00, 0x16, 0xE3, 0x60, 0x09, 0xA0, 0x27, 
  0x19, 0x1B, 0x89, 0x01, 0x23, 0xF4, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0xF2, 0xF0, 0x00, 0x82, 0x61, 0x21, 0x73, 0xF0, 0x00, 0xA0, 0x50, 0x36, 0x70, 0xF0, 0x00, 
  0x19, 0x1B, 0xA0, 0x58, 0x23, 0x72, 0xE1, 0x40, 0xA8, 0x01, 0x22, 0xF3, 0xF0, 0x00, 0x90, 0x49, 0x22, 0x75, 0xE0, 0x40, 0x80, 0x61, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x8A, 0x51, 0x33, 0xF1, 0xF0, 0x00, 0xA0, 0x58, 0x70, 0x00, 0xF0, 0x00, 0xAF, 0x48, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x70, 0xD0, 0x08, 
  0x19, 0x1B, 0x82, 0x00, 0x0D, 0x75, 0x60, 0x08, 0x90, 0x09, 0x0D, 0x00, 0x60, 0x09, 0xF0, 0x00, 0x35, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x80, 0xC0, 0x28, 
  0x19, 0x1B, 0xF0, 0x00, 0x10, 0x10, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x81, 0xD0, 0x08, 0x82, 0x49, 0x0D, 0x75, 0x60, 0x08, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xFD, 
  0x19, 0x1B, 0x04, 0x00, 0x60, 0x00, 0xA2, 0xA9, 0x8E, 0xC0, 0x40, 0x00, 0x60, 0x05, 0x60, 0x00, 0x60, 0x05, 0xE6, 0x00, 0xC8, 0x1B, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xD8, 0xDB, 0x0D, 0x51, 0x60, 0x08, 0x83, 0x5B, 0x70, 0x00, 0xF0, 0x00, 0x9E, 0xBA, 0x30, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x84, 0xD4, 0x09, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xC1, 0xF0, 0x00, 0x0D, 0x75, 0x60, 0x08, 0xF0, 0x00, 0x0D, 0x51, 0x60, 0x09, 0xF0, 0x00, 0x24, 0x03, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x27, 0x94, 0xD0, 0x08, 0xA0, 0x03, 0x70, 0x00, 0xF0, 0x00, 0x00, 0x11, 0x08, 0x00, 0xF0, 0x00, 0x00, 0x11, 0x08, 0x00, 0xC0, 0x0E, 
  0x19, 0x1B, 0xA0, 0x09, 0x00, 0x11, 0x08, 0x00, 0xA0, 0x09, 0x70, 0x00, 0xF0, 0x00, 0xA4, 0x08, 0x70, 0x00, 0xD0, 0x08, 0xA0, 0x03, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x00, 0x11, 0x08, 0x00, 0xF0, 0x00, 0x00, 0x11, 0x08, 0x00, 0xC0, 0x26, 0xA0, 0x09, 0x00, 0x11, 0x08, 0x00, 0xA0, 0x09, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xA4, 0x08, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x1D, 0x01, 0x60, 0x08, 0xF0, 0x00, 0x0A, 0x2C, 0x60, 0x00, 0xF0, 0x00, 0x01, 0x1A, 0x60, 0x01, 
  0x19, 0x1B, 0x31, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x31, 0x81, 0x70, 0x00, 0xD0, 0x08, 0xA8, 0x01, 0x7F, 0xFF, 0x60, 0x06, 0xCC, 0x0A, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x8E, 0xA1, 0x31, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x06, 0xD4, 0x09, 0xAE, 0xE8, 0x04, 0xDF, 0xD0, 0x80, 0x90, 0x87, 0x70, 0x00, 0x98, 0x07, 
  0x19, 0x1B, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9E, 0x08, 0x41, 0x89, 0x60, 0x06, 0x14, 0x92, 0x60, 0x00, 0x90, 0x04, 0xA1, 0x98, 0x1D, 0x01, 0x60, 0x08, 
  0x19, 0x1B, 0xAA, 0x56, 0x70, 0x00, 0xF0, 0x00, 0xA2, 0x20, 0x32, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x80, 0xF0, 0x00, 0x91, 0xC2, 0x06, 0x9A, 0x60, 0x08, 
  0x19, 0x1B, 0x41, 0xE6, 0x06, 0x00, 0xD0, 0x80, 0x82, 0x13, 0x70, 0x00, 0xD8, 0x09, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9E, 0x08, 0x10, 0x62, 0x60, 0x01, 
  0x19, 0x1B, 0x05, 0x1F, 0x60, 0x05, 0xD0, 0x09, 0xF0, 0x00, 0x06, 0xE6, 0x60, 0x08, 0xA3, 0x65, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x85, 0xD0, 0x08, 
  0x19, 0x1B, 0x10, 0x00, 0x60, 0x03, 0xA2, 0x75, 0x30, 0x23, 0x07, 0x73, 0xD2, 0x80, 0xF0, 0x00, 0x07, 0xC6, 0xD0, 0x80, 0x08, 0x00, 0x60, 0x03, 0xA0, 0x02, 
  0x19, 0x1B, 0x0E, 0x6F, 0x60, 0x09, 0xF0, 0x00, 0x02, 0x00, 0x60, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x07, 0x73, 0xD0, 0x80, 0x40, 0xE0, 0x00, 0x1F, 0x60, 0x01, 
  0x19, 0x1B, 0x13, 0xD5, 0x60, 0x07, 0xA0, 0x11, 0x90, 0x40, 0x70, 0x00, 0xF0, 0x00, 0x13, 0xFB, 0x60, 0x06, 0xA0, 0x0E, 0x14, 0x05, 0x60, 0x06, 0xA0, 0x0D, 
  0x19, 0x1B, 0x14, 0x0F, 0x60, 0x06, 0xA0, 0x0C, 0x45, 0x60, 0x00, 0x3A, 0x60, 0x01, 0x13, 0xB6, 0x60, 0x07, 0xA0, 0x0B, 0x90, 0x40, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x13, 0xF7, 0x60, 0x06, 0xA0, 0x08, 0x14, 0x01, 0x60, 0x06, 0xA0, 0x07, 0x14, 0x0B, 0x60, 0x06, 0xA0, 0x06, 0x41, 0x80, 0x00, 0x3B, 0x60, 0x01, 
  0x19, 0x1B, 0x13, 0xB6, 0x60, 0x07, 0xA0, 0x05, 0x90, 0x40, 0x70, 0x00, 0xF0, 0x00, 0x13, 0xF7, 0x60, 0x06, 0xA0, 0x02, 0x14, 0x01, 0x60, 0x06, 0xA0, 0x01, 
  0x19, 0x1B, 0x14, 0x0B, 0x60, 0x06, 0x80, 0x00, 0xF0, 0x00, 0x0D, 0x28, 0xD0, 0x80, 0xD7, 0xCA, 0x00, 0xFF, 0x60, 0x04, 0x81, 0xD7, 0x0C, 0xF7, 0x60, 0x09, 
  0x19, 0x1B, 0xD0, 0x56, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x76, 0x30, 0x17, 0xF0, 0x00, 0xD0, 0xF6, 0x40, 0x83, 0xF0, 0x00, 0xC1, 0xA4, 0x20, 0x19, 0xF0, 0x00, 
  0x19, 0x1B, 0x82, 0xF6, 0x70, 0x00, 0xF0, 0x00, 0xC1, 0x80, 0x20, 0x17, 0xA2, 0x54, 0xC3, 0xE7, 0x70, 0x00, 0xF0, 0x00, 0xC5, 0xC7, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x30, 0x17, 0xD0, 0x08, 0x9A, 0x78, 0x70, 0x00, 0xF0, 0x00, 0x9A, 0x70, 0x70, 0x00, 0x90, 0xE3, 0xF0, 0x00, 0x70, 0x00, 0x90, 0xE3, 
  0x19, 0x1B, 0xF0, 0x00, 0x0D, 0x67, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xA1, 0x19, 0xF0, 0x00, 0x70, 0x00, 0x80, 0xD2, 0x1E, 0xC8, 0x60, 0x08, 0xA2, 0x4A, 
  0x19, 0x1B, 0xF0, 0x00, 0x20, 0x00, 0xA2, 0x49, 0x90, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD4, 0x09, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xA5, 
  0x19, 0x1B, 0x1E, 0xC8, 0x60, 0x08, 0xA2, 0x45, 0xF0, 0x00, 0x30, 0x00, 0xD0, 0x08, 0x00, 0x28, 0x60, 0x00, 0xA2, 0x43, 0x9E, 0x38, 0x0E, 0xF4, 0x60, 0x09, 
  0x19, 0x1B, 0x9E, 0x38, 0x70, 0x00, 0x9F, 0xFF, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0x40, 0x40, 0x0C, 0x8A, 0xD5, 0x80, 0xF0, 0x00, 0x0C, 0x8B, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9C, 0x39, 0x70, 0x00, 0xF0, 0x00, 0x9C, 0x31, 0x70, 0x00, 0x90, 0x03, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x02, 
  0x19, 0x1B, 0x40, 0x10, 0x70, 0x00, 0xAF, 0xF3, 0x41, 0xF1, 0x40, 0x40, 0x80, 0x0D, 0x40, 0x00, 0x70, 0x00, 0xAF, 0xF1, 0x41, 0xF1, 0x40, 0x40, 0x80, 0x0C, 
  0x19, 0x1B, 0x03, 0xE8, 0x60, 0x02, 0xA2, 0x35, 0x90, 0x83, 0x10, 0x44, 0xD1, 0x80, 0xF0, 0x00, 0x10, 0x42, 0xD0, 0x80, 0x40, 0x71, 0x40, 0x20, 0xA0, 0x08, 
  0x19, 0x1B, 0x43, 0xA1, 0x40, 0x30, 0xA0, 0x07, 0x43, 0xB1, 0x40, 0x30, 0xA0, 0x06, 0xF0, 0x00, 0x10, 0x75, 0xD0, 0x80, 0x40, 0x71, 0x40, 0x20, 0xA0, 0x04, 
  0x19, 0x1B, 0x43, 0xA1, 0x40, 0x30, 0xA0, 0x02, 0x43, 0xB1, 0x40, 0x30, 0xA0, 0x01, 0xF0, 0x00, 0x10, 0x81, 0xD0, 0x80, 0xF0, 0x00, 0x0C, 0x92, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x0C, 0x94, 0xD0, 0x80, 0xA0, 0x10, 0x70, 0x00, 0x31, 0x7C, 0xA6, 0x50, 0x7C, 0x4D, 0x20, 0x83, 0x80, 0x09, 0x21, 0xF8, 0xF0, 0x00, 
  0x19, 0x1B, 0xA0, 0xD0, 0x70, 0x00, 0x18, 0x41, 0xA6, 0x53, 0x15, 0x36, 0xD0, 0x80, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x08, 0xF0, 0x00, 0x1D, 0x8D, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x16, 0xD5, 0xD0, 0x80, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x08, 0xF0, 0x00, 0x1D, 0x8F, 0xD2, 0x80, 0xF0, 0x00, 0x16, 0xDA, 0xD0, 0x80, 
  0x19, 0x1B, 0x3E, 0x91, 0x1F, 0x5F, 0xD2, 0x80, 0xF0, 0x00, 0x23, 0x8A, 0xD0, 0x80, 0x0D, 0x85, 0x60, 0x08, 0xA2, 0x1B, 0xF0, 0x00, 0x30, 0x00, 0xD0, 0x08, 
  0x19, 0x1B, 0xF0, 0x00, 0x0F, 0x88, 0x60, 0x0B, 0xF0, 0x00, 0x02, 0x30, 0x60, 0x03, 0xF0, 0x00, 0x09, 0x38, 0x60, 0x04, 0x9F, 0x98, 0x01, 0x2C, 0x60, 0x05, 
  0x19, 0x1B, 0xF0, 0x00, 0x2E, 0xB3, 0xEE, 0x00, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9E, 0x09, 0x0D, 0x87, 0x60, 0x0C, 0x9F, 0x90, 0x70, 0x00, 0x90, 0x02, 
  0x19, 0x1B, 0x9F, 0x88, 0x2F, 0x34, 0xEE, 0x00, 0xF0, 0x00, 0x2F, 0xB5, 0xEE, 0x00, 0x30, 0x43, 0x0B, 0x42, 0x60, 0x08, 0xF0, 0x00, 0x30, 0xC4, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x31, 0x45, 0xF0, 0x00, 0xF0, 0x00, 0x2C, 0xB1, 0x40, 0x17, 0xF0, 0x00, 0x2D, 0x32, 0xF0, 0x00, 0xC6, 0x79, 0x22, 0x05, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x3D, 0x81, 0xF0, 0x00, 0xF0, 0x00, 0x3D, 0x01, 0xF0, 0x00, 0xDD, 0x6D, 0x1B, 0x93, 0xD2, 0x80, 0x90, 0x46, 0x0D, 0x85, 0x60, 0x0A, 
  0x19, 0x1B, 0x20, 0x42, 0x1B, 0x93, 0xD2, 0x80, 0xDA, 0xC9, 0x20, 0x25, 0xA2, 0x04, 0x8C, 0x69, 0x2D, 0xB3, 0xF0, 0x00, 0xDD, 0x49, 0x32, 0x01, 0xF0, 0x00, 
  0x19, 0x1B, 0x8D, 0x89, 0x70, 0x00, 0xF0, 0x00, 0x3C, 0x81, 0xFE, 0x35, 0x60, 0x00, 0x35, 0x81, 0x00, 0x16, 0x60, 0x01, 0xA0, 0x18, 0x21, 0x46, 0xF0, 0x00, 
  0x19, 0x1B, 0xAA, 0x07, 0x01, 0x2D, 0x60, 0x00, 0x81, 0xCF, 0x70, 0x00, 0xF0, 0x00, 0x8F, 0x80, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x94, 0x02, 
  0x19, 0x1B, 0x40, 0x45, 0x57, 0x4B, 0x60, 0x00, 0xE0, 0x00, 0x60, 0x01, 0x80, 0x02, 0x40, 0x65, 0x40, 0x00, 0x60, 0x00, 0xC6, 0x66, 0x60, 0x01, 0x80, 0x00, 
  0x19, 0x1B, 0xA0, 0x30, 0x40, 0x00, 0x60, 0x04, 0xAF, 0x4E, 0x00, 0xA4, 0x60, 0x05, 0x81, 0x8E, 0x0B, 0x75, 0x60, 0x08, 0xF0, 0x00, 0x14, 0x74, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x1B, 0x90, 0xD2, 0x80, 0x2E, 0x34, 0x04, 0x00, 0x60, 0x06, 0x20, 0xC2, 0x1B, 0x93, 0xD2, 0x80, 0xD2, 0xC9, 0x03, 0xE9, 0x60, 0x05, 
  0x19, 0x1B, 0x81, 0x8E, 0x0B, 0x59, 0x60, 0x08, 0x8F, 0x2D, 0x31, 0xC6, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x94, 0x02, 0x40, 0x45, 0xB1, 0x5C, 0x60, 0x03, 
  0x19, 0x1B, 0x46, 0x66, 0x60, 0x07, 0x80, 0x02, 0x40, 0x65, 0xAA, 0xCE, 0x60, 0x03, 0xC6, 0x66, 0x60, 0x07, 0x80, 0x00, 0xA0, 0xE0, 0x00, 0x38, 0x60, 0x04, 
  0x19, 0x1B, 0xAF, 0x48, 0x00, 0x1D, 0x60, 0x05, 0x81, 0xC7, 0x31, 0x84, 0xF0, 0x00, 0x31, 0x05, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x1B, 0x90, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0xD8, 0x00, 0x60, 0x00, 0xF0, 0x00, 0x0B, 0x67, 0x60, 0x08, 0x21, 0xC6, 0x20, 0x00, 0x60, 0x04, 0xF0, 0x00, 0x13, 0x33, 0x60, 0x05, 
  0x19, 0x1B, 0x81, 0x86, 0x31, 0x84, 0x40, 0x07, 0x31, 0x05, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x1B, 0x90, 0xD0, 0x80, 0xF0, 0x00, 0x6E, 0x6C, 0x60, 0x03, 
  0x19, 0x1B, 0x40, 0x07, 0x00, 0xE5, 0x60, 0x05, 0xA0, 0x58, 0xFF, 0xFF, 0x60, 0x03, 0xAA, 0x24, 0x0B, 0x52, 0x60, 0x08, 0x81, 0x1C, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x31, 0x05, 0x7F, 0xDF, 0x60, 0x06, 0x31, 0x84, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x1B, 0x90, 0xD0, 0x80, 0x91, 0x83, 0x2E, 0x85, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x2F, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0x2F, 0x87, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x09, 0xA1, 0xCF, 0x3E, 0x11, 0x0D, 0x82, 0x60, 0x0A, 
  0x19, 0x1B, 0xF0, 0x00, 0x27, 0x11, 0xA1, 0xCD, 0xA0, 0x50, 0x27, 0x92, 0xF0, 0x00, 0xAA, 0x41, 0x0B, 0xB4, 0x60, 0x0C, 0x80, 0x52, 0x20, 0x21, 0xA1, 0xCA, 
  0x19, 0x1B, 0x9E, 0xCB, 0x35, 0x92, 0xF0, 0x00, 0x90, 0x41, 0x70, 0x00, 0xD8, 0x09, 0x88, 0x2D, 0x70, 0x00, 0xD4, 0x09, 0xF0, 0x00, 0x36, 0x15, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x36, 0x95, 0xF0, 0x00, 0x91, 0x00, 0x30, 0xA6, 0xF0, 0x00, 0x31, 0x27, 0x14, 0x62, 0xD2, 0x80, 0x90, 0x04, 0x31, 0xC0, 0xF0, 0x00, 
  0x19, 0x1B, 0x21, 0x45, 0x8C, 0xCD, 0x60, 0x06, 0xF0, 0x00, 0xFF, 0x55, 0x60, 0x07, 0xF0, 0x00, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x32, 0x40, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x32, 0xC1, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x42, 0x80, 0x00, 0xF0, 0x00, 0x0D, 0x82, 0x60, 0x09, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x0A, 
  0x19, 0x1B, 0xF0, 0x00, 0x20, 0x15, 0xA1, 0xB9, 0x91, 0x45, 0x7F, 0xEC, 0x60, 0x06, 0x40, 0x47, 0x70, 0x00, 0xD4, 0x09, 0x20, 0x90, 0x14, 0x47, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x34, 0xA0, 0xF0, 0x00, 0x21, 0x10, 0x14, 0x47, 0xD2, 0x80, 0xF0, 0x00, 0x35, 0x20, 0xD0, 0x08, 0x0A, 0x3D, 0x60, 0x07, 0xA1, 0xB2, 
  0x19, 0x1B, 0xA2, 0x79, 0x0B, 0xC9, 0x60, 0x09, 0xA2, 0xBA, 0x70, 0x00, 0xF0, 0x00, 0x90, 0xC0, 0x3B, 0x91, 0xF0, 0x00, 0x3B, 0x12, 0x14, 0x62, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x3C, 0x10, 0xD0, 0x08, 0xF0, 0x00, 0x0B, 0x60, 0x60, 0x0E, 0xF0, 0x00, 0x00, 0x04, 0x60, 0x03, 0x40, 0xA7, 0x3F, 0xFC, 0x60, 0x04, 
  0x19, 0x1B, 0x32, 0x63, 0x80, 0x08, 0x60, 0x05, 0x32, 0xE4, 0x19, 0x9A, 0x60, 0x06, 0x33, 0x65, 0x0D, 0x86, 0x60, 0x0F, 0x31, 0xE6, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x30, 0x77, 0x70, 0x00, 0xD0, 0x08, 0x0D, 0x82, 0x60, 0x0A, 0xA1, 0xA4, 0xF0, 0x00, 0x30, 0x20, 0xF0, 0x00, 0x00, 0xD2, 0x60, 0x01, 0x94, 0x0B, 
  0x19, 0x1B, 0xF0, 0x00, 0x00, 0xD2, 0x60, 0x02, 0x00, 0xFA, 0x60, 0x03, 0xAF, 0xED, 0xF0, 0x00, 0xBE, 0x77, 0x60, 0x06, 0xF0, 0x00, 0x4B, 0x00, 0x60, 0x07, 
  0x19, 0x1B, 0x37, 0x06, 0x00, 0x01, 0x60, 0x01, 0x37, 0x87, 0x03, 0xE8, 0x60, 0x02, 0xF0, 0x00, 0x03, 0x84, 0x60, 0x04, 0xF0, 0x00, 0x00, 0x01, 0x60, 0x05, 
  0x19, 0x1B, 0xF0, 0x00, 0x00, 0x8C, 0x60, 0x06, 0xF0, 0x00, 0x0A, 0xF0, 0x60, 0x07, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xC7, 0xF0, 0x00, 0x0B, 0xB4, 0x60, 0x09, 
  0x19, 0x1B, 0xF0, 0x00, 0x00, 0x11, 0x60, 0x05, 0xF0, 0x00, 0x00, 0x11, 0x60, 0x06, 0x3B, 0x05, 0x10, 0x00, 0x60, 0x07, 0x3B, 0x86, 0x00, 0x04, 0x60, 0x00, 
  0x19, 0x1B, 0x3C, 0x07, 0xAD, 0x84, 0x60, 0x01, 0x32, 0x10, 0x01, 0xFD, 0x60, 0x02, 0x32, 0x91, 0x0B, 0x5E, 0x60, 0x03, 0x33, 0x12, 0x0C, 0x80, 0x60, 0x04, 
  0x19, 0x1B, 0x31, 0x93, 0x00, 0xA0, 0x60, 0x05, 0x34, 0x84, 0xFF, 0xD0, 0x60, 0x06, 0x35, 0x05, 0xE3, 0x54, 0x60, 0x07, 0x36, 0x06, 0x34, 0x00, 0x60, 0x00, 
  0x19, 0x1B, 0x36, 0x86, 0x00, 0x01, 0x60, 0x01, 0x37, 0x07, 0x03, 0xE8, 0x60, 0x02, 0x37, 0x80, 0x70, 0x00, 0x8F, 0xB7, 0x80, 0xE5, 0x7F, 0xFF, 0x60, 0x00, 
  0x19, 0x1B, 0xCC, 0x0A, 0x70, 0x00, 0xF0, 0x00, 0x8E, 0xA9, 0x33, 0x70, 0xF0, 0x00, 0xAF, 0x20, 0x34, 0x70, 0xD4, 0x09, 0xAE, 0xE8, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xA8, 0x05, 0x00, 0x80, 0x60, 0x07, 0xA8, 0xF6, 0x33, 0x75, 0xF0, 0x00, 0xC3, 0x86, 0x70, 0x00, 0xF0, 0x00, 0x8F, 0x7F, 0x33, 0xF6, 0xF0, 0x00, 
  0x19, 0x1B, 0xA8, 0x85, 0x1D, 0xE4, 0xD1, 0x80, 0xF0, 0x00, 0x34, 0x75, 0xD0, 0x08, 0x0D, 0x86, 0x60, 0x09, 0xA1, 0x7B, 0x20, 0x12, 0x1F, 0x32, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x35, 0x82, 0xD0, 0x08, 0x90, 0x82, 0x0D, 0x86, 0x60, 0x09, 0x40, 0xA7, 0x40, 0x77, 0xE6, 0x40, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x30, 0x17, 0xD0, 0x08, 0x0B, 0xB4, 0x60, 0x08, 0xA1, 0x74, 0xF0, 0x00, 0x31, 0x82, 0xD0, 0x08, 0xF0, 0x00, 0x09, 0x61, 0x60, 0x08, 
  0x19, 0x1B, 0xF0, 0x00, 0x09, 0xC9, 0x60, 0x09, 0xF0, 0x00, 0x21, 0x80, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x91, 0xA1, 0x6F, 0xA2, 0x08, 0x70, 0x00, 0xD0, 0x08, 
  0x19, 0x1B, 0x00, 0xCF, 0x60, 0x02, 0xA0, 0x01, 0x01, 0x51, 0x60, 0x02, 0x80, 0x01, 0x0D, 0x8B, 0x60, 0x08, 0x80, 0x01, 0x0D, 0x8C, 0x60, 0x08, 0x80, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x02, 0xD0, 0x08, 0x0F, 0xF2, 0x60, 0x09, 0xA1, 0x67, 0x20, 0x11, 0x0D, 0x8B, 0x60, 0x0A, 
  0x19, 0x1B, 0xF0, 0x00, 0x2C, 0x92, 0xF0, 0x00, 0x90, 0x41, 0x20, 0x11, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x93, 0xFE, 0xF0, 0x00, 0x70, 0x00, 0xF2, 0x00, 
  0x19, 0x1B, 0x31, 0x22, 0x20, 0x31, 0xD0, 0x80, 0x0D, 0x8B, 0x60, 0x08, 0xA0, 0x03, 0xF0, 0x00, 0x20, 0x22, 0xD0, 0x80, 0x0D, 0x8C, 0x60, 0x08, 0xA0, 0x01, 
  0x19, 0x1B, 0xF0, 0x00, 0x20, 0x1E, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x0E, 0x69, 0x60, 0x08, 0xF0, 0x00, 0x01, 0xD0, 0x60, 0x01, 
  0x19, 0x1B, 0xF0, 0x00, 0x30, 0x80, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x01, 0xD0, 0x08, 0x83, 0x6D, 0x0C, 0x35, 0x60, 0x08, 0x40, 0x60, 0x3A, 0x4D, 0x60, 0x01, 
  0x19, 0x1B, 0x41, 0xE2, 0x21, 0x96, 0x60, 0x03, 0x33, 0x00, 0x41, 0x44, 0xF0, 0x00, 0x33, 0x81, 0x70, 0x00, 0xF0, 0x00, 0x34, 0x02, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x34, 0x83, 0x0C, 0x29, 0x60, 0x09, 0x35, 0x04, 0x3A, 0x5B, 0x60, 0x00, 0x35, 0x85, 0x3A, 0x60, 0x60, 0x03, 0x30, 0x90, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x33, 0x93, 0x70, 0x00, 0x8F, 0xDF, 0xF0, 0x00, 0x70, 0x00, 0xAE, 0x6C, 0xF0, 0x00, 0x70, 0x00, 0x8E, 0x9F, 0xF0, 0x00, 0x70, 0x00, 0xAE, 0x98, 
  0x19, 0x1B, 0xF0, 0x00, 0x0C, 0x51, 0xD2, 0x80, 0xF0, 0x00, 0x21, 0xA0, 0xD0, 0x80, 0xF0, 0x00, 0x05, 0x2E, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x0E, 
  0x19, 0x1B, 0xF0, 0x00, 0x21, 0xB7, 0xD0, 0x80, 0xF0, 0x00, 0x1F, 0x32, 0xD2, 0x80, 0xF0, 0x00, 0x1E, 0x84, 0xD2, 0x80, 0xF0, 0x00, 0x21, 0xE0, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x1E, 0xA4, 0xD2, 0x80, 0xF0, 0x00, 0x07, 0xF7, 0xD2, 0x80, 0xF0, 0x00, 0x22, 0x15, 0xD0, 0x80, 0xF0, 0x00, 0x07, 0xFB, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x22, 0x8F, 0xD0, 0x80, 0x40, 0x40, 0x22, 0xE1, 0xD2, 0x80, 0x40, 0x80, 0x22, 0xE2, 0xD2, 0x80, 0xF0, 0x00, 0x22, 0x9C, 0xD0, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x07, 0xFB, 0xD2, 0x80, 0xF0, 0x00, 0x22, 0xB6, 0xD0, 0x80, 0xF0, 0x00, 0x20, 0xF0, 0xD2, 0x80, 0x90, 0x02, 0x27, 0xDF, 0xD2, 0x80, 
  0x19, 0x1B, 0x9E, 0x69, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x07, 0x00, 0xD1, 0x80, 0xF0, 0x00, 0x23, 0x20, 0xD0, 0x80, 0x90, 0x82, 0x0C, 0x29, 0x60, 0x09, 
  0x19, 0x1B, 0x40, 0x17, 0x40, 0x67, 0xE6, 0x40, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x17, 0xD0, 0x08, 0xF0, 0x00, 0x07, 0xF7, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x27, 0xEA, 0xD2, 0x80, 0xF0, 0x00, 0x11, 0xB5, 0xD0, 0x80, 0x40, 0x55, 0x15, 0x17, 0x60, 0x08, 0xF0, 0x00, 0x1D, 0x40, 0x60, 0x00, 
  0x19, 0x1B, 0x31, 0x05, 0x1E, 0x60, 0x60, 0x01, 0x31, 0x85, 0x70, 0x00, 0xF0, 0x00, 0x32, 0x05, 0x70, 0x00, 0xF0, 0x00, 0x32, 0x85, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x33, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x33, 0x81, 0x0D, 0x8E, 0x60, 0x09, 0x34, 0x00, 0x02, 0x54, 0x60, 0x02, 0x34, 0x81, 0x38, 0x80, 0x60, 0x03, 
  0x19, 0x1B, 0x30, 0x12, 0x70, 0x00, 0xF0, 0x00, 0x30, 0x93, 0x70, 0x00, 0xD0, 0x08, 0x17, 0x0B, 0x60, 0x0C, 0xA1, 0x1F, 0x00, 0x40, 0x40, 0x05, 0xF0, 0x00, 
  0x19, 0x1B, 0x00, 0x41, 0x24, 0x3F, 0xD0, 0x80, 0xF0, 0x00, 0x0C, 0x83, 0x60, 0x08, 0x90, 0x00, 0x0C, 0x6B, 0x60, 0x0B, 0xF0, 0x00, 0x70, 0x0C, 0xE6, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x20, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x22, 0x04, 0xF0, 0x00, 0xF0, 0x00, 0x3B, 0xB3, 0xF0, 0x00, 0xF0, 0x00, 0x3C, 0x34, 0xD0, 0x08, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xAD, 0xC8, 0xF0, 0x00, 0x0C, 0x8D, 0x60, 0x08, 0xF0, 0x00, 0x26, 0x0A, 0xD0, 0x80, 0x83, 0xFF, 0x0D, 0x9B, 0x60, 0x08, 
  0x19, 0x1B, 0xF0, 0x00, 0x01, 0xF4, 0x60, 0x00, 0xF0, 0x00, 0x03, 0xB1, 0x60, 0x01, 0x10, 0x00, 0x03, 0xB2, 0x60, 0x02, 0x10, 0x01, 0x04, 0x0E, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x02, 0x04, 0x0F, 0x60, 0x01, 0x10, 0x00, 0x04, 0x5C, 0x60, 0x02, 0x10, 0x01, 0x04, 0x5D, 0x60, 0x00, 0x10, 0x02, 0x13, 0x80, 0x60, 0x01, 
  0x19, 0x1B, 0x10, 0x00, 0x0D, 0xAB, 0x60, 0x09, 0x10, 0x01, 0x02, 0xEE, 0x60, 0x00, 0x10, 0x07, 0x43, 0x06, 0x60, 0x01, 0x10, 0x10, 0x04, 0x69, 0x60, 0x02, 
  0x19, 0x1B, 0x10, 0x11, 0x44, 0x87, 0x60, 0x00, 0x10, 0x12, 0x05, 0xE3, 0x60, 0x01, 0x10, 0x10, 0x46, 0x08, 0x60, 0x02, 0x10, 0x11, 0x06, 0xAE, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x12, 0x0D, 0xA4, 0x60, 0x08, 0x10, 0x10, 0x9E, 0x3C, 0x60, 0x00, 0x10, 0x17, 0x0D, 0xB3, 0x60, 0x09, 0x10, 0x00, 0x25, 0xDA, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x07, 0x80, 0x3D, 0x60, 0x01, 0x10, 0x10, 0x28, 0x82, 0x60, 0x02, 0x10, 0x11, 0xC0, 0x3D, 0x60, 0x00, 0x10, 0x12, 0x28, 0x87, 0x60, 0x01, 
  0x19, 0x1B, 0x10, 0x10, 0xC0, 0x3B, 0x60, 0x02, 0x10, 0x11, 0x28, 0x8C, 0x60, 0x00, 0x10, 0x12, 0xC0, 0x3B, 0x60, 0x01, 0x10, 0x10, 0x28, 0x91, 0x60, 0x02, 
  0x19, 0x1B, 0x10, 0x11, 0xC0, 0x3B, 0x60, 0x00, 0x10, 0x12, 0x28, 0x96, 0x60, 0x01, 0x10, 0x10, 0xC0, 0x3B, 0x60, 0x02, 0x10, 0x11, 0x28, 0x9B, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x12, 0xC0, 0x3B, 0x60, 0x01, 0x10, 0x10, 0x28, 0xA0, 0x60, 0x02, 0x10, 0x11, 0x40, 0x3C, 0x60, 0x00, 0x10, 0x12, 0x28, 0xA5, 0x60, 0x01, 
  0x19, 0x1B, 0x10, 0x10, 0xC0, 0x3C, 0x60, 0x02, 0x10, 0x11, 0x28, 0xAA, 0x60, 0x00, 0x10, 0x12, 0xC0, 0x3C, 0x60, 0x01, 0x10, 0x10, 0x28, 0xAF, 0x60, 0x02, 
  0x19, 0x1B, 0x10, 0x11, 0xC0, 0x3C, 0x60, 0x00, 0x10, 0x12, 0x28, 0xB4, 0x60, 0x01, 0x10, 0x10, 0xC0, 0x3C, 0x60, 0x02, 0x10, 0x11, 0x28, 0xB9, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x12, 0xC0, 0x3C, 0x60, 0x01, 0x10, 0x10, 0x28, 0xBE, 0x60, 0x02, 0x10, 0x11, 0xC0, 0x3C, 0x60, 0x00, 0x10, 0x12, 0x29, 0xCC, 0x60, 0x01, 
  0x19, 0x1B, 0x10, 0x10, 0x00, 0x37, 0x60, 0x02, 0x10, 0x11, 0x29, 0xD1, 0x60, 0x00, 0x10, 0x12, 0x00, 0x37, 0x60, 0x01, 0x10, 0x10, 0x29, 0xD6, 0x60, 0x02, 
  0x19, 0x1B, 0x10, 0x11, 0x00, 0x37, 0x60, 0x00, 0x10, 0x12, 0x29, 0xDB, 0x60, 0x01, 0x10, 0x10, 0x00, 0x37, 0x60, 0x02, 0x10, 0x11, 0x0D, 0xD8, 0x60, 0x08, 
  0x19, 0x1B, 0x10, 0x12, 0x27, 0x15, 0x60, 0x00, 0x10, 0x17, 0x40, 0x3E, 0x60, 0x01, 0x10, 0x00, 0x27, 0x1A, 0x60, 0x02, 0x10, 0x01, 0x80, 0x3C, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x02, 0x28, 0x64, 0x60, 0x01, 0x10, 0x00, 0x40, 0x3C, 0x60, 0x02, 0x10, 0x01, 0x28, 0x69, 0x60, 0x00, 0x10, 0x02, 0x40, 0x3C, 0x60, 0x01, 
  0x19, 0x1B, 0x10, 0x00, 0x28, 0x6E, 0x60, 0x02, 0x10, 0x01, 0x80, 0x3A, 0x60, 0x00, 0x10, 0x02, 0x28, 0x73, 0x60, 0x01, 0x10, 0x00, 0x80, 0x3A, 0x60, 0x02, 
  0x19, 0x1B, 0x10, 0x01, 0x28, 0xA0, 0x60, 0x00, 0x10, 0x02, 0x40, 0x3C, 0x60, 0x01, 0x10, 0x00, 0x29, 0xCC, 0x60, 0x02, 0x10, 0x01, 0x00, 0x37, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x02, 0x29, 0xD1, 0x60, 0x01, 0x10, 0x00, 0x00, 0x37, 0x60, 0x02, 0x10, 0x01, 0x29, 0xD6, 0x60, 0x00, 0x10, 0x02, 0x00, 0x37, 0x60, 0x01, 
  0x19, 0x1B, 0x10, 0x00, 0x29, 0xDB, 0x60, 0x02, 0x10, 0x01, 0x00, 0x37, 0x60, 0x00, 0x10, 0x02, 0x0D, 0xEF, 0x60, 0x09, 0x10, 0x00, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x10, 0x07, 0x70, 0x00, 0xF0, 0x00, 0x10, 0x17, 0x70, 0x00, 0xD0, 0x08, 0x0C, 0xDF, 0x60, 0x0B, 0xA0, 0xBF, 0x30, 0x30, 0x23, 0xD6, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x26, 0xE8, 0xD0, 0x80, 0x0D, 0x9B, 0x60, 0x08, 0xA0, 0xBC, 0xF0, 0x00, 0x00, 0x02, 0xA0, 0xBB, 0x90, 0x82, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x82, 0x8A, 0x70, 0x00, 0x90, 0x03, 0x90, 0x8A, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xFB, 0x82, 0xBF, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x01, 0x99, 0xD2, 0x80, 0xF0, 0x00, 0x0D, 0x9A, 0x60, 0x08, 0xF0, 0x00, 0x26, 0xC1, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x02, 0xA0, 0xB2, 
  0x19, 0x1B, 0x90, 0x82, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x8A, 0x70, 0x00, 0x90, 0x03, 0x90, 0x8A, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xFB, 
  0x19, 0x1B, 0x82, 0x80, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x0D, 0xAB, 0x60, 0x0D, 0xF0, 0x00, 0x3F, 0xFF, 0x60, 0x02, 
  0x19, 0x1B, 0xF0, 0x00, 0x00, 0x51, 0xA0, 0xA9, 0xC2, 0x53, 0x70, 0x00, 0xF0, 0x00, 0x8E, 0xC4, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x97, 0xFC, 
  0x19, 0x1B, 0xD4, 0x8F, 0x01, 0x99, 0xD2, 0x80, 0x40, 0x05, 0x0D, 0xA4, 0x60, 0x0D, 0x40, 0x17, 0x3F, 0xFF, 0x60, 0x02, 0x9F, 0x7D, 0x00, 0x51, 0xA0, 0xA2, 
  0x19, 0x1B, 0xC2, 0x53, 0x70, 0x00, 0xF0, 0x00, 0x82, 0xC4, 0x27, 0x1C, 0xD1, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x97, 0xFC, 0x91, 0x46, 0x27, 0x20, 0xD0, 0x80, 
  0x19, 0x1B, 0x40, 0x07, 0x01, 0x99, 0xD2, 0x80, 0xF0, 0x00, 0x0D, 0x8E, 0x60, 0x0E, 0x40, 0x07, 0x25, 0xC1, 0xA0, 0x9B, 0x9E, 0x79, 0x2E, 0x40, 0x40, 0x14, 
  0x19, 0x1B, 0x40, 0x36, 0x31, 0x67, 0x90, 0x19, 0x2F, 0x45, 0x19, 0x64, 0x60, 0x02, 0x4F, 0xF0, 0x1A, 0x5E, 0x60, 0x03, 0x83, 0x54, 0x40, 0x36, 0xF0, 0x00, 
  0x19, 0x1B, 0x83, 0x5C, 0x40, 0x00, 0xE2, 0x00, 0xF0, 0x00, 0x40, 0x10, 0xE2, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x9C, 0x11, 0xF0, 0x00, 0x0D, 0xD8, 0x60, 0x0D, 0x40, 0x36, 0x22, 0xF0, 0xD2, 0x80, 0x0D, 0xB3, 0x60, 0x0D, 0xE6, 0x00, 
  0x19, 0x1B, 0x40, 0x14, 0x21, 0x40, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x51, 0xA0, 0x8C, 0x90, 0x41, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x45, 0x70, 0x00, 0x90, 0x1D, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0xDC, 0x8F, 0xFB, 0x20, 0xD1, 0x3F, 0xFF, 0x60, 0x02, 0xF0, 0x00, 0x0C, 0xDF, 0x60, 0x0B, 
  0x19, 0x1B, 0xC2, 0x53, 0x31, 0x61, 0xF0, 0x00, 0xD4, 0x8E, 0x30, 0x33, 0xF0, 0x00, 0xD4, 0x4A, 0x37, 0xC6, 0xF0, 0x00, 0xC6, 0xA2, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xC3, 0xA0, 0x3D, 0x42, 0xF0, 0x00, 0xF0, 0x00, 0x31, 0xE0, 0xD0, 0x08, 0xC6, 0x24, 0x31, 0xE0, 0xF0, 0x00, 0x90, 0x00, 0x3D, 0x44, 0xF0, 0x00, 
  0x19, 0x1B, 0x83, 0xB6, 0x70, 0x00, 0xE0, 0x40, 0x40, 0xD5, 0x21, 0x41, 0xA0, 0x7C, 0xCC, 0x0B, 0x40, 0x00, 0xF0, 0x00, 0x80, 0xED, 0x23, 0xEA, 0xD2, 0x80, 
  0x19, 0x1B, 0xBF, 0x60, 0x20, 0x60, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0xE1, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0xEA, 0xD2, 0x80, 0x90, 0xC6, 0x23, 0xDE, 0xD2, 0x80, 
  0x19, 0x1B, 0x4F, 0x95, 0x40, 0x14, 0xA0, 0x75, 0x81, 0x75, 0x70, 0x00, 0xF0, 0x00, 0xAF, 0x43, 0x70, 0x00, 0xF0, 0x00, 0xC2, 0xE0, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x80, 0xC3, 0x0C, 0xDF, 0x60, 0x0B, 0xF0, 0x00, 0x33, 0x63, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0xE3, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x33, 0xA0, 0x41, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x80, 0x12, 0x40, 0xD5, 0x21, 0x41, 0xA0, 0x6C, 0xCC, 0x0B, 0x40, 0x00, 0xF0, 0x00, 0x80, 0xED, 0x23, 0xEA, 0xD2, 0x80, 
  0x19, 0x1B, 0xBF, 0x60, 0x20, 0x60, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0xE1, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0xEA, 0xD2, 0x80, 0x90, 0xC6, 0x23, 0xDE, 0xD2, 0x80, 
  0x19, 0x1B, 0x4F, 0x95, 0x40, 0x14, 0xA0, 0x65, 0x81, 0x75, 0x70, 0x00, 0x40, 0x06, 0xAF, 0x43, 0x70, 0x00, 0xF0, 0x00, 0xC2, 0xE0, 0x0C, 0xDF, 0x60, 0x0B, 
  0x19, 0x1B, 0xF0, 0x00, 0x31, 0xE0, 0xF0, 0x00, 0x80, 0xC3, 0x40, 0x36, 0xE6, 0x00, 0xC6, 0x24, 0x30, 0x33, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x63, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x34, 0xE3, 0xF0, 0x00, 0xF0, 0x00, 0x3D, 0x44, 0xF0, 0x00, 0xF0, 0x00, 0x37, 0xC6, 0xA0, 0x2E, 0xF0, 0x00, 0x23, 0x66, 0xA0, 0x31, 
  0x19, 0x1B, 0x82, 0x92, 0x0B, 0xB8, 0x60, 0x03, 0x47, 0xF4, 0x23, 0xE0, 0xD2, 0x80, 0x52, 0x08, 0x60, 0x05, 0x98, 0x03, 0x82, 0x92, 0x52, 0x08, 0x60, 0x03, 
  0x19, 0x1B, 0x47, 0xF4, 0x23, 0xE0, 0xD2, 0x80, 0x52, 0x08, 0x60, 0x05, 0x98, 0x23, 0xF0, 0x00, 0x33, 0xE4, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x65, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x35, 0x64, 0xF0, 0x00, 0xF0, 0x00, 0x35, 0xE5, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0x66, 0xA0, 0x4F, 0x91, 0x8E, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x33, 0x66, 0xA0, 0x24, 0x82, 0x92, 0x52, 0x08, 0x60, 0x03, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9C, 0x05, 
  0x19, 0x1B, 0x82, 0x92, 0x0B, 0xB8, 0x60, 0x03, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9B, 0xF7, 0x0D, 0x94, 0x60, 0x0D, 0xA0, 0x2B, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xF5, 0xF0, 0x00, 0x24, 0xE6, 0xA0, 0x44, 0x9F, 0xBE, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0xE6, 0xA0, 0x19, 
  0x19, 0x1B, 0x82, 0x92, 0x52, 0x08, 0x60, 0x03, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9C, 0x05, 0x82, 0x92, 0x0B, 0xB8, 0x60, 0x03, 
  0x19, 0x1B, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9B, 0xF7, 0x0D, 0x97, 0x60, 0x0D, 0xA0, 0x20, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xF5, 
  0x19, 0x1B, 0x40, 0x14, 0x23, 0xE1, 0xA0, 0x39, 0xC2, 0x63, 0x25, 0x62, 0xF0, 0x00, 0xF0, 0x00, 0x24, 0x65, 0x90, 0x07, 0xC2, 0xA3, 0x25, 0xE6, 0xF0, 0x00, 
  0x19, 0x1B, 0x90, 0x80, 0x70, 0x00, 0x90, 0x02, 0x83, 0x77, 0x70, 0x00, 0xF0, 0x00, 0x25, 0x60, 0x23, 0xE0, 0xEB, 0xC0, 0x0C, 0xDF, 0x60, 0x0B, 0xA0, 0x32, 
  0x19, 0x1B, 0xF0, 0x00, 0x30, 0x30, 0xF0, 0x00, 0xF0, 0x00, 0x21, 0xE0, 0xD0, 0x08, 0xC2, 0xA3, 0x25, 0xE6, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x93, 0xF9, 
  0x19, 0x1B, 0x90, 0x40, 0x70, 0x00, 0x8F, 0xFA, 0xF0, 0x00, 0x21, 0xE0, 0xAF, 0x0F, 0xF0, 0x00, 0x24, 0x62, 0xD2, 0x80, 0xF0, 0x00, 0x32, 0x60, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x32, 0xE1, 0xD0, 0x08, 0xF0, 0x00, 0x23, 0xED, 0xD2, 0x80, 0xB8, 0x68, 0x22, 0x60, 0xF0, 0x00, 0xF0, 0x00, 0x22, 0xE1, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x23, 0xEA, 0xD2, 0x80, 0xF0, 0x00, 0x23, 0xDE, 0xD2, 0x80, 0xA9, 0x88, 0x70, 0x00, 0xF0, 0x00, 0xAB, 0xF8, 0x23, 0xE4, 0xD2, 0x80, 
  0x19, 0x1B, 0x46, 0x43, 0x21, 0x42, 0xA0, 0x21, 0xA0, 0x98, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0xE7, 0xD2, 0x80, 0xF0, 0x00, 0x23, 0xC6, 0xD2, 0x80, 
  0x19, 0x1B, 0x90, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xDC, 0x09, 0xF0, 0x00, 0x23, 0xCE, 0xD0, 0x80, 0x47, 0xE5, 0x70, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0x40, 0x16, 0x20, 0xD3, 0xA0, 0x19, 0x83, 0x5D, 0x20, 0x52, 0xF0, 0x00, 0xC2, 0xF5, 0x21, 0x54, 0x98, 0x07, 0xC2, 0xB6, 0x70, 0x00, 0x90, 0x02, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x05, 0xF0, 0x00, 0x70, 0x00, 0x80, 0x02, 0xC2, 0xB6, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD4, 0x09, 
  0x19, 0x1B, 0x82, 0x64, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xDC, 0x09, 0xF0, 0x00, 0x31, 0x51, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0xD2, 0xD0, 0x08, 
  0x19, 0x1B, 0x0D, 0xEF, 0x60, 0x0B, 0xA0, 0x0D, 0x9E, 0x79, 0x20, 0x36, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x45, 0xF0, 0x00, 0x9F, 0xBC, 0x70, 0x00, 0xE0, 0x40, 
  0x19, 0x1B, 0x91, 0x45, 0x70, 0x00, 0xD0, 0x09, 0x26, 0x44, 0x27, 0x2D, 0xD5, 0x80, 0x91, 0x86, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x27, 0x32, 0xD5, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xAF, 0x67, 0x2F, 0x41, 0x27, 0x36, 0xD0, 0x80, 0xF0, 0x00, 0x29, 0x15, 0xD2, 0x80, 0xF0, 0x00, 0x3B, 0x9B, 0xD2, 0x80, 
  0x19, 0x1B, 0xF0, 0x00, 0x28, 0x88, 0xD0, 0x80, 0xF0, 0x00, 0x28, 0xDD, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x16, 0xC3, 0x60, 0x08, 
  0x19, 0x1B, 0xF0, 0x00, 0x00, 0x9A, 0x60, 0x00, 0xF0, 0x00, 0x02, 0xE3, 0x60, 0x00, 0x10, 0x00, 0x04, 0xF4, 0x60, 0x00, 0x10, 0x00, 0x06, 0xFF, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x09, 0x07, 0x60, 0x00, 0x10, 0x00, 0x0B, 0x10, 0x60, 0x00, 0x10, 0x00, 0x0D, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x0F, 0x65, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x0F, 0x65, 0x60, 0x00, 0x10, 0x00, 0x0D, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x0B, 0x10, 0x60, 0x00, 0x10, 0x00, 0x09, 0x07, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x06, 0xFF, 0x60, 0x00, 0x10, 0x00, 0x04, 0xF4, 0x60, 0x00, 0x10, 0x00, 0x02, 0xE3, 0x60, 0x00, 0x10, 0x00, 0x00, 0x9A, 0x60, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x16, 0xD3, 0x60, 0x08, 0xF0, 0x00, 0xFF, 0x93, 0x60, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0xFE, 0x37, 0x60, 0x00, 0x10, 0x00, 0xFD, 0xD9, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x9F, 0x60, 0x00, 0x10, 0x00, 0x03, 0x85, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x0D, 0x6B, 0x60, 0x00, 0x10, 0x00, 0x16, 0x84, 0x60, 0x00, 0x10, 0x00, 0x1E, 0x49, 0x60, 0x00, 0x10, 0x00, 0x1E, 0x49, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x16, 0x84, 0x60, 0x00, 0x10, 0x00, 0x0D, 0x6B, 0x60, 0x00, 0x10, 0x00, 0x03, 0x85, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x9F, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xFD, 0xD9, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x37, 0x60, 0x00, 0x10, 0x00, 0xFF, 0x93, 0x60, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x16, 0xE3, 0x60, 0x08, 0xF0, 0x00, 0x00, 0x64, 0x60, 0x00, 0xF0, 0x00, 0xFF, 0xA8, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xFF, 0xA6, 0x60, 0x00, 0x10, 0x00, 0xFF, 0xDF, 0x60, 0x00, 0x10, 0x00, 0x00, 0x01, 0x60, 0x00, 0x10, 0x00, 0x01, 0x28, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x01, 0x2F, 0x60, 0x00, 0x10, 0x00, 0xFD, 0x23, 0x60, 0x00, 0x10, 0x00, 0xFD, 0xA1, 0x60, 0x00, 0x10, 0x00, 0x03, 0x89, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x02, 0x54, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x7D, 0x60, 0x00, 0x10, 0x00, 0x00, 0x8C, 0x60, 0x00, 0x10, 0x00, 0xFB, 0xE1, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xF9, 0x42, 0x60, 0x00, 0x10, 0x00, 0x0C, 0x47, 0x60, 0x00, 0x10, 0x00, 0x0E, 0xA2, 0x60, 0x00, 0x10, 0x00, 0xEC, 0x43, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xEA, 0xCE, 0x60, 0x00, 0x10, 0x00, 0x17, 0x46, 0x60, 0x00, 0x10, 0x00, 0x17, 0x46, 0x60, 0x00, 0x10, 0x00, 0xEA, 0xCE, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xEC, 0x43, 0x60, 0x00, 0x10, 0x00, 0x0E, 0xA2, 0x60, 0x00, 0x10, 0x00, 0x0C, 0x47, 0x60, 0x00, 0x10, 0x00, 0xF9, 0x42, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xFB, 0xE1, 0x60, 0x00, 0x10, 0x00, 0x00, 0x8C, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x7D, 0x60, 0x00, 0x10, 0x00, 0x02, 0x54, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x03, 0x89, 0x60, 0x00, 0x10, 0x00, 0xFD, 0xA1, 0x60, 0x00, 0x10, 0x00, 0xFD, 0x23, 0x60, 0x00, 0x10, 0x00, 0x01, 0x2F, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x01, 0x28, 0x60, 0x00, 0x10, 0x00, 0x00, 0x01, 0x60, 0x00, 0x10, 0x00, 0xFF, 0xDF, 0x60, 0x00, 0x10, 0x00, 0xFF, 0xA6, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0xFF, 0xA8, 0x60, 0x00, 0x10, 0x00, 0x00, 0x64, 0x60, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 
  0x19, 0x1B, 0xF0, 0x00, 0x17, 0x0B, 0x60, 0x08, 0xF0, 0x00, 0x00, 0x03, 0x60, 0x00, 0xF0, 0x00, 0x54, 0xC0, 0x60, 0x00, 0x10, 0x00, 0x00, 0x05, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x00, 0x05, 0x60, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x60, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x60, 0x00, 0x10, 0x00, 0x09, 0xC0, 0x60, 0x00, 
  0x19, 0x1B, 0x10, 0x00, 0x0A, 0x20, 0x60, 0x00, 0x10, 0x00, 0x1D, 0x40, 0x60, 0x00, 0x10, 0x00, 0x1E, 0x60, 0x60, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 
  0x0D, 0x1B, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08,
  0x03, 0x1C, 0x00, 0x00,                                           // Clear Required Initialization Control
  0x03, 0x1C, 0x00, 0x75,                                           // Set Required Initialization Control(2)
	/* Load Required Initialization    Beginning of DSP_INIT bytes */
  0x19, 0x1B, 0x40, 0x13, 0x40, 0x2F, 0x41, 0x68, 0x41, 0xC1, 0x42, 0x14, 0x42, 0xA6, 0x44, 0xDE, 0x44, 0xE9, 0x45, 0xFB, 0x46, 0x11, 0x47, 0xC5, 0x47, 0xFC, 
  0x19, 0x1B, 0x4D, 0x5D, 0x4E, 0x56, 0x4E, 0x58, 0x4E, 0x5B, 0x4D, 0x83, 0x4E, 0x0A, 0x4E, 0x0B, 0x4E, 0x49, 0x4E, 0x53, 0x4F, 0x92, 0x4F, 0xEA, 0x50, 0x41, 
  0x19, 0x1B, 0x50, 0x74, 0x50, 0x80, 0x55, 0x31, 0x56, 0x60, 0x56, 0xD4, 0x56, 0xD9, 0x58, 0x29, 0x59, 0xB4, 0x5A, 0x3A, 0x5B, 0x79, 0x5B, 0xA2, 0x5B, 0xEF, 
  0x19, 0x1B, 0x5D, 0xDC, 0x60, 0x3A, 0x60, 0x88, 0x60, 0xA8, 0x61, 0x9F, 0x61, 0xB6, 0x61, 0xDF, 0x61, 0xF5, 0x62, 0x14, 0x62, 0x59, 0x62, 0x9B, 0x62, 0xA1, 
  0x17, 0x1B, 0x63, 0x69, 0x64, 0x3B, 0x66, 0x09, 0x66, 0xE7, 0x67, 0x0B, 0x67, 0x1A, 0x67, 0x29, 0x68, 0x87, 0x68, 0x99, 0x68, 0xA7, 0x68, 0xB2, 
  0x03, 0x1C, 0x00, 0x00,                                           // Clear Required Initialization Control
  0x03, 0x14, 0x00, 0x01,                                           // Start Firmware....
  INIT_FLAG_TIMER, 50,                                              // Wait 50 ms
  0x09, 0x40, 0x04, 0x01, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00,       // 9216 MHz crystal reference
  //0x09, 0x40, 0x04, 0x01, 0x00, 0x3D, 0x09, 0x00, 0x00, 0x00,       // 4000 MHz crystal reference
  0x05, 0x40, 0x05, 0x01, 0x00, 0x01,                               // Command APPL_Activate will bring the device into ?active state? = radio standby
  INIT_FLAG_TIMER, 100,                                             // Wait 100 ms
  0
};




void TEF6686_Config(void)
{
	IIC_Config();

}





void SendTEF6686_DevWriteAddress(void)
{
	
	//器件地址
	IIC_SendByte(DSP_I2C_WRITE);
		
}

void SendTEF6686_DevReadAddress(void)
{
	//器件地址
	IIC_SendByte(DSP_I2C_READ);
		
}



void TEF6686_WaitI2C(void)
{
	Delay_ms(40);
	
	
	u8 buf1 = 9;
	u8 buf2 = 9;
	char buf[20] = {99};
  	
	
		
	IIC_Start();								//開始訊號
	IIC_SendByte(DSP_I2C_WRITE);	//裝置寫地址
		if( IIC_IsSlaveACK() == false) 
	{
		printf("No ACK\r\n");	
		IIC_Stop();
		while(1);
	}
	else
		printf("!!!ACK!!!\r\n");	

	
	//[ w 40 80 01 ]
	IIC_SendByte(0x40);
	IIC_IsSlaveACK();		
	IIC_SendByte(0x80);
	IIC_IsSlaveACK();			
	IIC_SendByte(0x01);
	IIC_IsSlaveACK();	
	
	IIC_Stop();

	//讀取狀態,判斷裝置是否在I2C匯流排上處於啟動狀態    
	IIC_Start();
	IIC_SendByte(DSP_I2C_READ);			//裝置讀地址
	IIC_IsSlaveACK();		
	
	//[ r 0000 ]
	buf1 =IIC_ReadByte();
	IIC_MasterACK(0);
	
	buf2 =IIC_ReadByte();
	IIC_MasterACK(1);
		
	sprintf(buf,"%02x%02x", buf1, buf2);
	printf("Before init TEF6686 status = %s\r\n", (char*)buf);
			
		IIC_Stop();
	
	
	
	
	
}



void I2C_Transmit(uint8_t addr, uint8_t *data, uint16_t size)
{
	IIC_Start();					//起始訊號	
	IIC_SendByte(addr);		//從器件地址
	IIC_IsSlaveACK();			//從機應答
	
	for(uint16_t i = 0;i<size;i++)
	{
		IIC_SendByte(data[i]);	//傳送一個位元組
		IIC_IsSlaveACK();			//從機應答
	}
	
	IIC_Stop();					//停止訊號
}

void DSP_WRITE_DATA(const uint8_t* data)
{
	uint8_t len;
	uint8_t *pa = (uint8_t *)data;	//指標複製
	for (;;)
	{
		len = *pa;
		pa++;
		if (!len)
			break;
		if (len & 0x80)
		{
			Delay_ms(*pa);
			pa++;
		}
		else
		{
			I2C_Transmit(DSP_I2C_WRITE, pa, len);
			pa = pa + len;
		}
	}
}

void TEF6686_Init(void)
{	
	
	TEF6686_Config();	
	Delay_ms(50);

	u16 status;
	//Get_Cmd(64, 128, &status, 1);							//讀取狀態
	Get_Operation_Status( &status);
	printf("TEF6686 status =%x\r\n", status);
	
	if(status != 0x02)
	{
		DSP_WRITE_DATA(DSP_INIT_V102);	
		//Get_Cmd(64, 128, &status, 1);
		Get_Operation_Status( &status);
		printf("After init TEF6686 status =%x\r\n", status);
	}
	
//	DSP_WRITE_DATA(DSP_INIT_V102);	
//		Get_Cmd(64, 128, &status, 1);
//		printf("After init TEF6686 status =%x\r\n", status);
	
}


TEF6686.h

#ifndef __TEF6686_H
#define __TEF6686_H

#include "stm32f10x.h"  
#include "Delay.h"
#include "SysTick.h"
#include "IIC.h"
#include <stdio.h>
#include <stdarg.h>
#include "TEF6686_command.h"


#define INIT_FLAG_TIMER  	(0xFF)
#define DSP_I2C_WRITE			(0xC8)
#define DSP_I2C_READ			(0xC9)





void TEF6686_Config(void);
void TEF6686_WaitI2C(void);
void TEF6686_Init(void);
u16 APPL_Get_Operation_Status(void);
void DSP_WRITE_DATA(const uint8_t* data);
void I2C_Transmit(uint8_t addr, uint8_t *data, uint16_t size);




#endif

TEF6686_command.c

#include "TEF6686_command.h"

/**
 * @file name : TEF6686_command.c
 * @brief     : 用於實現對TEF6686進行讀/寫操作和指令
 * @author    :	Dazz_24@163.com
 * @date      : 2024/09/25
 * @version   : 1.0
 * @note      :	None
 * CopyRight (c)  2023-2024   Dazz_24@163.com   All Right Reseverd
 */

/*********************************************************************************************讀/寫操作************************************************************************************************************/

/**
 * @name      :Get_Cmd
 * @brief     :TEF6686讀操作
 * @params
 *                @mdl  		 : 模組
 *                @cmd   		 : 命令
 *                @receive   : 快取區地址
 *                @len   		 : 讀取資料的長度,兩個位元組為1個單位長度
 * @version   : 1.0
 * @note			: None
 */
void Get_Cmd(uint8_t mdl, uint8_t cmd, u16 *receive, uint8_t len)
{
	IIC_Start();
	IIC_SendByte(DSP_I2C_WRITE);
	if( IIC_IsSlaveACK() == false) 
	{
		printf("No ACK\r\n");	
		IIC_Stop();
		while(1);
	}

	
	IIC_SendByte(mdl);
	IIC_IsSlaveACK();
	IIC_SendByte(cmd);
	IIC_IsSlaveACK();
	IIC_SendByte(0x01);
	IIC_IsSlaveACK();
	
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(DSP_I2C_READ);			//裝置讀地址
	IIC_IsSlaveACK();	

	IIC_ReadBytes(len, receive);
	
	IIC_Stop();
}


/**
 * @name      :Set_Cmd
 * @brief     :TEF6686寫操作
 * @params
 *                @mdl  	 : 模組
 *                @cmd     : 命令
 *                @len     : len後面引數的個數
 *                @vArgs   : 剩餘個數可變的引數
 * @version   : 1.0
 * @note			: None
 */
void Set_Cmd(uint8_t mdl, uint8_t cmd, int len, ...)
{
	uint16_t temp;
	va_list vArgs;
	va_start(vArgs, len);
	
	IIC_Start();
	IIC_SendByte(DSP_I2C_WRITE);
	if( IIC_IsSlaveACK() == false) 
	{
		printf("No ACK\r\n");	
		IIC_Stop();
		while(1);
	}
	
	IIC_SendByte(mdl);
	IIC_IsSlaveACK();
	IIC_SendByte(cmd);
	IIC_IsSlaveACK();
	IIC_SendByte(0x01);
	IIC_IsSlaveACK();
	
	for (u8 i = 0; i < len; i++)
	{
		temp = va_arg(vArgs, u32);
		IIC_SendByte((u8)(temp >> 8));
		IIC_IsSlaveACK();
		IIC_SendByte((u8)temp);
		IIC_IsSlaveACK();
	}
	IIC_Stop();
	va_end(vArgs);
}

/***********************************************************************************************寫指令************************************************************************************************************/


/**
 * @name      : Tune_To
 * @brief     : 設定FM的頻率
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式
 *																	No_action           	 不採取行動
 *																	Preset                 預設更改,短靜音跳轉再釋放靜音
 *																	Search                 調到新節目,保持靜音,啟用廣播和FM/AM更改
 *																	Afupdate               調諧到替代頻率,儲存質量和調回與聽不清的靜音
 *																	Jump                   用聽不清的靜音調調諧到其他頻率
 *																	Check                  調諧到其他頻率,並保持沉默
 *																	Reserved               保留位
 *																	End                    釋放搜尋或檢查操作的靜音狀態(頻率不需要且會被忽略)
 *                @frequency   : 調整的頻率,FM的單位是MHZ,範圍是65MHZ~108Mhz如選擇FM,該引數的值是需要調整的頻率乘100;AM的單位是kHZ                            
 *
 * @version   : 1.0
 * @note			: 1、在FM模式下,引數frequency的值是目標頻率值乘100,例如需要調整到FM 89.3 MHz,則引數frequency需要填8930
 *							2、如需調整的模式為End,則引數frequency為任意值即可
 */
void Tune_To(TEF6686Module_t module,TEF6686_TuneMode_t mode,uint16_t frequency)
{
		if(End == mode)
			Set_Cmd(module, 1, 1, mode);
		else
			Set_Cmd(module, 1, 2, mode, frequency);					
}


/**
 * @name      : FM_Set_Tune_Options
 * @brief     : 在調優操作期間(FM AF_Update)使用的設定 
 * @params
 *                @mode  	     : 在AF_Update期間的中頻頻寬控制模式,該引數的預設值為Fixed,詳情可見列舉TEF6686_BandwidthControlmode_t
 *                @bandwidth   : AF_Update期間的中頻頻寬,單位是kHZ 
 *                @MuteTime    : AF_Update期間聽不到的靜音斜率時間,單位是us,1000us是預設時間
 *                @SampleTime  : AF_Update期間的取樣時間,單位是us,2000us是預設時間
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Tune_Options(TEF6686_BandwidthControlMode_t mode, uint16_t bandwidth, u16 MuteTime, u16 SampleTime)
{
			Set_Cmd(FM, 2, 4, mode, bandwidth*10, MuteTime, SampleTime);
}


/**
 * @name      : Set_Bandwidth
 * @brief     : 無線電選擇性濾波器的固定頻寬選擇。 
 * @params
 *                @module  	  						: 調製方式(FM/AM)
 *                @mode  	   						  : 頻寬控制方式,FM的預設值為AutoBandwidth,AM的預設值為Fixed,詳情可見列舉TEF6686_BandwidthControlmode_t
 *                @bandwidth   						: 固定中頻頻寬,單位為kHZ,FM的預設值為 236 kHz,AM的預設值為 4.0 kHz  
 *                @control_sensitivity    : FM調製下的自動中頻頻寬控制靈敏度,單位為%,預設值為100%,如調整方式為AM,則該引數可填任意值
 *                @low_level_sensitivity	: FM調製下的低水平自動中頻頻寬控制靈敏度,單位為%,預設值為100%,如調整方式為AM,則該引數可填任意值
 *
 * @version   : 1.0
 * @note			: 1、如調製方式為AM,則引數control_sensitivity和引數low_level_sensitivity的值為任意值
 *							2、對於FM,支援以下16個頻寬設定: 56 / 64 / 72 / 84 / 97 / 114 / 133 / 151 / 168 / 184 / 200 / 217 / 236 / 254 / 287 / 311 kHz。
 * 							3、對於AM,支援以下四種頻寬設定: 3 / 4 / 6 / 8 kHz。其他頻寬引數值被四捨五入到最近的支援頻寬。
 *							
 */
void Set_Bandwidth(TEF6686Module_t module,TEF6686_BandwidthControlMode_t mode, uint16_t bandwidth, u16 control_sensitivity, u16 low_level_sensitivity)
{
		//FM
		if(FM == module)
			Set_Cmd(module, 10, 4, mode, bandwidth*10, control_sensitivity*10, low_level_sensitivity*10);
		//AM
		else
			Set_Cmd(module, 10, 2, mode, bandwidth*10);
}

/**
 * @name      : Set_RFAGC
 * @brief     : 調諧器前端AGC的啟動水平。 
 * @params
 *                @module  	  	: 調製方式(FM/AM)
 *                @start   			: RF AGC啟動值,單位為dBuV,FM的預設值為92dBuV,AM的預設值為100dBuV
 *                @extension    : RF AGC步長擴充套件,FM可填Integrated(僅整合步驟,為預設值)和Extension(來自控制輸出的AGC步驟擴充套件(GPIO特性“AGC”),AM調製該引數為任意值
 *
 * @version   : 1.0
 * @note			: 1、為了防止關鍵定時並確保適當的FM AGC功能,在使用AM到FM頻帶變化時適用以下傳輸要求: 
 *                  FM_Set_RFAGC和FM_Set_TuneTo應至少間隔2 ms,FM_Set_TuneTo和FM_Set_RFAGC需要至少11 ms分離。
 *							
 */
void Set_RFAGC(TEF6686Module_t module,u16 start, TEF6686_RFAGC_ExtensionMode_t mode)
{
		//FM
		if(FM == module)
			Set_Cmd(module, 11, 2, start*10, mode);
		//AM
		else
			Set_Cmd(module, 11, 1, start*10);
}


/**
 * @name      : FM_Set_MphSuppression
 * @brief     : 使用/禁用”FM多路抑制系統 
 * @params
 *                @mode   : MultipathSuppression_Enable為啟用多路徑抑制,MultipathSuppression_Disable為禁用多路徑抑制功能,詳情可見列舉TEF6686_MphSuppressionMode_t
 *
 * @version   : 1.0
 * @note			: 建議設定“開啟”以提高現場效能
 *							
 */
void FM_Set_MphSuppression(TEF6686_MphSuppressionMode_t mode)
{

			Set_Cmd(FM, 20, 1,  mode);

}

/**
 * @name      : FM_Set_ChannelEqualizer
 * @brief     : 使用/禁用FM通道均衡器 
 * @params
 *                @mode   : ChannelEqualizer_Enable為啟用通道均衡器,ChannelEqualizer_Disable為禁用通道均衡器,詳情可見列舉TEF6686_ChannelEqualizerMode_t
 *
 * @version   : 1.0
 * @note			: 建議設定“開啟”以改善現場效能 
 *							
 */
void FM_Set_ChannelEqualizer(TEF6686_ChannelEqualizerMode_t mode)
{

			Set_Cmd(FM, 22, 1,  mode);

}


/**
 * @name      : FM_Set_NoiseBlanker
 * @brief     : 噪聲空白器選項和靈敏度設定 
 * @params
 *                @mode          : NoiseBlanker_OFF為關閉噪聲熄滅裝置,NoiseBlanker_ON為開啟噪聲熄滅裝置(預設開啟),詳情可見列舉TEF6686_NoiseBlankerMode_t
 *                @sensitivity   : 觸發器靈敏度,單位為%,預設值為100%
 *
 * @version   : 1.0
 * @note			: None
 *							
 */
void FM_Set_NoiseBlanker(TEF6686_NoiseBlankerMode_t mode, u16 sensitivity)
{

			Set_Cmd(FM, 23, 2,  mode, sensitivity*10);

}



/**
 * @name      : FM_Set_Deemphasis
 * @brief     : 調頻消音時間常數的選擇
 * @params
 *                @deemphasis  : 失重時間常數,單位為us,如為0則關閉或用於評估目的,50us deemphasis為預設值                         
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Deemphasis(uint16_t Deemphasis)
{
	Set_Cmd(FM, 31, 1, Deemphasis*10);
}



/**
 * @name      : Set_LevelStep
 * @brief     : 選擇電平校正作為調諧器前端AGC的一個功能
 * @params
 *                @module  	 : 調製方式(FM/AM)
 *                @step1     : 從0到1的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-2dB,AM的預設值是-1dB
 *                @step2     : 從1到2的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-3dB,AM的預設值是-2dB 
 *                @step3     : 從2到3的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-4dB,AM的預設值是-3dB  
 *                @step4     : 從3到4的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-5dB,AM的預設值是-4dB  
 *                @step5     : 從4到5的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-6dB,AM的預設值是-5dB  
 *                @step6     : 從5到6的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM和AM的預設值是-6dB
 *                @step7     : 從6到7(或更高)的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM和AM的預設值是-6dB
 *
 * @version   : 1.0
 * @note			: 一般不建議調整LevelStep的預設值,但允許在高訊號條件下對弱訊號處理進行特定的微調。
 */
void Set_LevelStep(TEF6686Module_t module, short step1, short step2,short step3,short step4,short step5,short step6,short step7)
{
	Set_Cmd(module, 38, 7, step1*10, step2*10, step3*10,step4*10,step5*10,step6*10,step7*10);
}

/**
 * @name      : Set_LevelOffset
 * @brief     : 水平校正的選擇。
 * @params
 *                @module  	 : 調製方式(FM/AM)
 *                @offset    : 水平偏移量,單位是dB,範圍為-48dB ~ +15dB,預設值是0 dB
 *
 * @version   : 1.0
 * @note			: 電平偏移量可以用作天線噪聲電平的總體校正,幷包括在弱訊號處理和Get_Quality()函式的電平讀取值中。
 */
void Set_LevelOffset(TEF6686Module_t module, short offset)
{
	Set_Cmd(module, 39, 1, offset*10);
}

/**
 * @name      : Set_Softmute_Time
 * @brief     : 該函式定義電平檢測器、FM噪聲和多路徑檢測器的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項。
 * @params
 *                @module  	    : 調製方式(FM/AM)
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~1200ms,預設值為120ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為500ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms,FM的預設值為2ms,AM的預設值是12ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms,FM的預設值為2ms,AM的預設值是50ms
 *
 * @version   : 1.0
 * @note			: 建議FM設定為1 ms快速處理,以提高現場效能
 */
void Set_Softmute_Time(TEF6686Module_t module, short slow_attack, short slow_decay, short fast_attack, short fast_decay)
{
	Set_Cmd(module, 40, 4, slow_attack, slow_decay, fast_attack*10, fast_decay*10);
}

/**
 * @name      : Set_Softmute_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅用於評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(預設)
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : 弱訊號處理電平啟動,當液位降到以下時進行控制,單位是dBuV,範圍是0dBuV~50dBuV,FM的預設值是15dBuV,AM的預設值是28dBuV
 *                @slope  : 弱訊號處理電平範圍,單位是dB,控制水平的範圍是6dB~30dB,FM的預設值為22dB,AM的預設值是25dB
 *
 * @version   : 1.0
 * @note			: 建議LW波段的AM設定為34dBuV啟動和30dB斜率,以提高現場效能
 */
void Set_Softmute_Level(TEF6686Module_t module, TEF6686_TimerSelectionMode_t mode, u16 start, u16 slope)
{
	Set_Cmd(module, 42, 3, mode, start*10, slope*10);
}



/**
 * @name      : FM_Set_Softmute_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(預設)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : FM弱訊號處理噪聲開始,高於噪聲時的控制,單位是%,範圍是0%~80%,預設值是50%
 *                @slope  : FM弱訊號處理噪聲範圍,單位是%,控制範圍是10%~100%,預設值為100%
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Softmute_Noise(TEF6686_TimerSelectionMode_t mode, u16 start, u16 slope)
{
	Set_Cmd(FM, 43, 3, mode, start*10, slope*10);
}

/**
 * @name      : FM_Set_Softmute_Mph
 * @brief     : 設定多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(預設)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : FM弱訊號處理多路啟動,高於mph時的控制,單位是%,範圍是0%~80%,預設值是50%
 *                @slope  : FM弱訊號處理多路徑範圍,單位是%,控制範圍是10%~100%,預設值為100%
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Softmute_Mph(TEF6686_TimerSelectionMode_t mode, u16 start, u16 slope)
{
	Set_Cmd(FM, 44, 3, mode, start*10, slope*10);
}



/**
 * @name      : Set_Softmute_Max
 * @brief     : 啟用並定義最大軟衰減量(在訊號差條件下實現)
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_Softmute_WeakSignalHandleMode_t
 *																WeakSignalHandle_ON 			關閉(僅供評估)
 *																WeakSignalHandle_OFF		  開啟;由限制引數定義的最大動態控制(預設值)
 *                @limit  : 軟靜音動態衰減極限,軟靜音最大衰減,單位是dB,範圍是0dB~40dB,FM的預設值是20dB,AM的預設值是25dB
 *
 * @version   : 1.0
 * @note			: 建議LW波段的AM設定為33 dB限制
 */
void Set_Softmute_Max(TEF6686Module_t module,TEF6686_WeakSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(module, 45, 2, mode, limit*10);
}

/**
 * @name      : Set_Highcut_Time
 * @brief     : 定義電平檢測器、FM噪聲和多路徑檢測器的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項。
 * @params
 *                @module  	    : 調製方式(FM/AM)
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~2000ms,預設值為500ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為2000ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms,FM的預設值為2ms,AM的預設值是12ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms,FM的預設值為2ms,AM的預設值是50ms
 *
 * @version   : 1.0
 * @note			: 建議的FM設定為200 ms慢攻擊,1 ms快速攻擊和8 ms快速衰減,以提高現場效能。
 */
void Set_Highcut_Time(TEF6686Module_t module, u16 slow_attack, u16 slow_decay,u16 fast_attack, u16 fast_decay)
{
	Set_Cmd(module, 50, 4, slow_attack, slow_decay, fast_attack*10, fast_decay*10);
}

/**
 * @name      : Set_Highcut_Mod
 * @brief     : 啟用調製依賴性並設定靈敏度
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode   : 與調製相關的弱訊號處理			詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉(預設)
 *														WeakSignalHandling_ON		開啟(獨立調製定時器)
 *                @start  : 弱訊號處理調製啟動,當調製低於該值時控制,單位是%,範圍是10% ~ 100%,預設值為25%(注:對於FM頻段,100%調製等於75 kHz偏差)
 *                @slope  : 弱訊號處理調製範圍,控制調製範圍,單位是%,範圍是 3% ~ 100%,預設值是 13%
 *                @shift  : 弱訊號處理控制換擋,最大弱訊號控制位移,單位是%,範圍是 5% ~ 100%,預設值是50%(從最小控制限制到最大限制的線性控制範圍的百分比)
 *
 * @version   : 1.0
 * @note			: None
 */
void Set_Highcut_Mod(TEF6686Module_t module, TEF6686_WeakSignalHandleMode_t mode, u16 start,u16 slope, u16 shift)
{
	Set_Cmd(module, 51, 4, mode, start*10, slope*10, shift*10);
}


/**
 * @name      : Set_Highcut_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(預設)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(AM預設)
 *																		DoubleTimer			結合快速和慢計時器控制(FM預設)
 *                @start  : 弱訊號處理調製啟動,當電平低於該引數時進行控制,單位是dBuV,範圍是20 dBuV ~ 60 dBuV,FM預設值為36dBuV,AM預設值為40dBuV
 *                @slope  : 弱訊號處理電平範圍,控制水平範圍超過該引數,單位是dB,範圍是 6 dB ~ 30 dB,FM預設值為30dB,AM預設值為20dB
 *
 * @version   : 1.0
 * @note			: 建議MW和SW波段的AM設定為47dBuV啟動,以提高現場效能。建議AM LW波段為52dBuV啟動。
 */
void Set_Highcut_Level(TEF6686Module_t module, TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(module, 52, 3, mode, start*10, slope*10);
}


/**
 * @name      : FM_Set_Highcut_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時(僅限FM)
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(預設)
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : 弱訊號處理調製啟動,當噪聲高於該值時控制,單位是%,範圍是0% ~ 80%,預設值為36%
 *                @slope  : FM弱訊號處理噪聲範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是30%
 *
 * @version   : 1.0
 * @note			: 建議採用“雙定時器”模式,15%的啟動和20%的斜率來提高現場效能。
 */
void FM_Set_Highcut_Noise( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(FM, 53, 3, mode, start*10, slope*10);
}


/**
 * @name      : FM_Set_Highcut_Mph
 * @brief     : 設定多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅供評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(預設)
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : 弱訊號處理多路啟動,當mph高於該引數時進行控制,單位是%,範圍是0% ~ 80%,預設值為36%
 *                @slope  : FM弱訊號處理多路徑範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是30%
 *
 * @version   : 1.0
 * @note			: 建議採用“雙定時器”模式,12%的啟動和16%的斜率來提高現場效能。
 */
void FM_Set_Highcut_Mph( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(FM, 54, 3, mode, start*10, slope*10);
}


/**
 * @name      : Set_Highcut_Max
 * @brief     : 啟用並定義最大高速切割衰減量(在不良訊號條件下實現)。
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉,僅供評估
 *														WeakSignalHandling_OFF		開啟,按限制引數設定的最大動態控制值(預設值)
 *                @limit  : 最高衰減極限,單位為kHZ
 *														FM		高切角頻率,最大衰減頻率為3dB,預設值為4kHZ
 *															 “IIR”篩選器(選項“1”(預設值)),範圍為1.5kHz ~ 7kHz
 *															 ‘deemphasis’模式(選項“2”),範圍為0.7kHz ~ 3kHz
 *																“FIR”高切過濾器(選項“3”),範圍為2.7kHz ~ 7kHz
 *														AM 	高速切割最大值-3 dB,範圍是1.35 kHZ ~ 7 kHz,預設值為1.8kHZ
 *																
 * @version   : 1.0
 * @note			: 1、對於FM,不同的極限範圍適用於FM Set_Highcut_Options(cmd = 59)提供的不同的高速切割控制特性。
 *							2、建議的FM設定為2.4 kHz的限制,以改善“IIR”濾波器場效能
 */
void Set_Highcut_Max( TEF6686Module_t module,TEF6686_WeakSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(module, 55, 2, mode, limit);
}

/**
 * @name      : Set_Highcut_Min
 * @brief     : 可選地定義最小高壓衰減量(在良好訊號條件下實現)。
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 強訊號處理   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;不限制高音訊頻寬(FM預設值)
 *														StrongSignalHandling_ON		  開啟;由限制引數設定的最小控制限制(AM預設值)
 *                @limit  : 高速固定衰減極限,單位為kHZ
 *														FM		最小衰減3dB預設值為10kHZ
 *															 “IIR”篩選器(選項“1”(預設值)),範圍為2.7kHz ~ 15kHz
 *															 ‘deemphasis’模式(選項“2”),範圍為1.5kHz ~ 3.18kHz
 *																“FIR”高切過濾器(選項“3”),範圍為2.7kHz ~ 15kHz
 *														AM 	高速切割最大值-3 dB,範圍是2.7kHz ~ 15kHz,預設值為6kHZ
 *																
 * @version   : 1.0
 * @note			: 1、對於Set_Highcut_Options()函式模式=2的特徵“弱化”,則忽略Set_Deemphasis()函式設定,由FM_Set_Highcut_Min()函式引數模式=1定義50us或7us的弱化,並進行限制。
 *							2、對於一個正常的控制行為,Set_Highcut_Min()函式總是應該設定一個比Set_Highcut_Max()函式更弱的訊號處理限制(即一個更高的頻率)。
 */
void Set_Highcut_Min( TEF6686Module_t module,TEF6686_StrongSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(module, 56, 2, mode, limit);
}

/**
 * @name      : Set_Lowcut_Max
 * @brief     : 啟用並定義最大動態低割衰減,
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉;
 *														WeakSignalHandling_ON		開啟;由極限引數定義的最大動態控制(預設值)
 *                @limit  : 低切動態衰減極限,最大減量的衰減,範圍是30HZ ~ 500Hz單位為HZ,預設值為120 Hz,
 *																
 * @version   : 1.0
 * @note			: 建議F頻設定為100 Hz限制,以改善現場效能。
 */
void Set_Lowcut_Max( TEF6686Module_t module,TEF6686_WeakSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(module, 57, 2, mode, limit);
}

/**
 * @name      : Set_Lowcut_Min
 * @brief     : 可選擇地定義了低訊號頻率的最小衰減。
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;不限制低音訊頻寬(FM預設值)
 *														StrongSignalHandling_ON		  開啟;由限制引數設定的最小控制限制(AM預設值)
 *                @limit  : 低切固定衰減極限,單位為HZ,範圍是10HZ ~ 200Hz,預設值為20 Hz,
 *																
 * @version   : 1.0
 * @note			: 對於一個正常的控制行為,Set_Lowcut_Min()總是應該設定一個比Set_Lowcut_Max()更弱的訊號處理限制(即一個較低的頻率)。
 */
void Set_Lowcut_Min( TEF6686Module_t module,TEF6686_StrongSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(module, 58, 2, mode, limit);
}

/**
 * @name      : FM_Set_Highcut_Options
 * @brief     : 允許選擇三個不同的高速控制特性(僅FM)
 * @params 
 *                @mode  	: FM高速切割控制特性   詳情可見列舉TEF6686_HighCutControlMode_t
 *														IIR 			    	“analog”具有控制頻率的一階低通濾波器(預設)
 *														Deemphasis			50us/75us消音濾波器的控制頻率
 *														FIR							“digital”高階低通濾波器與控制頻率
 *																
 * @version   : 1.0
 * @note			: 1、不同的FM高頻控制特性可用於選擇聲音的味道。
 *							2、除了選項選擇的高壓過濾器型別,適當的值應該寫入FM_Set_Highcut_Min()和FM_Set_Highcut_Max()。
 *							3、在“deemphasis”特性的情況下,FM_Set_Deemphasis()設定將被忽略,而50us的選擇或75us的取消強調則由FM_Set_Highcut_Min()來定義。
 */
void FM_Set_Highcut_Options(TEF6686_HighCutControlMode_t mode)
{
	Set_Cmd(FM, 59, 1, mode);
}

/**
 * @name      : FM_Set_Stereo_Time
 * @brief     : 定義了電平檢測器、噪聲和多路檢測器啟用的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項
 * @params 
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~2000ms,預設值為1000ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為4000ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms
 *																
 * @version   : 1.0
 * @note			: 建議採用200 ms慢攻擊和2 ms快速攻擊,以提高現場效能。
 */
void FM_Set_Stereo_Time(u16 slow_attack, u16 slow_decay, u16 fast_attack, u16 fast_decay)
{
	Set_Cmd(FM, 60, 4, slow_attack, slow_decay, fast_attack*10, fast_decay*10);
}


/**
 * @name      : FM_Set_Stereo_Mod
 * @brief     : 啟用調製依賴性並設定靈敏度
 * @params 
 *                @mode   : 與調製相關的弱訊號處理			詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉(預設)
 *														WeakSignalHandling_ON		開啟(獨立調製定時器)
 *                @start  : 弱訊號處理調製啟動,當調製低於該值時控制,單位是%,範圍是10% ~ 100%,預設值為21%(注:對於FM頻段,100%調製等於75 kHz偏差)
 *                @slope  : 弱訊號處理調製範圍,控制調製範圍,單位是%,範圍是 3% ~ 100%,預設值是 9%
 *                @shift  : 弱訊號處理控制換擋,最大弱訊號控制位移,單位是%,範圍是 5% ~ 100%,預設值是50%(“最低限制”線性控制範圍的百分比)
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Stereo_Mod(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope, u16 shift)
{
	Set_Cmd(FM, 61, 4, mode, start*10, slope*10, shift*10);
}

/**
 * @name      : FM_Set_Stereo_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時。
 * @params 
*                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅供評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當電平低於該引數時進行控制,單位是dBuV,範圍是30 dBuV ~ 60 dBuV,預設值為46dBuV
 *                @slope  : 弱訊號處理電平範圍,控制水平範圍超過該引數,單位是dB,範圍是 6 dB ~ 30 dB,預設值為24dB
 *															
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Stereo_Level(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope)
{
	Set_Cmd(FM, 62, 3, mode, start*10, slope*10);
}


/**
 * @name      : FM_Set_Stereo_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時。
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當噪聲高於該值時控制,單位是%,範圍是0% ~ 80%,預設值為24%
 *                @slope  : FM弱訊號處理噪聲範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是20%
 *
 * @version   : 1.0
 * @note			: 建議用12%的開始和16%的斜率來提高田間效能。。
 */
void FM_Set_Stereo_Noise( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(FM, 63, 3, mode, start*10, slope*10);
}

/**
 * @name      : FM_Set_Stereo_Mph
 * @brief     : 設定立體聲的多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理多路啟動,當mph高於該引數時進行控制,單位是%,範圍是0% ~ 80%,預設值為24%
 *                @slope  : FM弱訊號處理多路徑範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是20%
 *
 * @version   : 1.0
 * @note			: 建議用10%的開始和15%的斜率來提高現場效能
 */
void FM_Set_Stereo_Mph( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(FM, 64, 3, mode, start*10, slope*10);
}


/**
 * @name      : FM_Set_Stereo_Max
 * @brief     : 允許禁用動態立體控制。
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉;(僅供評估)
 *														WeakSignalHandling_ON		 開啟;最大動態控制為0 dB通道秒,即單聲道(預設)
 *																
 * @version   : 1.0
 * @note			: _Max模式“off”不適合禁用FMSI操作中可能需要的立體聲處理。應該使用在_Mod、_Level、_Usn和_Mph上設定“off”。
 */
void FM_Set_Stereo_Max(TEF6686_WeakSignalHandleMode_t mode)
{
	Set_Cmd(FM, 65, 1, mode);
}

/**
 * @name      : FM_Set_Stereo_Min
 * @brief     : 可選地定義最小量的立體聲衰減(在良好的訊號條件下實現)
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;通道分離不受限制(預設值)
 *														StrongSignalHandling_ON		  開啟;由極限引數設定的最小控制極限
 *														ForcedMono									強制單聲道
 *                @limit  : 立體聲固定衰減極限,立體聲最小通道分離,單位為dB,範圍是6dB ~ 40dB,預設值為40 dB,
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Stereo_Min(TEF6686_StrongSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(FM, 66, 2, mode, limit*10);
}



/**
 * @name      : FM_Set_StHiBlend_Time
 * @brief     : FM StHiBlend弱訊號處理的時間和質量靈敏度設定。定義了電平檢測器、噪聲和多路檢測器啟用的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項。
 * @params 
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~2000ms,預設值為500ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為2000ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms,預設值是2ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms,預設值是2ms
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Time(u16 slow_attack, u16 slow_decay, u16 fast_attack, u16 fast_decay)
{
	Set_Cmd(FM, 70, 4, slow_attack, slow_decay, fast_attack*10, fast_decay*10);
}

/**
 * @name      : FM_Set_StHiBlend_Mod
 * @brief     : 啟用調製依賴性並設定靈敏度
 * @params 
 *                @mode   : 與調製相關的弱訊號處理			詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉(預設)
 *														WeakSignalHandling_ON		  開啟(獨立調製定時器)
 *                @start  : 弱訊號處理調製啟動,當調製低於該值時控制,單位是%,範圍是10% ~ 100%,預設值為24%(注:對於FM頻段,100%調製等於75 kHz偏差)
 *                @slope  : 弱訊號處理調製範圍,控制調製範圍,單位是%,範圍是 3% ~ 100%,預設值是 12%
 *                @shift  : 弱訊號處理控制換擋,最大弱訊號控制位移,單位是%,範圍是 5% ~ 100%,預設值是67%(控制範圍從最小限制到最大限制的百分比)
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Mod(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope, u16 shift)
{
	Set_Cmd(FM, 71, 4, mode, start*10, slope*10, shift*10);
}


/**
 * @name      : FM_Set_Stereo_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時。
 * @params 
*                 @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅供評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當電平低於該引數時進行控制,單位是dBuV,範圍是30 dBuV ~ 66 dBuV,預設值為60dBuV
 *                @slope  : 弱訊號處理電平範圍,控制水平範圍超過該引數,單位是dB,範圍是 6 dB ~ 30 dB,預設值為24dB
 *															
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Level(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope)
{
	Set_Cmd(FM, 72, 3, mode, start*10, slope*10);
}


/**
 * @name      : FM_Set_StHiBlend_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時。
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當噪聲高於該值時控制,單位是%,範圍是0% ~ 80%,預設值為16%
 *                @slope  : FM弱訊號處理噪聲範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是14%
 *
 * @version   : 1.0
 * @note			: 建議從8%開始,以提高現場效能。。
 */
void FM_Set_StHiBlend_Noise( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(FM, 73, 3, mode, start*10, slope*10);
}

/**
 * @name      : FM_Set_StHiBlend_Mph
 * @brief     : 設定立體聲的多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理多路啟動,當mph高於該引數時進行控制,單位是%,範圍是0% ~ 80%,預設值為16%
 *                @slope  : FM弱訊號處理多路徑範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是14%
 *
 * @version   : 1.0
 * @note			: 建議從8%開始,以提高現場效能。
 */
void FM_Set_StHiBlend_Mph( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope)
{
	Set_Cmd(FM, 74, 3, mode, start*10, slope*10);
}


/**
 * @name      : FM_Set_StHiBlend_Max
 * @brief     : 啟用並定義StHiBlend衰減的最大量(在非常差的訊號條件下實現)。
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉;(僅供評估)
 *														WeakSignalHandling_ON		 開啟;由限制引數定義的最大動態控制(預設值)
 *                @limit  : 靜態混合器的動態衰減極限,單位為kHZ,範圍是2.7kHZ ~ 7kHz,預設值為4kHz,
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Max(TEF6686_WeakSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(FM, 75, 2, mode, limit);
}


/**
 * @name      : FM_Set_StHiBlend_Min
 * @brief     : 可選地定義StHiBlend衰減量(在良好的訊號條件下實現))
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;通道分離bw不受限制(預設值)
 *														StrongSignalHandling_ON		  開啟;由極限引數設定的最小控制限值
 *                @limit  : 混合固定衰減極限,單位為kHZ,範圍是3 kHz ~ 15 kHz
 *																
 * @version   : 1.0
 * @note			: 對於一個正常的控制行為,Set_StHiBlend_Min()總是應該設定一個比Set_StHiBlend_Max()更弱的訊號處理限制(即一個更高的頻率)。
 */
void FM_Set_StHiBlend_Min(TEF6686_StrongSignalHandleMode_t mode, u16 limit)
{
	Set_Cmd(FM, 76, 2, mode, limit);
}

/**
 * @name      : Set_Scaler
 * @brief     : 在FM和AM模擬無線電聲音之間的聲音振幅的微調。
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @gain  	: 通道增益,模擬無線電訊號增益,單位是dB,範圍是= -12 … +6 dB,預設是為0dB
 *																
 * @version   : 1.0
 * @note			: 關於FM和AM數字無線電聲音振幅的微調,見Set_DR_Blend()
 */
void Set_Scaler(TEF6686Module_t module, u16 gain)
{
	Set_Cmd(module, 80, 1,  gain);
}

/**
 * @name      : FM_Set_RDS
 * @brief     : 調頻無線電資料系統解調器和解碼器系統的控制。
 * @params 
 *                @mode       : RDS操作控制				詳情可見TEF6686_RDSControlMode_t
 *																	RDSControl_OFF 	    關閉(禁用RDS功能)
 *																	DecoderMode					解碼器模式(預設);從Get_RDS_Status/Get_RDS_Data、FM中輸出RDS組資料(塊A、B、C、D);= 130/131
 *																	DemodulatorMode			解調器模式;從Get_RDS_Status/Get_RDS_Data輸出原始解調器資料;FM cmd = 130/131
 *                @restart    : RDS解碼器重新啟動		詳情可見TEF6686_RDSDecoderRestartControl_t
 *																	NoControl 	       不控制
 *																	ManualRestart			 手動重新啟動;立即開始尋找新的RDS訊號
 *																	AutomaticRestart	 調優後自動重新啟動(預設);在預設、搜尋、跳轉或檢查調優操作後開始尋找新的RDS訊號(請參見FM cmd = 1)
 *                @interface  : RDS引腳訊號功能			詳情可見TEF6686_RDSPinControl_t
 *															  	RDS_NoPinInterface  	  無引腳介面(預設)
 *																  DataAvailable   		資料可用狀態輸出;活動低(GPIO功能“DAVN”)
 *																  DoubleWire      		傳統的雙線解調器資料和時鐘輸出(“RDDA”和“RDCL”)
 *																
 * @version   : 1.0
 * @note			: 1、RDS ‘DAVN’訊號(介面= 2)可以在任何可用的GPIO引腳上輸出。為了接收原始解調器資料,建議使用“解調器模式”(模式= 2),2線輸出選項(介面= 4)僅用於傳統使用,不建議用於新的設計。
 * 							2、對於引腳訊號,需要進行GPIO引腳分配;請參見Set_GPIO()。
 */
void FM_Set_RDS(TEF6686_RDSControlMode_t mode, TEF6686_RDSDecoderRestartControl_t restart, TEF6686_RDSPinControl_t interface)
{
	Set_Cmd(FM, 81, 3, mode, restart, interface);
}

/**
 * @name      : Set_QualityStatus
 * @brief     : 啟用並定義質量檢測器狀態標誌的中斷使用或狀態引腳輸出
 * @params
 *                @module       : 調製方式(FM/AM)
 *                @mode         : 調優準備就緒後的質量狀態標誌				詳情可見TEF6686_QualityStatusFlag_t
 *																	NoFlag   	   調優後未設定任何標誌(預設值)
 *																	SetFlag   	 當FM AF_Update質量結果可用時,設定標誌
 *								@time					: 設定標誌在該時間後,調整準備好,單位是ms,範圍是1ms~32ms
 *																該引數只有引數mode選擇SetFlag時生效,如為NoFlag,則該引數為任意值
 *                @interface    : 質量狀態引腳訊號功能		詳情可見TEF6686_QualityStatusPinControl_t
 *																	QualityStatus_NoPinInterface  	  無引腳介面(預設)
 *																	QualityStatus_Output   				    質量狀態輸出;活動低(“QSI”)
 *																
 * @version   : 1.0
 * @note			: 對於引腳訊號,需要進行GPIO引腳分配;請參見APPL cmd 3 Set_GPIO()。注意:模式引數計時器的設定是四捨五入到1 ms的步長
 */
void Set_QualityStatus(TEF6686Module_t module, TEF6686_QualityStatusFlag_t mode, u16 time, TEF6686_QualityStatusPinControl_t interface)
{	
	if( mode == NoFlag )
		Set_Cmd(module, 82, 2, mode, interface);
	else
	{
		time *= 10;
		Set_Cmd(module, 82, 2, time |= (1<<15), interface);
	}
}

/**
 * @name      : Set_Specials
 * @brief     : 用於評估和擴充套件應用程式使用的特殊無線電選項。
 * @params
 *                @module       : 調製方式(FM/AM)
 *                @ana_out      : 音訊輸出使用				詳情可見TEF6686_AudioOutputUse_t
 *																	NormalOperation  	  預設
 *																	DARC_Output    		  DAC_L: FM MPX寬頻(DARC)訊號/ DAC_R: FM單聲道音訊 
 *																	DigitalAudio        L:數字無線電左頻道/R:模擬無線電左頻道
 *																
 * @version   : 1.0
 * @note			: 1、設定ana_out = 1作用於DAC輸出,並且僅可用於FM。FM立體聲訊號仍然可從數字音訊I2S輸出(IIS_SD_1)
 *							2、設定ana_out = 2同時作用於DAC和數字音訊I2S輸出。DAC源選擇或I2S輸出源選擇覆蓋此數字無線電測試選項。
 *							3、設定ana_out = 2需要一個音訊輸入選擇的“無線電”,並且必須禁用數字無線電(或處於非活動狀態的混合訊號)。數字無線電增益比例不包括在內。此行為等同於裝置版本V101。
 */
void Set_Specials(TEF6686Module_t module, TEF6686_AudioOutputUse_t ana_out)
{	
	
		Set_Cmd(module, 85, 1, ana_out);

}


/**
 * @name      : FM_Set_Bandwidth_Options
 * @brief     : FM自動頻寬無線電選擇性濾波器的附加控制選項。
 * @params
 *                @modulation   :擴充套件API: FM自動頻寬提升上的調製,將頻寬提高到最大頻寬的調製指數,單位是%,範圍位66% ~ 133%,預設值是95%
 *																
 * @version   : 1.0
 * @note			: 1、一般不建議調整預設值,但允許在特定條件下進行特定的效能微調。特性創新可能會導致擴充套件的API預設值和控制隨著韌體的釋出而改變
 *							2、有關主FM自動頻寬控制和其他控制選項,請參見Set_Bandwidth().
 */
void FM_Set_Bandwidth_Options( u16 modulation)
{	
	
		Set_Cmd(FM, 86, 1, modulation*10);

}

/**
 * @name      : AUDIO_Set_Volume
 * @brief     : 音訊音量的設定。
 * @params
 *                @volume   :音訊音量,單位是dB,範圍為 -60dB ~ +24dB,預設值是0dB
 *																
 * @version   : 1.0
 * @note			: 1、根據源訊號,超過0 dB的音量設定可能會引入訊號裁剪
 *							2、TEF668X體積設定到體積= -40 dB在1 dB內是準確的,較低的體積顯示出越來越大的不準確性和步長。設定-60 dB和較低的設定為靜音
 */
void AUDIO_Set_Volume( u16 volume)
{	
	
		Set_Cmd(AUDIO, 10, 1, volume*10);

}

/**
 * @name      : AUDIO_Set_Mute
 * @brief     : 啟用和禁用音訊靜音。
 * @params
 *                @mode   :音訊靜音      詳情可見列舉TEF6686_AudioMuteMode_t
 *														MuteDisabled    禁用靜音,允許音訊輸出
 *														MuteActive      靜音起作用(預設)
 *																
 * @version   : 1.0
 * @note			: None
 */
void AUDIO_Set_Mute( TEF6686_AudioMuteMode_t mode)
{	
	
		Set_Cmd(AUDIO, 11, 1, mode);

}


/**
 * @name      : AUDIO_Set_Input
 * @brief     : 輸入選擇;選擇音訊輸入源訊號。
 * @params
 *                @source   :音訊源選擇      詳情可見列舉TEF6686_AudioSourceSelect_t
 *														  Radio  	             預設(啟用和可用時的模擬無線電或數字無線電)
 *														  ExternalI2S_Audio    外部I2S音訊源
 *															SineWaveGenerator    正弦波發電機
 *																
 * @version   : 1.0
 * @note			: None
 */
void AUDIO_Set_Input( TEF6686_AudioSourceSelect_t source)
{	
	
		Set_Cmd(AUDIO, 12, 1, source);
}


/**
 * @name      : AUDIO_Set_Output_Source
 * @brief     : 輸出選擇;對音訊輸出的源訊號的選擇。
 * @params
 *								@signal		:音訊輸出				詳情可見列舉TEF6686_AudioSourceSelect_t
 *															I2SDigitalAudioOutput_IIS_SD_1   I2S數字音訊輸出IIS_SD_1
 *															DAC_L_ROutput    			           DAC輸出
 *                @source   :音訊源選擇      詳情可見列舉TEF6686_AudioSourceSelect_t
 *														  AnalogRadio  	                   模擬無線電
 *														  I2SDigitalAudioInput_IIS_SD_0    I2S數字音訊輸入IIS_SD_0
 *															AudioProcessor                   音訊處理(預設)
 *															SineWaveGenerator								 正弦波發電機
 *																
 * @version   : 1.0
 * @note			: 1、預設情況下,DAC輸出和IIS_SD_1輸出訊號都來自音訊處理器,即訊號由AUDIO_Set_Input、_Set_Volume和_Set_Mutt定義。Set_Output_Source允許替代輸出訊號選擇,直接連線到一個可用的源訊號而無需處理。
 *							2、命令集_Output_源需要一個訊號定義,即包括索引=1
 */
void AUDIO_Set_Output_Source( TEF6686_AudioOutput_t signal, TEF6686_AudioSourceSelect_t source)
{	
	
		Set_Cmd(AUDIO, 13, 2, signal, source);
}

/**
 * @name      : AUDIO_Set_Ana_Out
 * @brief     : 模擬輸出訊號的定義。
 * @params
 *                @mode   :輸出方式      詳情可見列舉TEF6686_DACOutputMode_t
 *                              DisableDACOutput  	  禁用DAC輸出
 *                              EnableDACOutput    		使能DAC輸出
 *																
 * @version   : 1.0
 * @note			: None
 */
void AUDIO_Set_Ana_Out(  TEF6686_DACOutputMode_t mode)
{	
	
		Set_Cmd(AUDIO, 21, 2, 128, mode);
}

/**
 * @name      : AUDIO_Set_Dig_IO
 * @brief     : 數字輸入和輸出音訊訊號的定義。
 * @params
 *                @signal      :輸出方式            詳情可見列舉TEF6686_DigitalAudioSignal_t
 *                                 I2SDigitalAudio_Input      I2S數字音訊IIS_SD_0(輸入)
 *                                 I2SDigitalAudio_Output     I2S數字音訊IIS_SD_1(輸出)
 *							  @format		   :數字音訊格式選擇		詳情可見列舉TEF6688_DigitalAudioFormat_t
 * 																 I2S_16bits 						(fIIS_BCK = 32 * samplerate)
 * 																 I2S_32bits 						(fIIS_BCK = 64 * samplerate) (預設)
 * 																 lsb_aligned_16bit 		(fIIS_BCK = 64 * samplerate)
 * 															 	 lsb_aligned_18bit 		(fIIS_BCK = 64 * samplerate)
 * 																 lsb_aligned_20bit 		(fIIS_BCK = 64 * samplerate)
 * 																 lsb_aligned_24bit 		(fIIS_BCK = 64 * samplerate)
 *								@operation   : 操作方式
 *																 SlaveMode 						從屬模式;由原始碼定義的IIS_BCK和IIS_WS輸入(預設值)
 *																 MasterMode						主模式;由裝置定義的IIS_BCK和IIS_WS輸出
 *								@samplerate  : 音訊取樣率選擇
 *																 32                   32kHz
 *																 44                   44.1kHz (預設)
 *																 48                   48kHz
 *
 *																
 * @version   : 1.0
 * @note			: 1、命令Set_Dig_IO需要一個訊號定義,即包括索引=1。
 *							2、一個TEF668X數字音訊訊號總是使用16個有源(msb)位。
 *							3、在某些情況下,“操作”或“取樣器”的設定不是可以獨立選擇的,例如,因為共享的BCK和WS引腳。在這種情況下,控制設定是基於列舉值最小的訊號
 *							4、fIIS_BCK表示在主模式操作時的輸出頻率和對lsb對準的格式化輸出訊號的從模式操作所需的輸入頻率。輸入訊號和I2S格式的輸出訊號的從屬模式操作也允許其他位元時鐘速率(16……32)*2*取樣率。
 */
void AUDIO_Set_Dig_IO(TEF6686_DigitalAudioSignal_t signal, TEF6688_DigitalAudioFormat_t format, TEF6686_DigIOMode_t operation, u16 samplerate)
{	
		u16 mode;
	
		if( signal == 32 )
			mode = 1;		//輸入
		else
			mode = 2;		//輸出
		
		Set_Cmd(AUDIO, 22, 5, signal, mode, format, operation, samplerate*100);
}


/**
 * @name      : AUDIO_Set_Input_Scaler
 * @brief     : 外部源聲振幅的微調。對於每個可用的外部源,可以程式設計設定一個單獨的聲音振幅校正,以便在選擇音訊輸入時使用( Set_Input())。
 * @params
 *							  @gain		 :外部源通道增益,單位是dB,範圍是-12dB~6dB,預設值是0dB
 *																
 * @version   : 1.0
 * @note			: 1、命令Set_Input_Scaler需要一個源定義,即包括索引=1。
 *							2、來自IIS_SD_0的數字無線電訊號的縮放由無線電控制FM / AM  Set_DR_Blend()
 */
void AUDIO_Set_Input_Scaler( u16 gain)
{	

		Set_Cmd(AUDIO, 23, 2 ,32 , gain*10);
}

/**
 * @name      : AUDIO_Set_WaveGen
 * @brief     : 內部正弦波和偏移發生器訊號的定義。波發生器可以選擇作為音訊源(見Set_Input()),並且僅用於測試目的。
 * @params
 *                @mode        :模式            詳情可見列舉TEF6686_WaveGenMode_t
 * 																 WaveSignalOff 													    	預設
 * 																 Wave1Signal_LChannel													左通道上的第1波訊號
 * 																 Wave2Signal_RChannel													右通道上的第2波訊號
 * 																 Wave1Signal_LChannel_Wave2Signal_RChannel		左通道第1波訊號,右通道2波訊號
 * 																 Wave1Signal_LRChannel  										  左右通道上的第一波訊號
 * 																 Wave2Signal_LRChannel 												左右通道上的第二波訊號
 * 																 Wave1_Wave2Signal_LRChannel									左右通道上的第1波+第2波訊號
 *							  @offset		   :直流偏移,單位為LSB,範圍是-32768LSB ~ +32767LSB,預設值為0LSB(無偏移)
 *								@amplitude1  : 波1振幅,單位為dB,範圍是 -30dB ~ 0dB,預設值為-20dB
 *								@frequency1  : 波1頻率,單位為HZ,範圍是 10HZ ~ 20HZ,預設值為400Hz
 *								@amplitude2  : 波2振幅,單位為dB,範圍是 -30dB ~ 0dB,預設值為-20dB
 *								@frequency2  : 波2頻率,單位為HZ,範圍是 10HZ ~ 20HZ,預設值為1000Hz   
 *																
 * @version   : 1.0
 * @note			: 1、振幅的參考是數字全標度峰(FSPP);即,0 dB表示無偏移時的最大未失真正弦波訊號。
 *							2、直流偏移量在左通道和右通道上都可用於所有模式設定。
 *							3、對於模式=7,將第1波和第波2的訊號加在一起,對於無失真的訊號,第波1和第波2的組合振幅不應超過0 dB。
 */
void AUDIO_Set_WaveGen( TEF6686_WaveGenMode_t mode, u16 offset, u16 amplitude1, u16 frequency1, u16 amplitude2, u16 frequency2)
{	
		Set_Cmd(AUDIO, 24, 6 ,mode, offset, amplitude1*10, frequency1, amplitude2*10, frequency2);
}



/**
 * @name      : APPL_Set_OperationMode
 * @brief     : 裝置電源控制。
 * @params
 *                @mode        :模式            詳情可見列舉TEF6688_OperationMode_t
 * 																 DeviceNormalOperation	 			正常運算
 * 																 RadioStandbyMode							無無線電功能的低功耗模式(預設)
 *																
 * @version   : 1.0
 * @note			: 1、FM和AM命令在兩種操作模式下都可用,允許在無線電待機模式下進行無線電初始化FM和AM操作。
 *							2、“正常操作”將返回到待機前定義的無線電操作(除非在無線電待機模式下進行了其他選擇)。或者,預設或搜尋的無線電調優操作(見Tune_To())將啟用正常操作。
 */
void APPL_Set_OperationMode( TEF6688_OperationMode_t mode)
{	
		Set_Cmd(APPL, 1, 1 ,mode);
}

/**
 * @name      : APPL_Set_GPIO
 * @brief     : 定義通用用途和應用銷的用途
 * @params
 *                @pin        :GPIO引腳            詳情可見列舉TEF6686_GPIO_t
 * 																 GPIO0	
 * 																 GPIO1	
 * 																 GPIO2
 *                @module  	   : 調製方式(FM/AM)
 *                @feature  	 : 特徵								詳情可見列舉TEF6686_GPIOFeature_t
 * 																 NoUse 
 * 																 Input
 * 																 Output_0
 * 																 Output_1 
 * 																 Output_RDS	     ( 參見cmd 81 ‘DAVN’)
 * 																 Output_QSI      (FM / AM:請參見cmd82‘計時器和AF_Update標誌”)
 * 																 Output_QSI_RDS  (如果“DAVN”或“QSI”為活動狀態,則活動“low”)
 * 																 Output_RDDA     (FM:參見cmd 81 ‘RDDA,RDCL遺留選項”)
 * 																 Output_RDCL     (FM:參見cmd 81 ‘RDDA,RDCL遺留選項”)
 * 																 Output_AGC      (FM:參見cmd 11 ‘AGC步驟擴充套件”)
 * @version   : 1.0
 * @note			: 1、命令Set_GPIO需要一個GPIO編號定義,即包括索引=1。
 *							2、通用輸入的使用僅限於GPIO 0。
 *							3、FM或AM的模組設定僅對適當的無線電模式是活動的,允許FM和AM的獨立特徵定義。
 *							4、特徵訊號RDS、QSI和AGC均為“主動低”。
 *							5、可以定義和啟用指定的功能
 */
void APPL_Set_GPIO( TEF6686_GPIO_t pin, TEF6686Module_t module, TEF6686_GPIOFeature_t feature)
{	
		Set_Cmd(APPL, 3, 3 ,pin, module, feature);
}


/**
 * @name      : APPL_Set_ReferenceClock
 * @brief     : 設定參考時鐘。
 * @params
 *                @frequency   :時脈頻率,單位是HZ,預設值是9216000HZ
 *                @type  	     : 時鐘型別								詳情可見列舉TEF6686_ReferenceClockType_t
 * 																 CrystalOscillator      晶體振盪器操作(預設值)
 * 																 ExternalClockInput     外部時鐘輸入操作
 * @version   : 1.0
 * @note			: 1、此命令僅在“空閒狀態”期間可用。
 *							2、幾種不同的頻率可以用於晶體振盪器或外部參考時鐘。為了正常工作,必須在啟用裝置之前輸入參考頻率,因此,該命令僅在“空閒”狀態下可用。
 *							3、TEF668X支援的頻率:4.000 MHz、9.216 MHz、12.000 MHz、55.46667 MHz。
 *							4、數字無線電使用的支援頻率分別為9.216、12.000和55.46667 MHz。
 *							5、55.46667 MHz僅用於時鐘輸入使用,不支援作為晶體頻率
 *							6、參考時脈頻率設定的準確性不是關鍵的,近似值被轉換為實際的支援頻率。
 */
void APPL_Set_ReferenceClock(u32 frequency, TEF6686_ReferenceClockType_t type)
{	
	Set_Cmd(APPL, 4, 3 ,(u16)(frequency >> 16), (u16)frequency, type);
}


/**
 * @name      : APPL_Activate
 * @brief     : 從“空閒狀態”轉到“活動狀態”。
 * @params		: None
 * @version   : 1.0
 * @note			: 1、此命令僅在“空閒狀態”期間可用。
 *							2、定義參考時脈頻率後,必須將裝置置於活動狀態,以便進一步初始化和控制。啟用後,裝置將處於“無線電備用”操作模式。
 */
void APPL_Activate(void)
{	
	Set_Cmd(APPL, 5, 1 , 1);
}

/***********************************************************************************************讀指令************************************************************************************************************/

/**
 * @name      : Get_Quality
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetQualitymode_t
 *																	Get_Status		將讀取狀態和可能的資料,狀態和任何凍結資料(例如在AF_Update調優後可用)保持不變。Get_質量狀態是用於狀態只讀(即狀態輪詢),但可以在需要時取樣資料。
 *																	Get_Data      將讀取狀態和資料,以及讀取後釋出的任何凍結資料(例如,在AF_Update調整後可用),允許新的資料更新。獲取_質量_資料旨在用於讀取資料,並將狀態告知資料內容和有效性
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、質量檢測器狀態
 *											[15]    :AF_update標誌
 *															   0   具有時間戳的連續質量資料
 *															   1	 AF_Update取樣資料
 *											[14:10] :保留位
 *											[9:0]		:質量時間戳
 *																 0   正在進行中,沒有可用的質量資料
 *																 !0  單位是ms,範圍是1ms~320ms(*0.1ms)
 *								2、液位檢測結果,單位是dBuV,範圍是-200dBuV ~ 1200dBuV (*0.1dBuV),輸入水平的實際範圍和精度受到噪聲和agc的限制
 *								3、噪聲探測器
 *											FM	超聲波噪聲檢測器,單位是%,範圍是0% ~ 1000% (*0.1 %)
 *									    AM	高頻噪聲檢測器,單位是%,範圍是0% ~ 50000% (*0.1 %),100%是近似相等的噪聲和需要的訊號
 *								4、FM多徑探測器/ AM共通道探測器
 *	  									FM	“寬頻-AM”多路徑探測器,單位是%,範圍是0% ~ 1000% (*0.1 %)
 *									    AM	共通道檢測器
 *														0	 未檢測到共通道
 *														1  已檢測到的共同通道(基於所選標準)
 *								5、射頻偏移,單位是kHz,範圍是-1200kHz ~ 1200kHz (*0.1 kHz)
 *								6、中頻頻寬
 *											FM	 單位是kHz,範圍是560kHz ~ 3110kHz [*0.1 kHz]
 *											AM	 單位是kHz,範圍是30kHz ~ 80kHz [*0.1 kHz]
 *								7、調製探測器
 *											FM	 範圍是0% ~ 1000% [*0.1 %]
 *													 範圍是1000% ~ 2000% [*0.1 %]
 *											AM	 範圍是0% ~ 1000% [*0.1 %]
 *													 範圍是1000% ~ 2000% [*0.1 %] 
 * @note			: 1、如果之前沒有讀取AF資料,調優操作將重置狀態資訊並釋放凍結的AF_Update取樣質量資料。
 *							 2、狀態質量時間戳開始更新一旦調整建立和新的取樣資料可用於AF_Update調優操作(見 Tune_To()模式= 3)和新的連續資料可用於預設、搜尋、跳轉或檢查調優操作(模式=1、2、4或5)。
 */
void Get_Quality(TEF6686Module_t module, TEF6686_GetQualitymode_t mode, u16* receive)
{
	Get_Cmd(module, mode, receive, 7);
	
}



/**
 * @name      : FM_Get_RDS_DecoderMode 
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetRDSmode_t
 *																	Get_Status		於讀取資料庫例項的狀態
 *																	Get_Data      不僅返回資料庫例項的狀態,還返回儲存在資料庫中的資料。
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、FM RDS接收狀態
 *											[15]  :資料可用標誌
 *															   0   沒有可用的資料(不完整的組或沒有第一個PI)
 *															   1	 RDS組資料或第一個PI資料可用
 *											[14]  :資料丟失標誌
 *															   0   無資料丟失
 *															   1	 以前的資料沒有被讀取,而是用較新的資料代替
 *											[13]	:資料可用型別
 *																 0   組資料;連續操作
 *																 1   第一個PI資料;資料與PI程式碼後的解碼器同步
 *											[12]	:組型別
 *																 0   型別A;ABCD組(A塊中的PI程式碼)
 *																 1   型別B;A-B-C‘-D組(具有塊A和C’中的PI程式碼)
 *										[11:10]	:保留位
 *											[9] 	:同步狀態
 *																 0   RDS解碼器未同步;未找到RDS資料
 *																 1   RDS解碼器已同步;RDS資料接收已啟用
 *											[8:0] :	保留位
 *								2、塊A的資料
 *								3、塊B的資料
 *								3、塊C的資料
 *								3、塊D的資料
 *								6、錯誤程式碼(由解碼器確定)
 *											[15:14]  :塊A的錯誤程式碼
 *											[13:12]  :塊B的錯誤程式碼
 *											[11:10]	 :塊C的錯誤程式碼
 *											[9:8] 	 :塊D的錯誤程式碼
 *										  [7:0]	   :保留位
 *													錯誤程式碼  
 *															0 : 沒有錯誤;塊資料與匹配的資料和綜合徵
 *															1 : 誤差小;可能檢測到1位接收錯誤;資料被修正
 *															2 : 誤差大,檢測到理論可修正誤差,資料被修正
 *															3 : 不可糾正的錯誤;無法糾正資料
 * @note			: 該函式用於Set_RDS()函式中, mode = 1的情況
 */
void FM_Get_RDS_DecoderMode( TEF6686_GetRDSmode_t mode, u16* receive)
{
	Get_Cmd(FM, mode, receive, 6);
	
}


/**
 * @name      : FM_Get_RDS_DemodulatorMode 
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetRDSmode_t
 *																	Get_Status		於讀取資料庫例項的狀態
 *																	Get_Data      不僅返回資料庫例項的狀態,還返回儲存在資料庫中的資料。
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、FM RDS接收狀態
 *											[15]  :資料可用標誌
 *															   0   無可用資料
 *															   1	 32位的原始解調器資料可用
 *											[14]  :資料丟失標誌
 *															   0   無資料丟失
 *															   1	 沒有讀取以前的資料,而是使用較新的資料
 *										[13:0]	:保留位
 *								2、32位原始解調器資料的MSB部分([31:16])
 *								3、LSB是32位原始解調器資料的一部分([15:0])。
 * @note			: 該函式用於Set_RDS()函式中, mode = 2的情況
 */
void FM_Get_RDS_DemodulatorMode( TEF6686_GetRDSmode_t mode, u16* receive)
{
	Get_Cmd(FM, mode, receive, 3);
	
}

/**
 * @name      : Get_Signal_Status 
 * @brief     : 讀取有關所接收到的無線電訊號的資訊。
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、無線電訊號資訊
 *											[15]  :資料可用標誌
 *															   0   單訊號
 *															   1	 調頻立體聲訊號(檢測到立體聲導頻)
 * @note			: 該函式用於Set_RDS()函式中, mode = 2的情況
 */
void Get_Signal_Status( TEF6686Module_t module, u16* receive)
{
	Get_Cmd(module, 133, receive, 1);
	
}


/**
 * @name      : Get_Processing_Status 
 * @brief     : 讀取有關內部處理狀態的資訊(弱訊號處理)。此資訊僅供評估使用。
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、軟靜音控制狀態,範圍是0% ~ 1000% (*0.1%)
 *								2、高切割控制狀態,範圍是0% ~ 1000% (*0.1%)
 *								3、FM立體聲混合控制狀態,範圍是0% ~ 1000% (*0.1%)
 *								4、FM立體聲高混合控制狀態,範圍是0% ~ 1000% (*0.1%)
 * @note			: 1、0%等於最小控制,由弱訊號“_Min”設定所定義。
 *							 2、100 %等於最大控制,由弱訊號“_Max”設定定義。
 */
void Get_Processing_Status( TEF6686Module_t module, u16* receive)
{
	Get_Cmd(module, 134, receive, 4);
	
}

/**
 * @name      : Get_Operation_Status 
 * @brief     : 此讀取命令在“啟動狀態”和“空閒狀態”期間也可用。請讀取有關操作狀態的資訊
 * @params
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、裝置執行狀態
 *										0	 啟動狀態;沒有命令支援
 *										1	 靜止狀態
 *										2	 活動狀態;無線電備用
 *										3	 FM
 *										4	 AM
 * @note			:值0表示啟動狀態(通電、電源下降或參考頻率中斷後的重置狀態)。實際上,所有的get命令都將在啟動狀態下返回0個值,並且沒有命令支援可用。
 */
void Get_Operation_Status( u16* receive)
{
	Get_Cmd(APPL, 128, receive, 1);
	
}

/**
 * @name      : Get_GPIO_Status 
 * @brief     : 讀取有關指定輸入引腳的輸入狀態的資訊(見Set_GPIO())。
 * @params
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、輸入狀態(分配給輸入使用時)
 *										[0] : GPIO_0的輸入狀態
 *														0		低電平
 *														1		高電平
 * @note			:值0表示啟動狀態(通電、電源下降或參考頻率中斷後的重置狀態)。實際上,所有的get命令都將在啟動狀態下返回0個值,並且沒有命令支援可用。
 */
void Get_GPIO_Status( u16* receive)
{
	Get_Cmd(APPL, 129, receive, 1);
	
}

/**
 * @name      : Get_Identification 
 * @brief     : 此讀取命令在“空閒狀態”期間也可用。請閱讀有關裝置型別和變體的資訊。())。
 * @params
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、裝置型別和變體
 *										[15:8] : 型別識別符號
 *														9		TEF668X“Lithio”系列
 *										[7:0] :  變體識別符號
 *													 14		TEF6686 'Lithio'
 *														1		TEF6687 'Lithio FMSI'
 *														9		TEF6688 ‘Lithio DR’
 *														3		TEF6689 ‘Lithio FMSI DR’
 *								2、硬體版本
 *										[15:8] : 主要數字
 *														1		
 *										[7:0] :  小數
 *													  0		
 *								3、韌體版本
 *										[15:8] : 主要數字
 *														2		
 *										[7:0] :  小數
 *													  0		
 * @note			:型別編號版本名稱“/V102”來源於主要hw_version和主要sw_version編號。
 */
void Get_Identification( u16* receive)
{
	Get_Cmd(APPL, 130, receive, 3);
	
}


/**
 * @name      : Get_LastWrite
 * @brief     : 讀取上次寫入傳輸的資料內容
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @note			: 如第一次寫入的引數比第二的引數要長,則第二次讀出來的引數仍包含第一次寫入的引數
 */
void Get_LastWrite(u16* receive)
{
	Get_Cmd(APPL, 131, receive, 9);
	
}





TEF6686_command.h

#ifndef __TEF6686_COMMAND_H
#define __TEF6686_COMMAND_H



#include "stm32f10x.h"  
#include "IIC.h"
#include <stdarg.h>
#include <stdio.h>
#include "TEF6686.h"



typedef enum TEF6686Module
{
	FM     = 32,
	AM     = 33,
	AUDIO  = 48,
	APPL	 = 64
}TEF6686Module_t;


typedef enum TEF6686_TuneMode
{
	No_action    =0,        	 //不採取行動
	Preset,                       //預設更改,短靜音跳轉再釋放靜音
	Search,                       //調到新節目,保持靜音,啟用廣播和FM/AM更改
	Afupdate,                       //調諧到替代頻率,儲存質量和調回與聽不清的靜音
	Jump,                       //用聽不清的靜音調調諧到其他頻率
	Check,                       //調諧到其他頻率,並保持沉默
	Reserved,                       //保留位
	End                       //釋放搜尋或檢查操作的靜音狀態(頻率不需要且會被忽略)
}TEF6686_TuneMode_t;



typedef enum TEF6686_BandwidthControlMode
{
	Fixed = 0,			//		        在Set_Bandwidth的AM調製下,只能選擇該值;在FM_Set_Tune_Options函式中,該值為預設值
	AutoBandwidth		//自動頻寬    在Set_Bandwidth的FM調製下,該值為預設值
}TEF6686_BandwidthControlMode_t;

typedef enum TEF6686_RFAGC_ExtensionMode
{
	Integrated = 0,			//預設值,僅整合步驟
	Extension						//來自控制輸出的AGC步驟擴充套件(GPIO特性“AGC”)
}TEF6686_RFAGC_ExtensionMode_t;


typedef enum TEF6686_MphSuppressionMode
{
	MultipathSuppression_Disable = 0,			//啟用多路徑抑制
	MultipathSuppression_Enable						//禁用多路徑抑制功能
}TEF6686_MphSuppressionMode_t;


typedef enum TEF6686_ChannelEqualizerMode
{
	ChannelEqualizer_Disable = 0,			//啟用多路徑抑制
	ChannelEqualizer_Enable						//禁用多路徑抑制功能
}TEF6686_ChannelEqualizerMode_t;

typedef enum TEF6686_NoiseBlankerMode
{
	NoiseBlanker_OFF = 0,			//關閉噪聲熄滅裝置
	NoiseBlanker_ON					  //開啟噪聲熄滅裝置
}TEF6686_NoiseBlankerMode_t;

typedef enum TEF6686_TimerSelectionMode
{
	Timer_OFF = 0,			//定時器關閉(僅用於評估)
	FastTimer,					//快速定時器控制
	SlowTimer,					//慢計時器控制(預設)
	DoubleTimer					//結合快速和慢計時器控制
}TEF6686_TimerSelectionMode_t;


typedef enum TEF6686_WeakSignalHandleMode
{
	WeakSignalHandling_OFF = 0,		//關閉
	WeakSignalHandling_ON,					//開啟
}TEF6686_WeakSignalHandleMode_t;

typedef enum TEF6686_StrongSignalHandleMode
{
	StrongSignalHandling_OFF = 0,		//關閉
	StrongSignalHandling_ON,					//開啟
	ForcedMono											//強制單聲道  僅在FM_Set_Stereo_Min()函式中作為引數使用
}TEF6686_StrongSignalHandleMode_t;

typedef enum TEF6686_HighCutControlMode
{
	IIR = 1,				//“analog”具有控制頻率的一階低通濾波器(預設)
	Deemphasis,			//50us/75us消音濾波器的控制頻率
	FIR							//“digital”高階低通濾波器與控制頻率
}TEF6686_HighCutControlMode_t;


typedef enum TEF6686_RDSControlMode
{
	 RDSControl_OFF = 0,	//關閉(禁用RDS功能)
	 DecoderMode,					//解碼器模式(預設);從Get_RDS_Status/Get_RDS_Data、FM中輸出RDS組資料(塊A、B、C、D);= 130/131
	 DemodulatorMode			//解調器模式;從Get_RDS_Status/Get_RDS_Data輸出原始解調器資料;FM cmd = 130/131
}TEF6686_RDSControlMode_t;

typedef enum TEF6686_RDSDecoderRestartControl
{
	 NoControl = 0,	      //不控制
	 ManualRestart,			//手動重新啟動;立即開始尋找新的RDS訊號
	 AutomaticRestart			//調優後自動重新啟動(預設);在預設、搜尋、跳轉或檢查調優操作後開始尋找新的RDS訊號(請參見FM cmd = 1)
}TEF6686_RDSDecoderRestartControl_t;

typedef enum TEF6686_RDSPinControl
{
	 RDS_NoPinInterface  = 0,	  //無引腳介面(預設)
	 DataAvailable   = 2,		//資料可用狀態輸出;活動低(GPIO功能“DAVN”)
	 DoubleWire      = 4		//傳統的雙線解調器資料和時鐘輸出(“RDDA”和“RDCL”)
}TEF6686_RDSPinControl_t;


typedef enum TEF6686_QualityStatusFlag
{
	 NoFlag    = 0,	   //調優後未設定任何標誌(預設值)
	 SetFlag   		     //當FM AF_Update質量結果可用時,設定標誌
}TEF6686_QualityStatusFlag_t;


typedef enum TEF6686_QualityStatusPinControl
{
	 QualityStatus_NoPinInterface  = 0,	  //無引腳介面(預設)
	 QualityStatus_Output   				 = 2,		//質量狀態輸出;活動低(“QSI”)
}TEF6686_QualityStatusPinControl_t;

typedef enum TEF6686_AudioOutputUse
{
	 NormalOperation  = 0,	  //預設
	 DARC_Output    ,		      //DAC_L: FM MPX寬頻(DARC)訊號/ DAC_R: FM單聲道音訊 
	 DigitalAudio             //L:數字無線電左頻道/R:模擬無線電左頻道
}TEF6686_AudioOutputUse_t;

typedef enum TEF6686_AudioMuteMode
{
	 MuteDisabled  = 0,	  //禁用靜音
	 MuteActive    		    //靜音起作用(預設)
}TEF6686_AudioMuteMode_t;

typedef enum TEF6686_AudioSourceSelect
{
	 Radio  = 0,	               //預設(啟用和可用時的模擬無線電或數字無線電)			用於AUDIO_Set_Input()
	 ExternalI2S_Audio = 32,  	 //外部I2S音訊源																		用於AUDIO_Set_Input()
	 SineWaveGenerator =240,      //正弦波發電機																			用於AUDIO_Set_Input()	和 AUDIO_Set_Output_Source()
	
	 AnalogRadio = 4,													//模擬無線電									用於AUDIO_Set_Output_Source()
	 I2SDigitalAudioInput_IIS_SD_0 = 32,			//I2S數字音訊輸入IIS_SD_0			用於AUDIO_Set_Output_Source()
	 AudioProcessor = 224										  //音訊處理(預設)	 					用於AUDIO_Set_Output_Source()
}TEF6686_AudioSourceSelect_t;																							


typedef enum TEF6686_AudioOutput
{
	I2SDigitalAudioOutput_IIS_SD_1  = 33,	  //I2S數字音訊輸出IIS_SD_1
	DAC_L_ROutput    	= 128		              //DAC輸出
}TEF6686_AudioOutput_t;

typedef enum TEF6686_DACOutputMode
{
	DisableDACOutput  = 0,	  //禁用DAC輸出
	EnableDACOutput    			  //使能DAC輸出
}TEF6686_DACOutputMode_t;

typedef enum TEF6686_DigitalAudioSignal
{
	I2SDigitalAudio_Input  = 32,	  //I2S數字音訊IIS_SD_0(輸入)
	I2SDigitalAudio_Output    			//I2S數字音訊IIS_SD_1(輸出)
}TEF6686_DigitalAudioSignal_t;

typedef enum TEF6686_DigitalAudioFormat
{
	I2S_16bits = 16,						//(fIIS_BCK = 32 * samplerate)
	I2S_32bits = 32,						//(fIIS_BCK = 64 * samplerate) (預設)
	lsb_aligned_16bit = 272,		//(fIIS_BCK = 64 * samplerate)
	lsb_aligned_18bit = 274,		//(fIIS_BCK = 64 * samplerate)
	lsb_aligned_20bit = 276,		//(fIIS_BCK = 64 * samplerate)
	lsb_aligned_24bit = 280			//(fIIS_BCK = 64 * samplerate)
}TEF6688_DigitalAudioFormat_t;

typedef enum TEF6686_DigIOMode
{
	SlaveMode 	= 0,			//從屬模式;由原始碼定義的IIS_BCK和IIS_WS輸入(預設值)
	MasterMode	= 256			//主模式;由裝置定義的IIS_BCK和IIS_WS輸出
}TEF6686_DigIOMode_t;

typedef enum TEF6686_WaveGenMode
{
	WaveSignalOff = 0,														//預設
	Wave1Signal_LChannel,													//左通道上的第1波訊號
	Wave2Signal_RChannel,													//右通道上的第2波訊號
	Wave1Signal_LChannel_Wave2Signal_RChannel, 		//左通道第1波訊號,右通道2波訊號
	Wave1Signal_LRChannel  = 5,										//左右通道上的第一波訊號
	Wave2Signal_LRChannel, 												//左右通道上的第二波訊號
	Wave1_Wave2Signal_LRChannel										//左右通道上的第1波+第2波訊號
}TEF6686_WaveGenMode_t;

typedef enum TEF6688_OperationMode
{
	DeviceNormalOperation	= 0,		//正常運算
	RadioStandbyMode							//無無線電功能的低功耗模式(預設)
}TEF6688_OperationMode_t;


typedef enum TEF6686_GPIO
{     	
	GPIO0	= 0,
	GPIO1	,
	GPIO2
}TEF6686_GPIO_t;


typedef enum TEF6686_GPIOFeature
{     	
	NoUse = 0,
	Input,
	Output_0,
	Output_1,
	Output_RDS	= 257,	//(參見cmd 81 ‘DAVN’)
	Output_QSI,					//(FM / AM:請參見cmd82‘計時器和AF_Update標誌”)
	Output_QSI_RDS,			//(如果“DAVN”或“QSI”為活動狀態,則活動“low”)
	Output_RDDA,				//(FM:參見cmd 81 ‘RDDA,RDCL遺留選項”)
	Output_RDCL,				//(FM:參見cmd 81 ‘RDDA,RDCL遺留選項”)
	Output_AGC,					//(FM:參見cmd 11 ‘AGC步驟擴充套件”)
}TEF6686_GPIOFeature_t;

typedef enum TEF6686_ReferenceClockType
{     	
	CrystalOscillator = 0,		//晶體振盪器操作(預設值)
	ExternalClockInput 				//外部時鐘輸入操作
}TEF6686_ReferenceClockType_t;

typedef enum TEF6686_GetQualitymode
{
	Get_Quality_Status	= 128,		//將讀取狀態和可能的資料,狀態和任何凍結資料(例如在AF_Update調優後可用)保持不變。用於狀態只讀(即狀態輪詢),但可以在需要時取樣資料。
	Get_Quality_Data							//將讀取狀態和資料,以及讀取後釋出的任何凍結資料(例如,在AF_Update調整後可用),允許新的資料更新。旨在用於讀取資料,並將狀態告知資料內容和有效性
}TEF6686_GetQualitymode_t;

typedef enum TEF6686_GetRDSmode
{
	Get_RDS_Status	= 130,		//將讀取狀態和可能的資料,狀態和任何凍結資料(例如在AF_Update調優後可用)保持不變。用於狀態只讀(即狀態輪詢),但可以在需要時取樣資料。
	Get_RDS_Data							//將讀取狀態和資料,以及讀取後釋出的任何凍結資料(例如,在AF_Update調整後可用),允許新的資料更新。旨在用於讀取資料,並將狀態告知資料內容和有效性
}TEF6686_GetRDSmode_t;

void Get_Cmd(uint8_t mdl, uint8_t cmd, u16 *receive, uint8_t len);
void Set_Cmd(uint8_t mdl, uint8_t cmd, int len, ...);


/***********************************************************************************************寫指令************************************************************************************************************/
/**
 * @name      : Tune_To
 * @brief     : 設定FM的頻率
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式
 *																	No_action           	 不採取行動
 *																	Preset                 預設更改,短靜音跳轉再釋放靜音
 *																	Search                 調到新節目,保持靜音,啟用廣播和FM/AM更改
 *																	Afupdate               調諧到替代頻率,儲存質量和調回與聽不清的靜音
 *																	Jump                   用聽不清的靜音調調諧到其他頻率
 *																	Check                  調諧到其他頻率,並保持沉默
 *																	Reserved               保留位
 *																	End                    釋放搜尋或檢查操作的靜音狀態(頻率不需要且會被忽略)
 *                @frequency   : 調整的頻率,FM的單位是MHZ,範圍是65MHZ~108Mhz如選擇FM,該引數的值是需要調整的頻率乘100;AM的單位是kHZ                            
 *
 * @version   : 1.0
 * @note			: 1、在FM模式下,引數frequency的值是目標頻率值乘100,例如需要調整到FM 89.3 MHz,則引數frequency需要填8930
 *							2、如需調整的模式為End,則引數frequency為任意值即可
 */
void Tune_To(TEF6686Module_t module,TEF6686_TuneMode_t mode,uint16_t frequency);


/**
 * @name      : FM_Set_Tune_Options
 * @brief     : 在調優操作期間(FM AF_Update)使用的設定 
 * @params
 *                @mode  	     : 在AF_Update期間的中頻頻寬控制模式
 *                @bandwidth   : AF_Update期間的中頻頻寬,單位是kHZ 
 *                @MuteTime    : AF_Update期間聽不到的靜音斜率時間,單位是us,1000us是預設時間
 *                @SampleTime  : AF_Update期間的取樣時間,單位是us,2000us是預設時間
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Tune_Options(TEF6686_BandwidthControlMode_t mode, uint16_t bandwidth, u16 MuteTime, u16 SampleTime);

/**
 * @name      : Set_Bandwidth
 * @brief     : 無線電選擇性濾波器的固定頻寬選擇。 
 * @params
 *                @module  	  						: 調製方式(FM/AM)
 *                @mode  	   						  : 頻寬控制方式,詳情可見列舉TEF6686_BandwidthControlmode_t,如選擇AM調製,則該引數的值只能為Fixed
 *                @bandwidth   						: 固定中頻頻寬,單位為kHZ,FM的預設值為 236 kHz,AM的預設值為 4.0 kHz  
 *                @control_sensitivity    : FM調製下的自動中頻頻寬控制靈敏度,單位為%,預設值為100%,如調整方式為AM,則該引數可填任意值
 *                @low_level_sensitivity	: FM調製下的低水平自動中頻頻寬控制靈敏度,單位為%,預設值為100%,如調整方式為AM,則該引數可填任意值
 *
 * @version   : 1.0
 * @note			: 1、如調製方式為AM,則引數control_sensitivity和引數low_level_sensitivity的值為任意值
 *							
 */
void Set_Bandwidth(TEF6686Module_t module,TEF6686_BandwidthControlMode_t mode, uint16_t bandwidth, u16 control_sensitivity, u16 low_level_sensitivity);


/**
 * @name      : Set_RFAGC
 * @brief     : 調諧器前端AGC的啟動水平。 
 * @params
 *                @module  	  	: 調製方式(FM/AM)
 *                @start   			: RF AGC啟動值,單位為dBuV,FM的預設值為92dBuV,AM的預設值為100dBuV
 *                @extension    : RF AGC步長擴充套件,FM可填Integrated(僅整合步驟,為預設值)和Extension(來自控制輸出的AGC步驟擴充套件(GPIO特性“AGC”),AM調製該引數為任意值
 *
 * @version   : 1.0
 * @note			: 1、為了防止關鍵定時並確保適當的FM AGC功能,在使用AM到FM頻帶變化時適用以下傳輸要求: 
 *                  FM_Set_RFAGC和FM_Set_TuneTo應至少間隔2 ms,FM_Set_TuneTo和FM_Set_RFAGC需要至少11 ms分離。
 *							
 */
void Set_RFAGC(TEF6686Module_t module,u16 start, TEF6686_RFAGC_ExtensionMode_t mode);


/**
 * @name      : FM_Set_MphSuppression
 * @brief     : 使用/禁用”FM多路抑制系統 
 * @params
 *                @mode   : MultipathSuppression_Enable為啟用多路徑抑制,MultipathSuppression_Disable為禁用多路徑抑制功能,詳情可見列舉TEF6686_MphSuppressionMode_t
 *
 * @version   : 1.0
 * @note			: 建議設定“開啟”以提高現場效能
 *							
 */
void FM_Set_MphSuppression(TEF6686_MphSuppressionMode_t mode);


/**
 * @name      : FM_Set_ChannelEqualizer
 * @brief     : 使用/禁用FM通道均衡器 
 * @params
 *                @mode   : ChannelEqualizer_Enable為啟用通道均衡器,ChannelEqualizer_Disable為禁用通道均衡器,詳情可見列舉TEF6686_ChannelEqualizerMode_t
 *
 * @version   : 1.0
 * @note			: 建議設定“開啟”以改善現場效能 
 *							
 */
void FM_Set_ChannelEqualizer(TEF6686_ChannelEqualizerMode_t mode);


/**
 * @name      : FM_Set_NoiseBlanker
 * @brief     : 噪聲空白器選項和靈敏度設定 
 * @params
 *                @mode          : NoiseBlanker_OFF為關閉噪聲熄滅裝置,NoiseBlanker_ON為開啟噪聲熄滅裝置(預設開啟),詳情可見列舉TEF6686_NoiseBlankerMode_t
 *                @sensitivity   : 觸發器靈敏度,單位為%,預設值為100%
 *
 * @version   : 1.0
 * @note			: None
 *							
 */
void FM_Set_NoiseBlanker(TEF6686_NoiseBlankerMode_t mode, u16 sensitivity);

/**
 * @name      : FM_Set_Deemphasis
 * @brief     : 調頻消音時間常數的選擇
 * @params
 *                @deemphasis  : 失重時間常數,單位為us,如為0則關閉或用於評估目的,50us deemphasis為預設值                         
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Deemphasis(uint16_t Deemphasis);


/**
 * @name      : Set_LevelStep
 * @brief     : 選擇電平校正作為調諧器前端AGC的一個功能
 * @params
 *                @module  	 : 調製方式(FM/AM)
 *                @step1     : 從0到1的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-2dB,AM的預設值是-1dB
 *                @step2     : 從1到2的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-3dB,AM的預設值是-2dB 
 *                @step3     : 從2到3的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-4dB,AM的預設值是-3dB  
 *                @step4     : 從3到4的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-5dB,AM的預設值是-4dB  
 *                @step5     : 從4到5的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM的預設值是-6dB,AM的預設值是-5dB  
 *                @step6     : 從5到6的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM和AM的預設值是-6dB
 *                @step7     : 從6到7(或更高)的AGC步驟的電平偏移量,單位是dB,範圍是-6dB~0dB,FM和AM的預設值是-6dB
 *
 * @version   : 1.0
 * @note			: 1、一般不建議調整LevelStep的預設值,但允許在高訊號條件下對弱訊號處理進行特定的微調。
 */
void Set_LevelStep(TEF6686Module_t module, short step1, short step2,short step3,short step4,short step5,short step6,short step7);




/**
 * @name      : Set_LevelOffset
 * @brief     : 水平校正的選擇。
 * @params
 *                @module  	 : 調製方式(FM/AM)
 *                @offset    : 水平偏移量,單位是dB,範圍為-48dB ~ +15dB,預設值是0 dB
 *
 * @version   : 1.0
 * @note			: 電平偏移量可以用作天線噪聲電平的總體校正,幷包括在弱訊號處理和Get_Quality()函式的電平讀取值中。
 */
void Set_LevelOffset(TEF6686Module_t module, short offset);


/**
 * @name      : Set_Softmute_Time
 * @brief     : 該函式定義電平檢測器、FM噪聲和多路徑檢測器的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項。
 * @params
 *                @module  	    : 調製方式(FM/AM)
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~1200ms,預設值為120ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為500ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms,FM的預設值為2ms,AM的預設值是12ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms,FM的預設值為2ms,AM的預設值是50ms
 *
 * @version   : 1.0
 * @note			: 建議FM設定為1 ms快速處理,以提高現場效能
 */
void Set_Softmute_Time(TEF6686Module_t module, short slow_attack, short slow_decay, short fast_attack, short fast_decay);


/**
 * @name      : Set_Softmute_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅用於評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(預設)
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : 弱訊號處理電平啟動,當液位降到以下時進行控制,單位是dBuV,範圍是0dBuV~50dBuV,FM的預設值是15dBuV,AM的預設值是28dBuV
 *                @slope  : 弱訊號處理電平範圍,單位是dB,控制水平的範圍是6dB~30dB,FM的預設值為22dB,AM的預設值是25dB
 *
 * @version   : 1.0
 * @note			: 建議LW波段的AM設定為34dBuV啟動和30dB斜率,以提高現場效能
 */
void Set_Softmute_Level(TEF6686Module_t module, TEF6686_TimerSelectionMode_t mode, u16 start, u16 slope);


/**
 * @name      : FM_Set_Softmute_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(預設)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : FM弱訊號處理噪聲開始,高於噪聲時的控制,單位是%,範圍是0%~80%,預設值是50%
 *                @slope  : FM弱訊號處理噪聲範圍,單位是%,控制範圍是10%~100%,預設值為100%
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Softmute_Noise(TEF6686_TimerSelectionMode_t mode, u16 start, u16 slope);


/**
 * @name      : FM_Set_Softmute_Mph
 * @brief     : 設定多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(預設)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : FM弱訊號處理多路啟動,高於mph時的控制,單位是%,範圍是0%~80%,預設值是50%
 *                @slope  : FM弱訊號處理多路徑範圍,單位是%,控制範圍是10%~100%,預設值為100%
 *
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Softmute_Mph(TEF6686_TimerSelectionMode_t mode, u16 start, u16 slope);


/**
 * @name      : Set_Softmute_Max
 * @brief     : 啟用並定義最大軟衰減量(在訊號差條件下實現)
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_Softmute_WeakSignalHandleMode_t
 *																WeakSignalHandle_ON 			關閉(僅供評估)
 *																WeakSignalHandle_OFF		  開啟;由限制引數定義的最大動態控制(預設值)
 *                @limit  : 軟靜音動態衰減極限,軟靜音最大衰減,單位是dB,範圍是0dB~40dB,FM的預設值是20dB,AM的預設值是25dB
 *
 * @version   : 1.0
 * @note			: 建議LW波段的AM設定為33 dB限制
 */
void Set_Softmute_Max(TEF6686Module_t module,TEF6686_WeakSignalHandleMode_t mode, u16 limit);


/**
 * @name      : Set_Highcut_Time
 * @brief     : 定義電平檢測器、FM噪聲和多路徑檢測器的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項。
 * @params
 *                @module  	    : 調製方式(FM/AM)
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~2000ms,預設值為500ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為2000ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms,FM的預設值為2ms,AM的預設值是12ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms,FM的預設值為2ms,AM的預設值是50ms
 *
 * @version   : 1.0
 * @note			: 建議的FM設定為200 ms慢攻擊,1 ms快速攻擊和8 ms快速衰減,以提高現場效能。
 */
void Set_Highcut_Time(TEF6686Module_t module, u16 slow_attack, u16 slow_decay,u16 fast_attack, u16 fast_decay);



/**
 * @name      : Set_Highcut_Mod
 * @brief     : 啟用調製依賴性並設定靈敏度
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode   : 與調製相關的弱訊號處理			詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														OFF		關閉(預設)
 *														ON		開啟(獨立調製定時器)
 *                @start  : 弱訊號處理調製啟動,當調製低於該值時控制,單位是%,範圍是10% ~ 100%,預設值為25%(注:對於FM頻段,100%調製等於75 kHz偏差)
 *                @slope  : 弱訊號處理調製範圍,控制調製範圍,單位是%,範圍是 3% ~ 100%,預設值是 13%
 *                @shift  : 弱訊號處理控制換擋,最大弱訊號控制位移,單位是%,範圍是 5% ~ 100%,預設值是50%(從最小控制限制到最大限制的線性控制範圍的百分比)
 *
 * @version   : 1.0
 * @note			: None
 */
void Set_Highcut_Mod(TEF6686Module_t module, TEF6686_WeakSignalHandleMode_t mode, u16 start,u16 slope, u16 shift);


/**
 * @name      : Set_Highcut_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(預設)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(AM預設)
 *																		DoubleTimer			結合快速和慢計時器控制(FM預設)
 *                @start  : 弱訊號處理調製啟動,當電平低於該引數時進行控制,單位是dBuV,範圍是20 dBuV ~ 60 dBuV,FM預設值為36dBuV,AM預設值為40dBuV
 *                @slope  : 弱訊號處理電平範圍,控制水平範圍超過該引數,單位是dB,範圍是 6 dB ~ 30 dB,FM預設值為30dB,AM預設值為20dB
 *
 * @version   : 1.0
 * @note			: 建議MW和SW波段的AM設定為47dBuV啟動,以提高現場效能。建議AM LW波段為52dBuV啟動。
 */
void Set_Highcut_Level(TEF6686Module_t module, TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);


/**
 * @name      : FM_Set_Highcut_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時(僅限FM)
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(預設)
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : 弱訊號處理調製啟動,當噪聲高於該值時控制,單位是%,範圍是0% ~ 80%,預設值為36%
 *                @slope  : FM弱訊號處理噪聲範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是30%
 *
 * @version   : 1.0
 * @note			: 建議採用“雙定時器”模式,15%的啟動和20%的斜率來提高現場效能。
 */
void FM_Set_Highcut_Noise( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);


/**
 * @name      : FM_Set_Highcut_Mph
 * @brief     : 設定多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅供評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制(預設)
 *																		DoubleTimer			結合快速和慢計時器控制
 *                @start  : 弱訊號處理多路啟動,當mph高於該引數時進行控制,單位是%,範圍是0% ~ 80%,預設值為36%
 *                @slope  : FM弱訊號處理多路徑範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是30%
 *
 * @version   : 1.0
 * @note			: 建議採用“雙定時器”模式,12%的啟動和16%的斜率來提高現場效能。
 */
void FM_Set_Highcut_Mph( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);


/**
 * @name      : Set_Highcut_Min
 * @brief     : 可選地定義最小高壓衰減量(在良好訊號條件下實現)。
 * @params
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉,僅供評估
 *														WeakSignalHandling_ON		開啟,按限制引數設定的最大動態控制值(預設值)
 *                @limit  : 最高衰減極限,單位為kHZ
 *														FM		高切角頻率,最大衰減頻率為3dB,預設值為4kHZ
 *															 “IIR”篩選器(選項“1”(預設值)),範圍為1.5kHz ~ 7kHz
 *															 ‘deemphasis’模式(選項“2”),範圍為0.7kHz ~ 3kHz
 *																“FIR”高切過濾器(選項“3”),範圍為2.7kHz ~ 7kHz
 *														AM 	高速切割最大值-3 dB,範圍是1.35 kHZ ~ 7 kHz,預設值為1.8kHZ
 *																
 * @version   : 1.0
 * @note			: 1、對於FM,不同的極限範圍適用於FM Set_Highcut_Options(cmd = 59)提供的不同的高速切割控制特性。
 *							2、建議的FM設定為2.4 kHz的限制,以改善“IIR”濾波器場效能
 */
void Set_Highcut_Max( TEF6686Module_t module,TEF6686_WeakSignalHandleMode_t mode, u16 limit);

/**
 * @name      : Set_Highcut_Min
 * @brief     : 可選地定義最小高壓衰減量(在良好訊號條件下實現)。
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 強訊號處理   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;不限制高音訊頻寬(FM預設值)
 *														StrongSignalHandling_ON		開啟;由限制引數設定的最小控制限制(AM預設值)
 *                @limit  : 高速固定衰減極限,單位為kHZ
 *														FM		最小衰減3dB預設值為10kHZ
 *															 “IIR”篩選器(選項“1”(預設值)),範圍為2.7kHz ~ 15kHz
 *															 ‘deemphasis’模式(選項“2”),範圍為1.5kHz ~ 3.18kHz
 *																“FIR”高切過濾器(選項“3”),範圍為2.7kHz ~ 15kHz
 *														AM 	高速切割最大值-3 dB,範圍是2.7kHz ~ 15kHz,預設值為6kHZ
 *																
 * @version   : 1.0
 * @note			: 1、對於Set_Highcut_Options()函式模式=2的特徵“弱化”,則忽略Set_Deemphasis()函式設定,由FM_Set_Highcut_Min()函式引數模式=1定義50us或7us的弱化,並進行限制。
 *							2、對於一個正常的控制行為,Set_Highcut_Min()函式總是應該設定一個比Set_Highcut_Max()函式更弱的訊號處理限制(即一個更高的頻率)。
 */
void Set_Highcut_Min( TEF6686Module_t module,TEF6686_StrongSignalHandleMode_t mode, u16 limit);


/**
 * @name      : Set_Lowcut_Max
 * @brief     : 啟用並定義最大動態低割衰減,
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeaksSignalHandling_OFF		關閉;
 *														WeakSignalHandling_ON		開啟;由極限引數定義的最大動態控制(預設值)
 *                @limit  : 低切動態衰減極限,最大減量的衰減,範圍是30HZ ~ 500Hz單位為HZ,預設值為120 Hz,
 *																
 * @version   : 1.0
 * @note			: 建議F頻設定為100 Hz限制,以改善現場效能。
 */
void Set_Lowcut_Max( TEF6686Module_t module,TEF6686_WeakSignalHandleMode_t mode, u16 limit);

/**
 * @name      : Set_Lowcut_Min
 * @brief     : 可選擇地定義了低訊號頻率的最小衰減。
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;不限制低音訊頻寬(FM預設值)
 *														StrongSignalHandling_ON		  開啟;由限制引數設定的最小控制限制(AM預設值)
 *                @limit  : 低切固定衰減極限,單位為HZ,範圍是10HZ ~ 200Hz,預設值為20 Hz,
 *																
 * @version   : 1.0
 * @note			: 對於一個正常的控制行為,Set_Lowcut_Min()總是應該設定一個比Set_Lowcut_Max()更弱的訊號處理限制(即一個較低的頻率)。
 */
void Set_Lowcut_Min( TEF6686Module_t module,TEF6686_StrongSignalHandleMode_t mode, u16 limit);


/**
 * @name      : FM_Set_Highcut_Options
 * @brief     : 允許選擇三個不同的高速控制特性(僅FM)
 * @params 
 *                @mode  	: FM高速切割控制特性   詳情可見列舉TEF6686_HighCutControlMode_t
 *														IIR 			    	“analog”具有控制頻率的一階低通濾波器(預設)
 *														Deemphasis			50us/75us消音濾波器的控制頻率
 *														FIR							“digital”高階低通濾波器與控制頻率
 *																
 * @version   : 1.0
 * @note			: 1、不同的FM高頻控制特性可用於選擇聲音的味道。
 *							2、除了選項選擇的高壓過濾器型別,適當的值應該寫入FM_Set_Highcut_Min()和FM_Set_Highcut_Max()。
 *							3、在“deemphasis”特性的情況下,FM_Set_Deemphasis()設定將被忽略,而50us的選擇或75us的取消強調則由FM_Set_Highcut_Min()來定義。
 */
void FM_Set_Highcut_Options(TEF6686_HighCutControlMode_t mode);

/**
 * @name      : FM_Set_Stereo_Time
 * @brief     : 定義了電平檢測器、噪聲和多路檢測器啟用的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項
 * @params 
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~2000ms,預設值為1000s
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為4000ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms
 *																
 * @version   : 1.0
 * @note			: 建議採用200 ms慢攻擊和2 ms快速攻擊,以提高現場效能。
 */
void FM_Set_Stereo_Time(u16 slow_attack, u16 slow_decay, u16 fast_attack, u16 fast_decay);

/**
 * @name      : FM_Set_Stereo_Mod
 * @brief     : 啟用調製依賴性並設定靈敏度
 * @params 
 *                @mode   : 與調製相關的弱訊號處理			詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉(預設)
 *														WeakSignalHandling_ON		開啟(獨立調製定時器)
 *                @start  : 弱訊號處理調製啟動,當調製低於該值時控制,單位是%,範圍是10% ~ 100%,預設值為21%(注:對於FM頻段,100%調製等於75 kHz偏差)
 *                @slope  : 弱訊號處理調製範圍,控制調製範圍,單位是%,範圍是 3% ~ 100%,預設值是 9%
 *                @shift  : 弱訊號處理控制換擋,最大弱訊號控制位移,單位是%,範圍是 5% ~ 100%,預設值是50%(“最低限制”線性控制範圍的百分比)
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Stereo_Mod(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope, u16 shift);

/**
 * @name      : FM_Set_Stereo_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時。
 * @params 
*                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅供評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當電平低於該引數時進行控制,單位是dBuV,範圍是30 dBuV ~ 60 dBuV,預設值為46dBuV
 *                @slope  : 弱訊號處理電平範圍,控制水平範圍超過該引數,單位是dB,範圍是 6 dB ~ 30 dB,預設值為24dB
 *															
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Stereo_Level(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope);
	
	
	
	
	/**
 * @name      : FM_Set_Stereo_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時。
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當噪聲高於該值時控制,單位是%,範圍是0% ~ 80%,預設值為24%
 *                @slope  : FM弱訊號處理噪聲範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是20%
 *
 * @version   : 1.0
 * @note			: 建議用12%的開始和16%的斜率來提高田間效能。。
 */
void FM_Set_Stereo_Noise( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);

/**
 * @name      : FM_Set_Stereo_Mph
 * @brief     : 設定立體聲的多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理多路啟動,當mph高於該引數時進行控制,單位是%,範圍是0% ~ 80%,預設值為24%
 *                @slope  : FM弱訊號處理多路徑範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是20%
 *
 * @version   : 1.0
 * @note			: 建議用10%的開始和15%的斜率來提高現場效能
 */
void FM_Set_Stereo_Mph( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);


/**
 * @name      : FM_Set_Stereo_Max
 * @brief     : 允許禁用動態立體控制。
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉;(僅供評估)
 *														WeakSignalHandling_ON		 開啟;最大動態控制為0 dB通道秒,即單聲道(預設)
 *																
 * @version   : 1.0
 * @note			: _Max模式“off”不適合禁用FMSI操作中可能需要的立體聲處理。應該使用在_Mod、_Level、_Usn和_Mph上設定“off”。
 */
void FM_Set_Stereo_Max(TEF6686_WeakSignalHandleMode_t mode);


/**
 * @name      : FM_Set_Stereo_Min
 * @brief     : 可選地定義最小量的立體聲衰減(在良好的訊號條件下實現)
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;通道分離不受限制(預設值)
 *														StrongSignalHandling_ON		  開啟;由極限引數設定的最小控制極限
 *														ForcedMono									強制單聲道
 *                @limit  : 立體聲固定衰減極限,立體聲最小通道分離,單位為dB,範圍是6dB ~ 40dB,預設值為40 dB,
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_Stereo_Min(TEF6686_StrongSignalHandleMode_t mode, u16 limit);


/**
 * @name      : FM_Set_StHiBlend_Time
 * @brief     : FM StHiBlend弱訊號處理的時間和質量靈敏度設定。定義了電平檢測器、噪聲和多路檢測器啟用的弱訊號處理響應時間。雙定時器功能的響應時間可以快速和緩慢,有級別、噪音和mph命令的啟用選項。
 * @params 
 *                @slow_attack  : 弱訊號的緩慢處理時間,單位是ms,範圍是60ms~2000ms,預設值為500ms
 *                @slow_decay   : 弱訊號處理的緩慢衰減時間,單位是ms,範圍是120ms~12500ms,預設值為2000ms
 *                @fast_attack  : 弱訊號的快速處理時間,單位是ms,範圍是1ms~120ms,預設值是2ms
 *                @fast_decay   : 弱訊號處理的快速衰減時間,單位是ms,範圍是2ms~500ms,預設值是2ms
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Time(u16 slow_attack, u16 slow_decay, u16 fast_attack, u16 fast_decay);


/**
 * @name      : FM_Set_StHiBlend_Mod
 * @brief     : 啟用調製依賴性並設定靈敏度
 * @params 
 *                @mode   : 與調製相關的弱訊號處理			詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉(預設)
 *														WeakSignalHandling_ON		  開啟(獨立調製定時器)
 *                @start  : 弱訊號處理調製啟動,當調製低於該值時控制,單位是%,範圍是10% ~ 100%,預設值為24%(注:對於FM頻段,100%調製等於75 kHz偏差)
 *                @slope  : 弱訊號處理調製範圍,控制調製範圍,單位是%,範圍是 3% ~ 100%,預設值是 12%
 *                @shift  : 弱訊號處理控制換擋,最大弱訊號控制位移,單位是%,範圍是 5% ~ 100%,預設值是67%(控制範圍從最小限制到最大限制的百分比)
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Mod(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope, u16 shift);


/**
 * @name      : FM_Set_Stereo_Level
 * @brief     : 設定水平靈敏度,並啟用慢速和快速定時。
 * @params 
*                 @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉(僅供評估)
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當電平低於該引數時進行控制,單位是dBuV,範圍是30 dBuV ~ 66 dBuV,預設值為60dBuV
 *                @slope  : 弱訊號處理電平範圍,控制水平範圍超過該引數,單位是dB,範圍是 6 dB ~ 30 dB,預設值為24dB
 *															
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Level(TEF6686_WeakSignalHandleMode_t  mode,u16 start, u16 slope);


/**
 * @name      : FM_Set_StHiBlend_Noise
 * @brief     : 設定噪聲,並實現慢速和快速定時。
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理調製啟動,當噪聲高於該值時控制,單位是%,範圍是0% ~ 80%,預設值為16%
 *                @slope  : FM弱訊號處理噪聲範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是14%
 *
 * @version   : 1.0
 * @note			: 建議從8%開始,以提高現場效能。。
 */
void FM_Set_StHiBlend_Noise( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);


/**
 * @name      : FM_Set_StHiBlend_Mph
 * @brief     : 設定立體聲的多路徑靈敏度,並實現慢速和快速定時
 * @params
 *                @mode  	: 定時器選擇   詳情可見列舉TEF6686_TimerSelectionMode_t
 *																		Timer_OFF 			定時器關閉
 *																		FastTimer				快速定時器控制
 *																		SlowTimer				慢計時器控制
 *																		DoubleTimer			結合快速和慢計時器控制(預設)
 *                @start  : 弱訊號處理多路啟動,當mph高於該引數時進行控制,單位是%,範圍是0% ~ 80%,預設值為16%
 *                @slope  : FM弱訊號處理多路徑範圍,最大弱訊號控制位移,單位是%,範圍是 10% ~ 100%,預設值是14%
 *
 * @version   : 1.0
 * @note			: 建議從8%開始,以提高現場效能。
 */
void FM_Set_StHiBlend_Mph( TEF6686_TimerSelectionMode_t mode, u16 start,u16 slope);


/**
 * @name      : FM_Set_StHiBlend_Max
 * @brief     : 啟用並定義StHiBlend衰減的最大量(在非常差的訊號條件下實現)。
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉;(僅供評估)
 *														WeakSignalHandling_ON		 開啟;由限制引數定義的最大動態控制(預設值)
 *                @limit  : 靜態混合器的動態衰減極限,單位為kHZ,範圍是2.7kHZ ~ 7kHz,預設值為4kHz,
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Max(TEF6686_WeakSignalHandleMode_t mode, u16 limit);

/**
 * @name      : FM_Set_StHiBlend_Max
 * @brief     : 啟用並定義StHiBlend衰減的最大量(在非常差的訊號條件下實現)。
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_WeakSignalHandleMode_t
 *														WeakSignalHandling_OFF		關閉;(僅供評估)
 *														WeakSignalHandling_ON		 開啟;由限制引數定義的最大動態控制(預設值)
 *                @limit  : 靜態混合器的動態衰減極限,單位為kHZ,範圍是2.7kHZ ~ 7kHz,預設值為4kHz,
 *																
 * @version   : 1.0
 * @note			: None
 */
void FM_Set_StHiBlend_Max(TEF6686_WeakSignalHandleMode_t mode, u16 limit);

/**
 * @name      : FM_Set_StHiBlend_Min
 * @brief     : 可選地定義StHiBlend衰減量(在良好的訊號條件下實現))
 * @params 
 *                @mode  	: 弱訊號處理(動態控制)   詳情可見列舉TEF6686_StrongSignalHandleMode_t
 *														StrongSignalHandling_OFF		關閉;通道分離bw不受限制(預設值)
 *														StrongSignalHandling_ON		  開啟;由極限引數設定的最小控制限值
 *                @limit  : 混合固定衰減極限,單位為kHZ,範圍是3 kHz ~ 15 kHz
 *																
 * @version   : 1.0
 * @note			: 對於一個正常的控制行為,Set_StHiBlend_Min()總是應該設定一個比Set_StHiBlend_Max()更弱的訊號處理限制(即一個更高的頻率)。
 */
void FM_Set_StHiBlend_Min(TEF6686_StrongSignalHandleMode_t mode, u16 limit);

/**
 * @name      : Set_Scaler
 * @brief     : 在FM和AM模擬無線電聲音之間的聲音振幅的微調。
 * @params 
 *                @module : 調製方式(FM/AM)
 *                @gain  	: 通道增益,模擬無線電訊號增益,單位是dB,範圍是= -12 … +6 dB,預設是為0dB
 *																
 * @version   : 1.0
 * @note			: 關於FM和AM數字無線電聲音振幅的微調,見Set_DR_Blend()
 */
void Set_Scaler(TEF6686Module_t module, u16 gain);


/**
 * @name      : FM_Set_RDS
 * @brief     : 調頻無線電資料系統解調器和解碼器系統的控制。
 * @params 
 *                @mode       : RDS操作控制				詳情可見TEF6686_RDSControlMode_t
 *																	RDSControl_OFF 	    關閉(禁用RDS功能)
 *																	DecoderMode					解碼器模式(預設);從Get_RDS_Status/Get_RDS_Data、FM中輸出RDS組資料(塊A、B、C、D);= 130/131
 *																	DemodulatorMode			解調器模式;從Get_RDS_Status/Get_RDS_Data輸出原始解調器資料;FM cmd = 130/131
 *                @restart    : RDS解碼器重新啟動		詳情可見TEF6686_RDSDecoderRestartControl_t
 *																	NoControl 	       不控制
 *																	ManualRestart			 手動重新啟動;立即開始尋找新的RDS訊號
 *																	AutomaticRestart	 調優後自動重新啟動(預設);在預設、搜尋、跳轉或檢查調優操作後開始尋找新的RDS訊號(請參見FM cmd = 1)
 *                @interface  : RDS引腳訊號功能			詳情可見TEF6686_RDSPinControl_t
 *															  	RDS_NoPinInterface  	  無引腳介面(預設)
 *																  DataAvailable   		資料可用狀態輸出;活動低(GPIO功能“DAVN”)
 *																  DoubleWire      		傳統的雙線解調器資料和時鐘輸出(“RDDA”和“RDCL”)
 *																
 * @version   : 1.0
 * @note			: 1、RDS ‘DAVN’訊號(介面= 2)可以在任何可用的GPIO引腳上輸出。為了接收原始解調器資料,建議使用“解調器模式”(模式= 2),2線輸出選項(介面= 4)僅用於傳統使用,不建議用於新的設計。
 * 							2、對於引腳訊號,需要進行GPIO引腳分配;請參見Set_GPIO()。
 */
void FM_Set_RDS(TEF6686_RDSControlMode_t mode, TEF6686_RDSDecoderRestartControl_t restart, TEF6686_RDSPinControl_t interface);

/**
 * @name      : Set_QualityStatus
 * @brief     : 啟用並定義質量檢測器狀態標誌的中斷使用或狀態引腳輸出
 * @params
 *                @module       : 調製方式(FM/AM)
 *                @mode         : 調優準備就緒後的質量狀態標誌				詳情可見TEF6686_QualityStatusFlag_t
 *																	NoFlag   	   調優後未設定任何標誌(預設值)
 *																	SetFlag   	 當FM AF_Update質量結果可用時,設定標誌
 *								@time					: 設定標誌在該時間後,調整準備好,單位是ms,範圍是1ms~32ms
 *																該引數只有引數mode選擇SetFlag時生效,如為NoFlag,則該引數為任意值
 *                @interface    : 質量狀態引腳訊號功能		詳情可見TEF6686_QualityStatusPinControl_t
 *																	QualityStatus_NoPinInterface  	  無引腳介面(預設)
 *																	QualityStatus_Output   				    質量狀態輸出;活動低(“QSI”)
 *																
 * @version   : 1.0
 * @note			: 對於引腳訊號,需要進行GPIO引腳分配;請參見APPL cmd 3 Set_GPIO()。注意:模式引數計時器的設定是四捨五入到1 ms的步長
 */
void Set_QualityStatus(TEF6686Module_t module, TEF6686_QualityStatusFlag_t mode, u16 time, TEF6686_QualityStatusPinControl_t interface);


/**
 * @name      : Set_Specials
 * @brief     : 用於評估和擴充套件應用程式使用的特殊無線電選項。
 * @params
 *                @module       : 調製方式(FM/AM)
 *                @ana_out      : 音訊輸出使用				詳情可見TEF6686_AudioOutputUse_t
 *																	NormalOperation  	  預設
 *																	DARC_Output    		  DAC_L: FM MPX寬頻(DARC)訊號/ DAC_R: FM單聲道音訊 
 *																	DigitalAudio        L:數字無線電左頻道/R:模擬無線電左頻道
 *																
 * @version   : 1.0
 * @note			: 1、設定ana_out = 1作用於DAC輸出,並且僅可用於FM。FM立體聲訊號仍然可從數字音訊I2S輸出(IIS_SD_1)
 *							2、設定ana_out = 2同時作用於DAC和數字音訊I2S輸出。DAC源選擇或I2S輸出源選擇覆蓋此數字無線電測試選項。
 *							3、設定ana_out = 2需要一個音訊輸入選擇的“無線電”,並且必須禁用數字無線電(或處於非活動狀態的混合訊號)。數字無線電增益比例不包括在內。此行為等同於裝置版本V101。
 */
void Set_Specials(TEF6686Module_t module, TEF6686_AudioOutputUse_t ana_out);


/**
 * @name      : FM_Set_Bandwidth_Options
 * @brief     : FM自動頻寬無線電選擇性濾波器的附加控制選項。
 * @params
 *                @modulation   :擴充套件API: FM自動頻寬提升上的調製,將頻寬提高到最大頻寬的調製指數,單位是%,範圍位66% ~ 133%,預設值是95%
 *																
 * @version   : 1.0
 * @note			: 1、一般不建議調整預設值,但允許在特定條件下進行特定的效能微調。特性創新可能會導致擴充套件的API預設值和控制隨著韌體的釋出而改變
 *							2、有關主FM自動頻寬控制和其他控制選項,請參見Set_Bandwidth().
 */
void FM_Set_Bandwidth_Options( u16 modulation);

/**
 * @name      : AUDIO_Set_Volume
 * @brief     : 音訊音量的設定。
 * @params
 *                @volume   :音訊音量,單位是dB,範圍為 -60dB ~ +24dB,預設值是0dB
 *																
 * @version   : 1.0
 * @note			: 1、根據源訊號,超過0 dB的音量設定可能會引入訊號裁剪
 *							2、TEF668X體積設定到體積= -40 dB在1 dB內是準確的,較低的體積顯示出越來越大的不準確性和步長。設定-60 dB和較低的設定為靜音
 */
void AUDIO_Set_Volume( u16 volume);


/**
 * @name      : AUDIO_Set_Mute
 * @brief     : 啟用和禁用音訊靜音。
 * @params
 *                @mode   :音訊靜音      詳情可見列舉TEF6686_AudioMuteMode_t
 *														MuteDisabled    禁用靜音,允許音訊輸出
 *														MuteActive      靜音起作用(預設)
 *																
 * @version   : 1.0
 * @note			: None
 */
void AUDIO_Set_Mute( TEF6686_AudioMuteMode_t mode);

/**
 * @name      : AUDIO_Set_Input
 * @brief     : 輸入選擇;選擇音訊輸入源訊號。
 * @params
 *                @source   :音訊源選擇      詳情可見列舉TEF6686_AudioSourceSelect_t
 *														  Radio  	             預設(啟用和可用時的模擬無線電或數字無線電)
 *														  ExternalI2S_Audio    外部I2S音訊源
 *															SineWaveGenerator    正弦波發電機
 *																
 * @version   : 1.0
 * @note			: None
 */
void AUDIO_Set_Input( TEF6686_AudioSourceSelect_t mode);


/**
 * @name      : AUDIO_Set_Output_Source
 * @brief     : 輸出選擇;對音訊輸出的源訊號的選擇。
 * @params
 *								@signal		:音訊輸出				詳情可見列舉TEF6686_AudioSourceSelect_t
 *															I2SDigitalAudioOutput_IIS_SD_1   I2S數字音訊輸出IIS_SD_1
 *															DAC_L_ROutput    			           DAC輸出
 *                @source   :音訊源選擇      詳情可見列舉TEF6686_AudioSourceSelect_t
 *														  AnalogRadio  	                   模擬無線電
 *														  I2SDigitalAudioInput_IIS_SD_0    I2S數字音訊輸入IIS_SD_0
 *															AudioProcessor                   音訊處理(預設)
 *															SineWaveGenerator								 正弦波發電機
 *																
 * @version   : 1.0
 * @note			: 1、預設情況下,DAC輸出和IIS_SD_1輸出訊號都來自音訊處理器,即訊號由AUDIO_Set_Input、_Set_Volume和_Set_Mutt定義。Set_Output_Source允許替代輸出訊號選擇,直接連線到一個可用的源訊號而無需處理。
 *							2、命令集_Output_源需要一個訊號定義,即包括索引=1
 */
void AUDIO_Set_Output_Source( TEF6686_AudioOutput_t signal, TEF6686_AudioSourceSelect_t source);



/**
 * @name      : AUDIO_Set_Ana_Out
 * @brief     : 模擬輸出訊號的定義。
 * @params
 *                @mode   :輸出方式      詳情可見列舉TEF6686_DACOutputMode_t
 *                              DisableDACOutput  	  禁用DAC輸出
 *                              EnableDACOutput    		使能DAC輸出
 *																
 * @version   : 1.0
 * @note			: None
 */
void AUDIO_Set_Ana_Out(  TEF6686_DACOutputMode_t mode);

/**
 * @name      : AUDIO_Set_Dig_IO
 * @brief     : 數字輸入和輸出音訊訊號的定義。
 * @params
 *                @signal      :輸出方式            詳情可見列舉TEF6686_DigitalAudioSignal_t
 *                                 I2SDigitalAudio_Input      I2S數字音訊IIS_SD_0(輸入)
 *                                 I2SDigitalAudio_Output     I2S數字音訊IIS_SD_1(輸出)
 *							  @format		   :數字音訊格式選擇		詳情可見列舉TEF6688_DigitalAudioFormat_t
 * 																 I2S_16bits 						(fIIS_BCK = 32 * samplerate)
 * 																 I2S_32bits 						(fIIS_BCK = 64 * samplerate) (預設)
 * 																 lsb_aligned_16bit 		(fIIS_BCK = 64 * samplerate)
 * 															 	 lsb_aligned_18bit 		(fIIS_BCK = 64 * samplerate)
 * 																 lsb_aligned_20bit 		(fIIS_BCK = 64 * samplerate)
 * 																 lsb_aligned_24bit 		(fIIS_BCK = 64 * samplerate)
 *								@operation   : 操作方式
 *																 SlaveMode 						從屬模式;由原始碼定義的IIS_BCK和IIS_WS輸入(預設值)
 *																 MasterMode						主模式;由裝置定義的IIS_BCK和IIS_WS輸出
 *								@samplerate  : 音訊取樣率選擇
 *																 32.0                 32kHz
 *																 44.1                 44.1kHz (預設)
 *																 48.0                 48kHz
 *
 *																
 * @version   : 1.0
 * @note			: 1、命令Set_Dig_IO需要一個訊號定義,即包括索引=1。
 *							2、一個TEF668X數字音訊訊號總是使用16個有源(msb)位。
 *							3、在某些情況下,“操作”或“取樣器”的設定不是可以獨立選擇的,例如,因為共享的BCK和WS引腳。在這種情況下,控制設定是基於列舉值最小的訊號
 *							4、fIIS_BCK表示在主模式操作時的輸出頻率和對lsb對準的格式化輸出訊號的從模式操作所需的輸入頻率。輸入訊號和I2S格式的輸出訊號的從屬模式操作也允許其他位元時鐘速率(16……32)*2*取樣率。
 */
void AUDIO_Set_Dig_IO(TEF6686_DigitalAudioSignal_t signal, TEF6688_DigitalAudioFormat_t format, TEF6686_DigIOMode_t operation, u16 samplerate);


/**
 * @name      : AUDIO_Set_Input_Scaler
 * @brief     : 外部源聲振幅的微調。對於每個可用的外部源,可以程式設計設定一個單獨的聲音振幅校正,以便在選擇音訊輸入時使用( Set_Input())。
 * @params
 *							  @gain		 :外部源通道增益,單位是dB,範圍是-12dB~6dB,預設值是0dB
 *																
 * @version   : 1.0
 * @note			: 1、命令Set_Input_Scaler需要一個源定義,即包括索引=1。
 *							2、來自IIS_SD_0的數字無線電訊號的縮放由無線電控制FM / AM  Set_DR_Blend()
 */
void AUDIO_Set_Input_Scaler( u16 gain);

/**
 * @name      : AUDIO_Set_WaveGen
 * @brief     : 內部正弦波和偏移發生器訊號的定義。波發生器可以選擇作為音訊源(見Set_Input()),並且僅用於測試目的。
 * @params
 *                @mode        :模式            詳情可見列舉TEF6686_WaveGenMode_t
 * 																 WaveSignalOff 													    	預設
 * 																 Wave1Signal_LChannel													左通道上的第1波訊號
 * 																 Wave2Signal_RChannel													右通道上的第2波訊號
 * 																 Wave1Signal_LChannel_Wave2Signal_RChannel		左通道第1波訊號,右通道2波訊號
 * 																 Wave1Signal_LRChannel  										  左右通道上的第一波訊號
 * 																 Wave2Signal_LRChannel 												左右通道上的第二波訊號
 * 																 Wave1_Wave2Signal_LRChannel									左右通道上的第1波+第2波訊號
 *							  @offset		   :直流偏移,單位為LSB,範圍是-32768LSB ~ +32767LSB,預設值為0LSB(無偏移)
 *								@amplitude1  : 波1振幅,單位為dB,範圍是 -30dB ~ 0dB,預設值為-20dB
 *								@frequency1  : 波1頻率,單位為HZ,範圍是 10HZ ~ 20HZ,預設值為400Hz
 *								@amplitude2  : 波2振幅,單位為dB,範圍是 -30dB ~ 0dB,預設值為-20dB
 *								@frequency2  : 波2頻率,單位為HZ,範圍是 10HZ ~ 20HZ,預設值為1000Hz   
 *																
 * @version   : 1.0
 * @note			: 1、振幅的參考是數字全標度峰(FSPP);即,0 dB表示無偏移時的最大未失真正弦波訊號。
 *							2、直流偏移量在左通道和右通道上都可用於所有模式設定。
 *							3、對於模式=7,將第1波和第波2的訊號加在一起,對於無失真的訊號,第波1和第波2的組合振幅不應超過0 dB。
 */
void AUDIO_Set_WaveGen( TEF6686_WaveGenMode_t mode, u16 offset, u16 amplitude1, u16 frequency1, u16 amplitude2, u16 frequency2);


/**
 * @name      : APPL_Set_OperationMode
 * @brief     : 裝置電源控制。
 * @params
 *                @mode        :模式            詳情可見列舉TEF6688_OperationMode_t
 * 																 DeviceNormalOperation	 			正常運算
 * 																 RadioStandbyMode							無無線電功能的低功耗模式(預設)
 *																
 * @version   : 1.0
 * @note			: 1、FM和AM命令在兩種操作模式下都可用,允許在無線電待機模式下進行無線電初始化FM和AM操作。
 *							2、“正常操作”將返回到待機前定義的無線電操作(除非在無線電待機模式下進行了其他選擇)。或者,預設或搜尋的無線電調優操作(見Tune_To())將啟用正常操作。
 */
void APPL_Set_OperationMode( TEF6688_OperationMode_t mode);


/**
 * @name      : APPL_Set_GPIO
 * @brief     : 定義通用用途和應用銷的用途
 * @params
 *                @pin        :GPIO引腳            詳情可見列舉TEF6686_GPIO_t
 * 																 GPIO0	
 * 																 GPIO1	
 * 																 GPIO2
 *                @module  	   : 調製方式(FM/AM)
 *                @feature  	 : 特徵								詳情可見列舉TEF6686_GPIOFeature_t
 * 																 NoUse 
 * 																 Input
 * 																 Output_0
 * 																 Output_1 
 * 																 Output_RDS	     ( 參見cmd 81 ‘DAVN’)
 * 																 Output_QSI      (FM / AM:請參見cmd82‘計時器和AF_Update標誌”)
 * 																 Output_QSI_RDS  (如果“DAVN”或“QSI”為活動狀態,則活動“low”)
 * 																 Output_RDDA     (FM:參見cmd 81 ‘RDDA,RDCL遺留選項”)
 * 																 Output_RDCL     (FM:參見cmd 81 ‘RDDA,RDCL遺留選項”)
 * 																 Output_AGC      (FM:參見cmd 11 ‘AGC步驟擴充套件”)
 * @version   : 1.0
 * @note			: 1、命令Set_GPIO需要一個GPIO編號定義,即包括索引=1。
 *							2、通用輸入的使用僅限於GPIO 0。
 *							3、FM或AM的模組設定僅對適當的無線電模式是活動的,允許FM和AM的獨立特徵定義。
 *							4、特徵訊號RDS、QSI和AGC均為“主動低”。
 *							5、可以定義和啟用指定的功能
 */
void APPL_Set_GPIO( TEF6686_GPIO_t pin, TEF6686Module_t module, TEF6686_GPIOFeature_t feature);

/**
 * @name      : APPL_Set_ReferenceClock
 * @brief     : 設定參考時鐘。
 * @params
 *                @frequency   :時脈頻率,單位是HZ,預設值是9216000HZ
 *                @type  	     : 時鐘型別								詳情可見列舉TEF6686_ReferenceClockType_t
 * 																 CrystalOscillator      晶體振盪器操作(預設值)
 * 																 ExternalClockInput     外部時鐘輸入操作
 * @version   : 1.0
 * @note			: 1、此命令僅在“空閒狀態”期間可用。
 *							2、幾種不同的頻率可以用於晶體振盪器或外部參考時鐘。為了正常工作,必須在啟用裝置之前輸入參考頻率,因此,該命令僅在“空閒”狀態下可用。
 *							3、TEF668X支援的頻率:4.000 MHz、9.216 MHz、12.000 MHz、55.46667 MHz。
 *							4、數字無線電使用的支援頻率分別為9.216、12.000和55.46667 MHz。
 *							5、55.46667 MHz僅用於時鐘輸入使用,不支援作為晶體頻率
 *							6、參考時脈頻率設定的準確性不是關鍵的,近似值被轉換為實際的支援頻率。
 */
void APPL_Set_ReferenceClock(u32 frequency, TEF6686_ReferenceClockType_t type);

/**
 * @name      : APPL_Activate
 * @brief     : 從“空閒狀態”轉到“活動狀態”。
 * @params		: None
 * @version   : 1.0
 * @note			: 1、此命令僅在“空閒狀態”期間可用。
 *							2、定義參考時脈頻率後,必須將裝置置於活動狀態,以便進一步初始化和控制。啟用後,裝置將處於“無線電備用”操作模式。
 */
void APPL_Activate(void);

/***********************************************************************************************讀指令************************************************************************************************************/

/**
 * @name      : Get_Quality
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetQualitymode
 *																	Get_Status		將讀取狀態和可能的資料,狀態和任何凍結資料(例如在AF_Update調優後可用)保持不變。Get_質量狀態是用於狀態只讀(即狀態輪詢),但可以在需要時取樣資料。
 *																	Get_Data      將讀取狀態和資料,以及讀取後釋出的任何凍結資料(例如,在AF_Update調整後可用),允許新的資料更新。獲取_質量_資料旨在用於讀取資料,並將狀態告知資料內容和有效性
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @note			: 讀取的資料
 *								1、質量檢測器狀態
 *											[15]    :AF_update標誌
 *															   0   具有時間戳的連續質量資料
 *															   1	 AF_Update取樣資料
 *											[14:10] :保留位
 *											[9:0]		:質量時間戳
 *																 0   正在進行中,沒有可用的質量資料
 *																 !0  單位是ms,範圍是1ms~320ms(*0.1ms)
 *								2、液位檢測結果,單位是dBuV,範圍是-200dBuV ~ 1200dBuV (*0.1dBuV),輸入水平的實際範圍和精度受到噪聲和agc的限制
 *								3、噪聲探測器
 *											FM	超聲波噪聲檢測器,單位是%,範圍是0% ~ 1000% (*0.1 %)
 *									    AM	高頻噪聲檢測器,單位是%,範圍是0% ~ 50000% (*0.1 %),100%是近似相等的噪聲和需要的訊號
 *								4、FM多徑探測器/ AM共通道探測器
 *	  									FM	“寬頻-AM”多路徑探測器,單位是%,範圍是0% ~ 1000% (*0.1 %)
 *									    AM	共通道檢測器
 *														0	 未檢測到共通道
 *														1  已檢測到的共同通道(基於所選標準)
 *								5、射頻偏移,單位是kHz,範圍是-1200kHz ~ 1200kHz (*0.1 kHz)
 *								6、中頻頻寬
 *											FM	 單位是kHz,範圍是560kHz ~ 3110kHz [*0.1 kHz]
 *											AM	 單位是kHz,範圍是30kHz ~ 80kHz [*0.1 kHz]
 *								7、調製探測器
 *											FM	 範圍是0% ~ 1000% [*0.1 %]
 *													 範圍是1000% ~ 2000% [*0.1 %]
 *											AM	 範圍是0% ~ 1000% [*0.1 %]
 *													 範圍是1000% ~ 2000% [*0.1 %] 
 */
void Get_Quality(TEF6686Module_t module, TEF6686_GetQualitymode_t mode, u16* receive);


/**
 * @name      : FM_Get_RDS_DemodulatorMode
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetRDSmode_t
 *																	Get_RDS_Status		於讀取資料庫例項的狀態
 *																	Get_RDS_Data      不僅返回資料庫例項的狀態,還返回儲存在資料庫中的資料。
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、FM RDS接收狀態
 *											[15]  :資料可用標誌
 *															   0   沒有可用的資料(不完整的組或沒有第一個PI)
 *															   1	 RDS組資料或第一個PI資料可用
 *											[14]  :資料丟失標誌
 *															   0   無資料丟失
 *															   1	 以前的資料沒有被讀取,而是用較新的資料代替
 *											[13]	:資料可用型別
 *																 0   組資料;連續操作
 *																 1   第一個PI資料;資料與PI程式碼後的解碼器同步
 *											[12]	:組型別
 *																 0   型別A;ABCD組(A塊中的PI程式碼)
 *																 1   型別B;A-B-C‘-D組(具有塊A和C’中的PI程式碼)
 *										[11:10]	:保留位
 *											[9] 	:同步狀態
 *																 0   RDS解碼器未同步;未找到RDS資料
 *																 1   RDS解碼器已同步;RDS資料接收已啟用
 *											[8:0] :	保留位
 *								2、塊A的資料
 *								3、塊B的資料
 *								3、塊C的資料
 *								3、塊D的資料
 *								6、錯誤程式碼(由解碼器確定)
 *											[15:14]  :塊A的錯誤程式碼
 *											[13:12]  :塊B的錯誤程式碼
 *											[11:10]	 :塊C的錯誤程式碼
 *											[9:8] 	 :塊D的錯誤程式碼
 *										  [7:0]	   :保留位
 *													錯誤程式碼  
 *															0 : 沒有錯誤;塊資料與匹配的資料和綜合徵
 *															1 : 誤差小;可能檢測到1位接收錯誤;資料被修正
 *															2 : 誤差大,檢測到理論可修正誤差,資料被修正
 *															3 : 不可糾正的錯誤;無法糾正資料
 * @note			: None
 */
void FM_Get_RDS_DemodulatorMode( TEF6686_GetRDSmode_t mode, u16* receive);


/**
 * @name      : FM_Get_RDS_DecoderMode
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetRDSmode_t
 *																	Get_RDS_Status		於讀取資料庫例項的狀態
 *																	Get_RDS_Data      不僅返回資料庫例項的狀態,還返回儲存在資料庫中的資料。
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、FM RDS接收狀態
 *											[15]  :資料可用標誌
 *															   0   沒有可用的資料(不完整的組或沒有第一個PI)
 *															   1	 RDS組資料或第一個PI資料可用
 *											[14]  :資料丟失標誌
 *															   0   無資料丟失
 *															   1	 以前的資料沒有被讀取,而是用較新的資料代替
 *											[13]	:資料可用型別
 *																 0   組資料;連續操作
 *																 1   第一個PI資料;資料與PI程式碼後的解碼器同步
 *											[12]	:組型別
 *																 0   型別A;ABCD組(A塊中的PI程式碼)
 *																 1   型別B;A-B-C‘-D組(具有塊A和C’中的PI程式碼)
 *										[11:10]	:保留位
 *											[9] 	:同步狀態
 *																 0   RDS解碼器未同步;未找到RDS資料
 *																 1   RDS解碼器已同步;RDS資料接收已啟用
 *											[8:0] :	保留位
 *								2、塊A的資料
 *								3、塊B的資料
 *								3、塊C的資料
 *								3、塊D的資料
 *								6、錯誤程式碼(由解碼器確定)
 *											[15:14]  :塊A的錯誤程式碼
 *											[13:12]  :塊B的錯誤程式碼
 *											[11:10]	 :塊C的錯誤程式碼
 *											[9:8] 	 :塊D的錯誤程式碼
 *										  [7:0]	   :保留位
 *													錯誤程式碼  
 *															0 : 沒有錯誤;塊資料與匹配的資料和綜合徵
 *															1 : 誤差小;可能檢測到1位接收錯誤;資料被修正
 *															2 : 誤差大,檢測到理論可修正誤差,資料被修正
 *															3 : 不可糾正的錯誤;無法糾正資料
 * @note			: 該函式用於Set_RDS()函式中, mode = 1的情況
 */
void FM_Get_RDS_DecoderMode( TEF6686_GetRDSmode_t mode, u16* receive);


/**
 * @name      : FM_Get_RDS_DemodulatorMode 
 * @brief     : 讀取調諧器接收質量資訊的狀態
 * @params
 *                @mode  	     : 調整的模式 			詳細可見TEF6686_GetRDSmode_t
 *																	Get_Status		於讀取資料庫例項的狀態
 *																	Get_Data      不僅返回資料庫例項的狀態,還返回儲存在資料庫中的資料。
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、FM RDS接收狀態
 *											[15]  :資料可用標誌
 *															   0   無可用資料
 *															   1	 32位的原始解調器資料可用
 *											[14]  :資料丟失標誌
 *															   0   無資料丟失
 *															   1	 沒有讀取以前的資料,而是使用較新的資料
 *										[13:0]	:保留位
 *								2、32位原始解調器資料的MSB部分([31:16])
 *								3、LSB是32位原始解調器資料的一部分([15:0])。
 * @note			: 該函式用於Set_RDS()函式中, mode = 2的情況
 */
void FM_Get_RDS_DemodulatorMode( TEF6686_GetRDSmode_t mode, u16* receive);


/**
 * @name      : Get_Signal_Status 
 * @brief     : 讀取有關所接收到的無線電訊號的資訊。
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、無線電訊號資訊
 *											[15]  :資料可用標誌
 *															   0   單訊號
 *															   1	 調頻立體聲訊號(檢測到立體聲導頻)
 * @note			: 該函式用於Set_RDS()函式中, mode = 2的情況
 */
void Get_Signal_Status( TEF6686Module_t module, u16* receive);

/**
 * @name      : Get_Operation_Status 
 * @brief     : 此讀取命令在“啟動狀態”和“空閒狀態”期間也可用。請讀取有關操作狀態的資訊
 * @params
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、裝置執行狀態
 *										0	 啟動狀態;沒有命令支援
 *										1	 靜止狀態
 *										2	 活動狀態;無線電備用
 *										3	 FM
 *										4	 AM
 * @note			:值0表示啟動狀態(通電、電源下降或參考頻率中斷後的重置狀態)。實際上,所有的get命令都將在啟動狀態下返回0個值,並且沒有命令支援可用。
 */
void Get_Operation_Status( u16* receive);

/**
 * @name      : Get_GPIO_Status 
 * @brief     : 讀取有關指定輸入引腳的輸入狀態的資訊(見Set_GPIO())。
 * @params
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、輸入狀態(分配給輸入使用時)
 *										[0] : GPIO_0的輸入狀態
 *														0		低電平
 *														1		高電平
 * @note			:值0表示啟動狀態(通電、電源下降或參考頻率中斷後的重置狀態)。實際上,所有的get命令都將在啟動狀態下返回0個值,並且沒有命令支援可用。
 */
void Get_GPIO_Status( u16* receive);


/**
 * @name      : Get_Identification 
 * @brief     : 此讀取命令在“空閒狀態”期間也可用。請閱讀有關裝置型別和變體的資訊。())。
 * @params
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @data			: 讀取的資料
 *								1、裝置型別和變體
 *										[15:8] : 型別識別符號
 *														9		TEF668X“Lithio”系列
 *										[7:0] :  變體識別符號
 *													 14		TEF6686 'Lithio'
 *														1		TEF6687 'Lithio FMSI'
 *														9		TEF6688 ‘Lithio DR’
 *														3		TEF6689 ‘Lithio FMSI DR’
 *								2、硬體版本
 *										[15:8] : 主要數字
 *														1		
 *										[7:0] :  小數
 *													  0		
 *								3、韌體版本
 *										[15:8] : 主要數字
 *														2		
 *										[7:0] :  小數
 *													  0		
 * @note			:型別編號版本名稱“/V102”來源於主要hw_version和主要sw_version編號。
 */
void Get_Identification( u16* receive);


/**
 * @name      : Get_LastWrite
 * @brief     : 讀取上次寫入傳輸的資料內容
 * @params
 *                @module  	   : 調製方式(FM/AM)
 *                @mode  	     : 調整的模式
 *                @receive     : 快取區地址                          
 *
 * @version   : 1.0
 * @note			: 如第一次寫入的引數比第二的引數要長,則第二次讀出來的引數仍包含第一次寫入的引數
 */
void Get_LastWrite(u16* receive);

#endif


相關文章