国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32F103學(xué)習(xí)筆記(2)——收音機(jī)模塊TEA5767使用

發(fā)布者:快樂時(shí)刻最新更新時(shí)間:2025-02-21 來源: jianshu關(guān)鍵字:STM32F103  收音機(jī)模塊  TEA5767 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

一、簡介

TEA5767是由菲利普公司推出的一款低功耗立體聲收音機(jī)接收器芯片。頻率范圍從76-108MHz自動(dòng)數(shù)字調(diào)諧。高靈敏度,高穩(wěn)定性,低噪音,收音模塊。一片低功耗電調(diào)諧調(diào)頻立體聲收音機(jī)電路,其內(nèi)部集成了中頻選頻和解調(diào)網(wǎng)絡(luò),可以做到完全免調(diào)。

  • 電源 5V

  • I2C 總線通訊

  • 可以使用軟件進(jìn)行靜音和消除噪音

二、硬件連接

功能口引腳
SCLPB.6
SDAPB.5

三、添加I2C驅(qū)動(dòng)

查看 STM32F103學(xué)習(xí)筆記(1)——FreeRTOS下模擬I2C


四、移植文件

注意:以下出現(xiàn)缺失common.h文件錯(cuò)誤,去除即可。uint8改為uint8_t或unsigned char或自己宏定義
鏈接:https://pan.baidu.com/s/1KlliOYSGgdlYcb5J52Twrw  提取碼:xp0z
將 board_i2c.c、board_i2c.h、board_tea5767.c 、 board_tea5767.h 四個(gè)文件加入到工程


4.1 board_tea5767.c

/*********************************************************************

 * INCLUDES

 */

#include 'stdlib.h'

#include 'stm32f10x.h'


#include 'board_i2c.h' 

#include 'board_tea5767.h' 

#include 'common.h'


/*********************************************************************

 * GLOBAL VARIABLES

 */

unsigned long g_frequency = TEA5767_MIN_KHZ;


/*********************************************************************

 * LOCAL VARIABLES

 */                                     

static uint8 s_radioWriteData[5] = {0x31,0xA0,0x20,0x11,0x00};          // 要寫入TEA5767的數(shù)據(jù),默認(rèn)存臺(tái)的PLL,104.3MHz

static uint8 s_radioReadData[5] = {0};                                  // TEA5767讀出的狀態(tài)

static uint32 s_pll = 0;


/*********************************************************************

 * PUBLIC FUNCTIONS

 */

/**

 @brief 向TEA5767寫入5個(gè)字節(jié)數(shù)據(jù)

 @param 無

 @return 無

*/

void TEA5767_Write(void)

{       

    uint8 i;

    

    IIC_Start();                                                        // 發(fā)送起始信號(hào)

    IIC_SendByte(TEA5767_ADDR_W);                                       // TEA5767寫地址

    IIC_WaitAck();                                                      // 等待應(yīng)答

    for(i = 0; i < 5; i++)

    {

        IIC_SendByte(s_radioWriteData[i]);                              // 連續(xù)寫入5個(gè)字節(jié)數(shù)據(jù)

        IIC_Ack();                                                      // 發(fā)送應(yīng)答

    }

    IIC_Stop();                                                         // 發(fā)送停止信號(hào)   

}


/**

 @brief 讀TEA5767狀態(tài)

 @param 無

 @return 無

*/

void TEA5767_Read(void)

{

    uint8 i;

    uint8 tempLow;

    uint8 tempHigh;

    s_pll = 0;

    

    IIC_Start();

    IIC_SendByte(TEA5767_ADDR_R);                                       // TEA5767讀地址

    IIC_WaitAck();

    for(i = 0; i < 5; i++)                                              // 讀取5個(gè)字節(jié)數(shù)據(jù)

    {

        s_radioReadData[i] = IIC_ReadByte();                            // 讀取數(shù)據(jù)后,發(fā)送應(yīng)答

    }

    IIC_Stop();

    tempLow = s_radioReadData[1];                                       // 得到s_pll低8位 

    tempHigh = s_radioReadData[0];                                      // 得到s_pll高6位

    tempHigh &= 0x3f;

    s_pll = tempHigh * 256 + tempLow;                                   // PLL值 

}


/**

 @brief 由頻率計(jì)算PLL

 @param 無

 @return 無

*/

void TEA5767_GetPLL(void)

{

    uint8 hlsi;

    hlsi = s_radioWriteData[2] & 0x10;                                  // HLSI位

    if(hlsi)

    {

        s_pll = (uint32)((float)((g_frequency+225)*4)/(float)32.768);   // 頻率單位:k

    }

    else

    {

        s_pll = (uint32)((float)((g_frequency-225)*4)/(float)32.768);   // 頻率單位:k

    }

}


/**

 @brief 設(shè)置頻率

 @param frequency -[in] 頻率,單位:KHz

 @return 無

*/

void TEA5767_SetFrequency(uint32 frequency)

{

    g_frequency = frequency;

    TEA5767_GetPLL();

    s_radioWriteData[0] = s_pll / 256;

    s_radioWriteData[1] = s_pll % 256;

    s_radioWriteData[2] = 0x20;

    s_radioWriteData[3] = 0x11;

    s_radioWriteData[4] = 0x00;

    

    TEA5767_Write();

}


/**

 @brief 由PLL計(jì)算頻率

 @param 無

 @return 無

*/

uint32 TEA5767_GetFrequency(void)

{

    uint8 hlsi;

    uint32 pll = 0;

    pll = s_pll;

    hlsi = s_radioWriteData[2] & 0x10;

    if(hlsi)

    {

        g_frequency = (unsigned long)((float)(pll)*(float)8.192-225);   // 頻率單位:KHz

    }

    else

    {

        g_frequency = (unsigned long)((float)(pll)*(float)8.192+225);   // 頻率單位:KHz

    }

    

    return g_frequency;

}


/**

 @brief 手動(dòng)搜索電臺(tái),不用考慮TEA5767用于搜臺(tái)的相關(guān)位:SM,SUD

 @param mode -[in] 搜索方式,mode=1,向上搜索,頻率值+0.1MHz;mode=0,向下搜索,頻率值-0.1MHz

 @return 無

*/

void TEA5767_Search(uint8 mode)

{

    TEA5767_Read();                                                     // 讀取當(dāng)前頻率值 

    if(mode)                                                            // 向上搜索

    {

        g_frequency += 100;

        if(g_frequency > TEA5767_MAX_KHZ)                               // 頻率達(dá)到最大值

        {

            g_frequency = TEA5767_MIN_KHZ;

        }

    }

    else

    {

        g_frequency -= 100;

        if(g_frequency < TEA5767_MIN_KHZ)

        {

            g_frequency = TEA5767_MAX_KHZ;

        }

    }          

    TEA5767_GetPLL();                                                   // 計(jì)算PLL值

    s_radioWriteData[0] = s_pll / 256;

    s_radioWriteData[1] = s_pll % 256;

    s_radioWriteData[2] = 0x20;

    s_radioWriteData[3] = 0x11;

    s_radioWriteData[4] = 0x00;

    TEA5767_Write();

    TEA5767_Read();

    if(s_radioReadData[0] & 0x80)                                       // 搜臺(tái)成功,RF=1,可保存其頻率值待用

    {

        printf(' frequency=%dn', (int)g_frequency);

    }    

}


/**

 @brief 自動(dòng)搜索電臺(tái)

 @param mode -[in] 搜索方式,mode=1,頻率增加搜臺(tái),頻率值+0.1MHz;mode=0,頻率減小搜臺(tái)

 @return 無

*/

void TEA5767_AutoSearch(uint8 mode)

{

    uint8 radioRf = 0;                                                  // 1=發(fā)現(xiàn)一個(gè)電臺(tái),0=未找到電臺(tái)

    uint8 radioIf = 0;                                                  // 中頻計(jì)數(shù)結(jié)果

    uint8 radioLev = 0;                                                 // 信號(hào)電平ADC輸出

    

    // 直到搜臺(tái)成功,RF=1,0x31    while((radioRf==0) || ((0x31>=radioIf)||(radioIf>=0x3E)))

    {

        if(mode)                                                        // 頻率增加搜臺(tái)

        {

            s_radioWriteData[2] = 0xC0;                                 // SUD=1,SSLadc=7,HLSI=0

            g_frequency += 100;

            if(g_frequency > TEA5767_MAX_KHZ)                           // 頻率達(dá)到最大值

[1] [2] [3]
關(guān)鍵字:STM32F103  收音機(jī)模塊  TEA5767 引用地址:STM32F103學(xué)習(xí)筆記(2)——收音機(jī)模塊TEA5767使用

上一篇:STM32F103學(xué)習(xí)筆記(3)——讀寫內(nèi)部Flash
下一篇:STM32F103學(xué)習(xí)筆記(1)——FreeRTOS下模擬I2C

推薦閱讀最新更新時(shí)間:2025-06-17 12:39

AVR控制TEA5767 C語言程序
#include iom32v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long void delay() { uint i=0; for (i=0;i 2000;i++) ; } unsigned char radio_write_data ={0x69,0x28,0xa0,0x13,0x00}; //要寫入TEA5767的數(shù)據(jù) void inputbyte(uchar CD) //寫入一字節(jié)數(shù)據(jù) { uchar i,mid=0; for (
[單片機(jī)]
基于STM32F103VE建立工程
本篇參考 《傳感網(wǎng)應(yīng)用開發(fā)職業(yè)技能等級(jí)認(rèn)證》培訓(xùn)教材 1.建立工程存放的文件夾 在 D 盤根目錄新建文件夾“STM32_WorkSpace”用于保存所有的任務(wù)工程,然后在該文件夾下新建文件夾“task1_ProjectFirst”用于保存本任務(wù)工程;不能有中文路徑; 2.新建 STM32CubeMX 工程 打開 STM32CubeMX 工具,點(diǎn)擊“ACCESS TO MCU SELECTOR(選擇 MCU)”按鈕,如圖圖1所示; 圖1.png 進(jìn)入“MCU 選擇”窗口,如圖 2 所示。在圖 2 中的標(biāo)號(hào)①處,輸入 MCU 型號(hào)的關(guān)鍵字,如:STM32F103VE。點(diǎn)擊標(biāo)號(hào)②處的MCU 型號(hào),然后點(diǎn)擊標(biāo)號(hào)③處的“Start
[單片機(jī)]
STM32F103ZE開發(fā)板 LWIP網(wǎng)絡(luò)協(xié)議棧應(yīng)用之連接騰訊云
1.LWIP介紹 lwip是瑞典計(jì)算機(jī)科學(xué)院網(wǎng)絡(luò)嵌入式系統(tǒng)小組(SICS)的Adam Dunkels(亞當(dāng)·鄧克爾) 開發(fā)的一個(gè)小型開源的TCP/IP協(xié)議棧。實(shí)現(xiàn)的重點(diǎn)是在保持 TCP 協(xié)議主要功能的基礎(chǔ)上減少對(duì)RAM的占用。 LwIP是Light Weight(輕型)IP 協(xié)議,有無操作系統(tǒng)的支持都可以運(yùn)行。LwIP 實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議 主要功能的基礎(chǔ)上減少對(duì)RAM的占用,它只需十幾KB的RAM和 40K左右的ROM就可以運(yùn)行,這使LwIP協(xié)議棧適合在低端的嵌入式系統(tǒng)中使用。 2.連接騰訊物聯(lián)網(wǎng)平臺(tái) 硬件平臺(tái):STM32F103ZE開發(fā)板、DM9000有線網(wǎng)卡、LCD屏 開發(fā)環(huán)境:KEIL5 網(wǎng)卡工作模式:TCP客
[單片機(jī)]
<font color='red'>STM32F103</font>ZE開發(fā)板 LWIP網(wǎng)絡(luò)協(xié)議棧應(yīng)用之連接騰訊云
stm32f103——串口UART
在學(xué)習(xí)UART之前,我們先來了解一下單片機(jī)與外圍設(shè)備之間的通信: 單片機(jī)與外圍設(shè)備之間的信息交換和傳輸我們稱為通信。過去通信方式有兩種:并行通信和串行通信。 并行通信: 定義:并行通信是指利用多條傳輸線將一個(gè)數(shù)據(jù)的各位同時(shí)傳送。 傳輸方式:傳輸一個(gè)字節(jié)(8個(gè)位)的數(shù)據(jù)時(shí),并口是將8個(gè)位一字排開,分別在8條連接線上同時(shí)傳輸。 特點(diǎn):傳輸速度塊,適用于短距離通信。 缺點(diǎn):雖然,并行通信傳輸速度快,但是由于,線與線之間存在電磁干擾,會(huì)導(dǎo)致數(shù)據(jù)錯(cuò)誤。而且由于線比較多,PCB布線比較麻煩,所以并行通信不常用,而串行通信用得比較廣泛。 串行通信: 定義:串行通信是指利用一條傳輸線將數(shù)據(jù)一位位地順序傳送。 傳輸方式:傳輸一個(gè)字節(jié)(8
[單片機(jī)]
<font color='red'>stm32f103</font>——串口UART
stm32f103c8t6利用藍(lán)牙控制180度舵機(jī)
關(guān)于藍(lán)牙模塊部分,如果不了解藍(lán)牙模塊的可以看我之前發(fā)的東西。 一般來說,舵機(jī)接收的PWM信號(hào)頻率為50HZ,即周期為20ms。當(dāng)高電平的脈寬在0.5ms-2.5ms之間時(shí)舵機(jī)就可以對(duì)應(yīng)旋轉(zhuǎn)到不同的角度。以180度角度舵機(jī)為例,那么對(duì)應(yīng)的控制關(guān)系是這樣的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2.0ms-----------135度; 2.5ms-----------180度; 關(guān)于舵機(jī)的話,本人用的是6~8.4V的的60KG大舵機(jī),這里需要注意的是, 控制板上面只提供5V電壓,滿足不了這種舵機(jī)的電壓,所以我利用12V的鋰電池,讓鋰
[單片機(jī)]
<font color='red'>stm32f103</font>c8t6利用藍(lán)牙控制180度舵機(jī)
STM32F103ZET6 — USART
串口通信介紹 UART串口通信,使用三線即可進(jìn)行最基本的數(shù)據(jù)收發(fā)傳送: 在數(shù)據(jù)線上的 Timing 遵循標(biāo)準(zhǔn)的串口通信協(xié)議,由起始位,數(shù)據(jù),校驗(yàn)位,停止位組成,數(shù)據(jù)傳輸 LSB - MSB: 板載 USART 資源介紹 當(dāng)然,由于電平不一樣,使用 RS232 標(biāo)準(zhǔn)進(jìn)行串口數(shù)據(jù)傳送,需要增加 MAX3232 進(jìn)行電平轉(zhuǎn)換,再接PC: 單板上的 T1IN 和 R1OUT 接到了 STM32 芯片的 USART1 的 TXD/RXD 管腳,故單板上使用了 USART1 來作為 RS232 和 PC 機(jī)進(jìn)行數(shù)據(jù)傳送: USART 初始化配置 既然確定了使用了芯片上的 USART1,要正確使用該功能,需要進(jìn)行如下配置:
[單片機(jī)]
<font color='red'>STM32F103</font>ZET6 — USART
基于STM32f103zet6的內(nèi)存管理的學(xué)習(xí)
今天在對(duì)原子的代碼稍作修改是可以進(jìn)行內(nèi)存分配和回收的,所以開始深入分析一下這個(gè)代碼的實(shí)現(xiàn)過程。一、所謂的內(nèi)存管理內(nèi)存管理,是指軟件運(yùn)行時(shí)對(duì)計(jì)算機(jī)內(nèi)存資源的分配和使用的技術(shù)。其最主要的目的是如何高效,快速的分配,并且在適當(dāng)?shù)臅r(shí)候釋放和回收內(nèi)存資源。 二、代碼分析 1、首先了解一下一個(gè)數(shù)據(jù)結(jié)構(gòu),這是一個(gè)聲明 /*************************** 內(nèi)存管理控制 **********************************************/ typedef struct {void (*init)(u8);//初始化u8 (*perused)(u8); //內(nèi)存使用率u8 *membase
[單片機(jī)]
stm32f103 usb驅(qū)動(dòng) 電腦無法識(shí)別的解決辦法
1.usb所使用的IO口在設(shè)置為usb后自動(dòng)分配功能,不需要再設(shè)置,一定要設(shè)置的話會(huì)被忽略,所以也沒什么影響。 2.usb時(shí)鐘配置只有兩種可用:主頻72M,usb時(shí)鐘1.5分頻;主頻48M,usb時(shí)鐘1分頻。 3.PA12(USBP / D+)一定要接1.5k的上拉電阻,用于電腦識(shí)別設(shè)備,官方庫使用了lO口控制了上拉,這樣方便軟件控制斷開與重新連接,直接上拉到電源也是可以的,不過需要斷開和重新連接時(shí)只能手動(dòng)插拔。 4.stm32f103的can和usb不能同時(shí)使用,can的時(shí)鐘打開后,電腦就會(huì)識(shí)別不出usb設(shè)備,所以兩個(gè)功能都要用到的話,還是換成f105或f107,這兩種型號(hào)是可以同時(shí)使用的。
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved