日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]RDA5820是北京銳迪科推出的一款集成度非常高的立體聲FM收發(fā)芯片。該芯片具有以下特點(diǎn):? FM發(fā)射和接收一體?支持65Mhz~115Mhz的全球FM接收頻段,收發(fā)天線共用。?支持IIC/SPI接口?支持32.768K晶振?數(shù)字音量及自動(dòng)AGC控

RDA5820是北京銳迪科推出的一款集成度非常高的立體聲FM收發(fā)芯片。該芯片具有以下

特點(diǎn):

? FM發(fā)射和接收一體

?支持65Mhz~115Mhz的全球FM接收頻段,收發(fā)天線共用。

?支持IIC/SPI接口

?支持32.768K晶振

?數(shù)字音量及自動(dòng)AGC控制

?支持立體聲/單聲道切換,帶軟件靜音功能

?支持I2S接口(輸入/輸出)

?內(nèi)置LDO,使用電壓范圍寬(2.7~5.5V)

?高功率32歐負(fù)載音頻輸出、可直接驅(qū)動(dòng)耳機(jī)

?集成度高、功耗低、尺寸小(4mm*4mm QFN封裝)、應(yīng)用簡單

RDA5820引腳圖如圖所示


RDA5820支持2種通信模式,SPI和IIC,MODE腳接GND,RDA5820即進(jìn)入IIC模式,此時(shí)SCLK充當(dāng)IIC的SCL,SDIO充當(dāng)IIC的SDA。RDA5820的IIC地址為0X11(不包含最低位),對(duì)應(yīng)讀為0X23,寫為0X20

實(shí)際電路連接如下

RDA5820擁有半自動(dòng)搜臺(tái),全自動(dòng)搜臺(tái)兩種模式

具體設(shè)置參考代碼


#include "rda5820.h"






//初始化
//0,初始化成功;
//其他,初始化失敗.
u8 Rda5820Init(void)
{
u16 id;
IIcInit(); //初始化IIC口
id=Rda5820ReadReg(RDA5820_R00); //讀取ID =0X5805
if(id==0X5805) //讀取ID正確
{
Rda5820WriteReg(RDA5820_R02,0x0002); //芯片軟復(fù)位
DelayMs(400);//等待復(fù)位結(jié)束
Rda5820WriteReg(RDA5820_R02,0x0001);//芯片上電
DelayMs(600);
Rda5820WriteReg(RDA5820_R02,0xD201); //芯片上電,不復(fù)位 正常天線 32.768時(shí)鐘 循環(huán)搜索 不開始搜索 想上搜索 低音增強(qiáng) 立體聲 非靜音 非高阻抗
Rda5820WriteReg(RDA5820_R03,0x0000);//100k apace 87-108baud 不開啟調(diào)諧
Rda5820WriteReg(RDA5820_R04,0x0000);//關(guān)閉中斷 0.75us去加重 不使能iis io口全部浮空
Rda5820WriteReg(RDA5820_R05,0X8548);//搜索強(qiáng)度8,LNAN,1.8mA,VOL最大 無輸入低噪聲
// Rda5820WriteReg(RDA5820_R0A,0X7800);//0A不用設(shè)置
// Rda5820WriteReg(RDA5820_R0B,0X7800);//0b不用設(shè)置
Rda5820WriteReg(RDA5820_R40,0X0000);//半自動(dòng)搜臺(tái) RX工作模式
Rda5820WriteReg(RDA5820_R41,0X0000);//RDS應(yīng)答為0 不復(fù)位fifo fifo深度為0
// Rda5820WriteReg(RDA5820_R42,0X0000);//42不用設(shè)置
Rda5820WriteReg(RDA5820_R4A,0X0010);//fifo滿中斷
Rda5820FreqSet(8700);//設(shè)置初始化頻率81.00M
}else return 1;//初始化失敗
return 0;
}






//寫RDA5820寄存器
void Rda5820WriteReg(u8 addr,u16 val)
{
IIcStart();
IIcSendByte(RDA5820_WRITE); //發(fā)送寫命令
IIcWaitAck();
IIcSendByte(addr); //發(fā)送地址
IIcWaitAck();
IIcSendByte(val>>8); //發(fā)送高字節(jié)
IIcWaitAck();
IIcSendByte(val&0XFF); //發(fā)送低字節(jié)
IIcWaitAck();
IIcStop(); //產(chǎn)生一個(gè)停止條件
}






//讀RDA5820寄存器
u16 Rda5820ReadReg(u8 addr)
{
u16 res;
IIcStart();
IIcSendByte(RDA5820_WRITE); //發(fā)送寫命令
IIcWaitAck();
IIcSendByte(addr); //發(fā)送地址
IIcWaitAck();
IIcStart();
IIcSendByte(RDA5820_READ); //發(fā)送讀命令
IIcWaitAck();
res=IIcReadByte(1); //讀高字節(jié),發(fā)送ACK
res<<=8;
res"=IIcReadByte(0); //讀低字節(jié),發(fā)送NACK
IIcStop(); //產(chǎn)生一個(gè)停止條件
return res; //返回讀到的數(shù)據(jù)
}






//設(shè)置RDA5820為RX模式
void Rda5820RxMode(void)
{
u16 temp;
temp=Rda5820ReadReg(0X40); //讀取0X40的內(nèi)容
temp&=0xfff0; //RX 模式
Rda5820WriteReg(0X40,temp) ; //FM RX模式
}




//設(shè)置RDA5820為TX模式
void Rda5820TxMode(void)
{
u16 temp;
temp=Rda5820ReadReg(0X40); //讀取0X40的內(nèi)容
temp&=0xfff0;
temp|=0x0001; //TX 模式
Rda5820WriteReg(0X40,temp) ; //FM TM 模式
}




//得到信號(hào)強(qiáng)度
//返回值范圍:0~127
u8 Rda5820RssiGet(void)
{
u16 temp;
temp=Rda5820ReadReg(0X0B); //讀取0X0B的內(nèi)容
return temp>>9; //返回信號(hào)強(qiáng)度
}




//設(shè)置音量ok
//vol:0~15;
void Rda5820VolSet(u8 vol)
{
u16 temp;
temp=Rda5820ReadReg(0X05); //讀取0X05的內(nèi)容
temp&=0XFFF0;
temp|=vol&0X0F;
Rda5820WriteReg(0X05,temp) ; //設(shè)置音量
}




//靜音設(shè)置
//mute:0,不靜音;1,靜音
void Rda5820MuteSet(u8 mute)
{
u16 temp;
temp=Rda5820ReadReg(0X02); //讀取0X02的內(nèi)容
if(mute)temp|=1<<14;
else temp&=~(1<<14);
Rda5820WriteReg(0X02,temp) ; //設(shè)置MUTE
}




//設(shè)置靈敏度
//rssi:0~127;
void Rda5820RssiSet(u8 rssi)
{
u16 temp;
temp=Rda5820ReadReg(0X05); //讀取0X05的內(nèi)容
temp&=0X80FF;
temp|=(u16)rssi<<8;
Rda5820WriteReg(0X05,temp) ; //設(shè)置RSSI
}




//設(shè)置TX發(fā)送功率
//gain:0~63
void Rda5820TxPagSet(u8 gain)
{
u16 temp;
temp=Rda5820ReadReg(0X42); //讀取0X42的內(nèi)容
temp&=0XFFC0;
temp|=gain; //GAIN
Rda5820WriteReg(0X42,temp) ; //設(shè)置PA的功率
}




//設(shè)置TX 輸入信號(hào)增益
//gain:0~7
void Rda5820TxPgaSet(u8 gain)
{
u16 temp;
temp=Rda5820ReadReg(0X42); //讀取0X42的內(nèi)容
temp&=0XF8FF;
temp|=gain<<8; //GAIN
Rda5820WriteReg(0X42,temp) ; //設(shè)置PGA
}




//設(shè)置RDA5820的工作頻段
//band:0,87~108Mhz;1,76~91Mhz;2,76~108Mhz;3,用戶自定義(53H~54H)
void Rda5820BandSet(u8 band)
{
u16 temp;
temp=Rda5820ReadReg(0X03); //讀取0X03的內(nèi)容
temp&=0XFFF3;
temp|=band<<2;
Rda5820WriteReg(0X03,temp) ; //設(shè)置BAND
}




//設(shè)置RDA5820的步進(jìn)頻率
//band:0,100Khz;1,200Khz;3,50Khz;3,保留
void Rda5820SpaceSet(u8 spc)
{
u16 temp;
temp=Rda5820ReadReg(0X03); //讀取0X03的內(nèi)容
temp&=0XFFFC;
temp|=spc;
Rda5820WriteReg(0X03,temp) ; //設(shè)置BAND
}




//設(shè)置RDA5820的頻率
//freq:頻率值(單位為10Khz),比如10805,表示108.05Mhz
void Rda5820FreqSet(u16 freq)
{
u16 temp;
u8 spc=0,band=0;
u16 fbtm,chan;
temp=Rda5820ReadReg(0X03); //讀取0X03的內(nèi)容
temp&=0X001F;
band=(temp>>2)&0x03; //得到頻帶
spc=temp&0x03;//得到分辨率
if(spc==0)spc=10;
else if(spc==1)spc=20;
else spc=5;
if(band==0)fbtm=8700;
else if(band==1||band==2)fbtm=7600;
else
{
fbtm=Rda5820ReadReg(0X53);//得到bottom頻率
fbtm*=10;
}
if(freq chan=(freq-fbtm)/spc; //得到CHAN應(yīng)該寫入的值
chan&=0X3FF; //取低10位
temp|=chan<<6;
temp|=1<<4; //TONE ENABLE
Rda5820WriteReg(0X03,temp) ; //設(shè)置頻率
DelayMs(20); //等待20ms
while((Rda5820ReadReg(0X0B)&(1<<7))==0);//等待FM_READY

}
//得到當(dāng)前頻率
//返回值:頻率值(單位10Khz)
u16 Rda5820FreqGet(void)
{
u16 temp;
u8 spc=0,band=0;
u16 fbtm,chan;
temp=Rda5820ReadReg(0X03); //讀取0X03的內(nèi)容
chan=temp>>6;
band=(temp>>2)&0x03; //得到頻帶
spc=temp&0x03;//得到分辨率
if(spc==0)spc=10;
else if(spc==1)spc=20;
else spc=5;
if(band==0)fbtm=8700;
else if(band==1||band==2)fbtm=7600;
else
{
fbtm=Rda5820ReadReg(0X53);//得到bottom頻率
fbtm*=10;
}
temp=fbtm+chan*spc;
return temp;//返回頻率值
}


void RdaSeek(void)
{
u16 temp;
u16 count = 0;
temp=Rda5820ReadReg(RDA5820_R02); //讀取0X03的內(nèi)容
temp|=0X0100;
Rda5820WriteReg(RDA5820_R02,temp) ; //開始搜臺(tái)
do
{
DelayMs(20);
temp = Rda5820ReadReg(RDA5820_R02);//讀取搜臺(tái)結(jié)果
temp&= 0x0100;
count++;
if(count > 5000)return;

}while(temp == 0x0100);
}








#ifndef __RDA5820_H
#define __RDA5820_H
#include "ioremap.h"
#include "delay.h"
#include "iic.h"


#define RDA5820_R00 0X00 //讀出16個(gè)位的ID =0X5820
//16位的辨識(shí)ID 0x5820


#define RDA5820_R02 0X02 //DHIZ[15],DMUTE[14],MONO[13],BASS[12],SEEKUP[9],SEEK[8],SKMODE[7],CLK_MODE[6:4],ANTENNA[2],SOFTRESET[1],ENABLE[0]
//bit0 ENABLE 芯片上電1 芯片不上電0
//bit1 SOFTRESET 芯片軟復(fù)位1 不復(fù)位0
//bit2 ANTENNA 1使用內(nèi)部小天線 0使用正常的外部天線(內(nèi)部小天線速度慢很多)
//bit6-bit4 時(shí)鐘頻率選擇,根據(jù)實(shí)際頻率選擇 000 32.768khz
//bit7 SKMODE 0循環(huán)搜索 1到達(dá)上線或者下限時(shí)停止搜索
//bit8 SEEK 0搜索已經(jīng)停止 1搜索開始
//bit9 搜索方向 0向下 1向上
//bit12 BASS 0不使能低音增強(qiáng) 1使能低音增強(qiáng)
//bit13 MONO 聲道選擇 0立體聲 1非立體聲
//bit14 DMUTE 靜音選擇 0靜音 1非靜音
//bit15 DHIZ 音頻輸出高阻抗選擇 0選擇高阻抗 1不選擇高阻抗


#define RDA5820_R03 0X03 //CHAN[15:6],TUNE[4],BAND[3:2],SPACE[1:0]
//bit15-6 當(dāng)前頻道,通過baud可以計(jì)算當(dāng)前頻率
//bit4 調(diào)諧 0關(guān)閉調(diào)諧 1啟動(dòng)調(diào)諧
//bit3-2 baud 頻段選擇 四種選擇
//bit1-0 步進(jìn)選擇 00為100K




#define RDA5820_R04 0X04 //STCIEN[14](搜索完成中斷),DE[11],I2S_ENABLE[6],GPIO3~1[5:0]
//bit14 1開啟調(diào)諧調(diào)頻中斷 0關(guān)閉中斷 中斷引腳顯示在GPIO2上
//bit11 去加重時(shí)間選擇 0 75us 1 50us
//bit6 i2s使能 0不使能 1使能
//bit5-bit0 三個(gè)GPIO的功能選擇 建議都是00




#define RDA5820_R05 0X05 //INT_MODE[15],SEEKTH[14:8](設(shè)定信號(hào)強(qiáng)度),LNA_PORT_SEL[7:6],LNA_ICSEL_BIT[5:4],VOLUME[3:0];
//bit15 中斷模式 0短時(shí)間中斷 1直到清除0c才取消中斷
//bit14-8 搜索閾值 高于這個(gè)值認(rèn)為是有效臺(tái)
//bit7-6 輸入低噪聲放大模式 00無輸入
//bit5-4 輸入低噪聲電流 00 1.8ma
//bit3-0 音量 0000最低1111最高




#define RDA5820_R0A 0X0A //STC[14](搜索完成標(biāo)志),SF[13](搜索失敗標(biāo)志),ST[10](立體聲標(biāo)志),READCHAN[9:0](頻率).
//bit14 搜臺(tái)完成標(biāo)志 0未完成 1完成
//bit13 搜臺(tái)失敗標(biāo)志 0成功 1失敗
//bit10 立體聲指示 0單聲道 1立體聲
//bit9-bit0 當(dāng)前頻率指示,可以計(jì)算出當(dāng)前頻率




#define RDA5820_R0B 0X0B //RSSI[15:9](信號(hào)強(qiáng)度),FM_TRUE[8](站點(diǎn)標(biāo)志),FM_READY[7](fm就緒標(biāo)志)
//bit15-9 當(dāng)前信號(hào)強(qiáng)度
//bit8 1當(dāng)前頻率是一個(gè)有效臺(tái) 0不是
//bit7 1 已經(jīng)準(zhǔn)備好軟件搜臺(tái) 0沒準(zhǔn)備好






#define RDA5820_R40 0X40 //AUTO_SEEK[15](全/半自動(dòng)搜臺(tái)),CHAN_SCAN[14](搜空/忙臺(tái)),CHIP_FUN[3:0](工作模式)
//bit15 1全自動(dòng)搜臺(tái) 0手動(dòng)搜臺(tái)
//bit14 為FM發(fā)射搜索一個(gè)空閑頻率
//bit3-0 選擇工作模式 0000 rx模式




#define RDA5820_R41 0X41 //MEM_CLR[15](內(nèi)存清除),RPT_TIME[14:9](RDS應(yīng)答次數(shù)),MEM_DEPTH[8:0](FIFO大小,最大256)
//bit15 1復(fù)位fifo 0不復(fù)位
//bit14-9 傳輸數(shù)據(jù)是RDS應(yīng)答次數(shù)
//bit8-0 fifo的深度 0-256




#define RDA5820_R42 0X42 //TX_SIG_GAIN[10:8],TX_PA_GAIN[5:0](發(fā)射功率).
//bit10-8 發(fā)射增益 000最小 111最大
//bit5-0 發(fā)射功率




#define RDA5820_R4A 0X4A //MEM_INTMOD[4:0]
//bit4-bit0 內(nèi)存數(shù)據(jù)的中斷模式 空中斷 重復(fù)空中斷 滿中斷




#define RDA5820_R4B 0X4B //CHAN_NUM[7:0](僅在全自動(dòng)搜臺(tái)有效,代表電臺(tái)數(shù)量).
//bit7-bit0 電臺(tái)的數(shù)量




#define RDA5820_R4C 0X4C //TX_AUDIO_DEV[15:0]
//發(fā)送音頻設(shè)置




#define RDA5820_R4D 0X4D //TX_PILOT_DEV[15:0]
//發(fā)送頻點(diǎn)設(shè)置


#define RDA5820_R4E 0X4E //TX_RDS_DEV[15:0]
//發(fā)送RDS設(shè)置


#define RDA5820_R53 0X53 //CHAN_BOTTON[10:0](通道最低頻率,100kHZ為單位)
//通道最低頻率




#define RDA5820_R54 0X54 //CHAN_TOP[10:0](通道最高頻率,100kHZ為單位)
//通道最高頻率




#define RDA5820_R64 0X64 //RDS_RXMOD[4:3](FIFO模式[10]或者寄存器模式[11])
//rds接收模式 有fifo模式和寄存器模式




#define RDA5820_READ 0X23 //讀RDA5820
#define RDA5820_WRITE 0X22 //寫RDA5820










u8 Rda5820Init(void); //初始化


void Rda5820WriteReg(u8 addr,u16 val); //寫RDA5820寄存器




u16 Rda5820ReadReg(u8 addr); //讀RDA5820寄存器




void Rda5820RxMode(void); //設(shè)置RDA5820為RX模式




void Rda5820TxMode(void); //設(shè)置RDA5820為TX模式




u8 Rda5820RssiGet(void);




void Rda5820MuteSet(u8 mute);




void Rda5820RssiSet(u8 rssi);




void Rda5820VolSet(u8 vol);




void Rda5820TxPagSet(u8 gain);




void Rda5820TxPgaSet(u8 gain);




void Rda5820BandSet(u8 band);




void Rda5820SpaceSet(u8 spc);




void Rda5820FreqSet(u16 freq);




u16 Rda5820FreqGet(void);


void RdaSeek(void);


#endif

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉